यह आंशिक स्वचालन के साथ एक आंशिक उत्तर है। यह भविष्य में काम करना बंद कर सकता है यदि Google Google टेकआउट तक स्वचालित पहुंच को कम करने का विकल्प चुनता है। वर्तमान में इस उत्तर में समर्थित विशेषताएँ:
+ --------------------------------------------- + --- --------- + --------------------- +
| ऑटोमेशन फीचर | स्वचालित? | समर्थित प्लेटफार्म |
+ --------------------------------------------- + --- --------- + --------------------- +
| Google खाता लॉग-इन | नहीं | |
| मोज़िला फ़ायरफ़ॉक्स से कुकीज़ प्राप्त करें | हाँ | लिनक्स |
| Google Chrome से कुकीज़ प्राप्त करें | हाँ | लिनक्स, मैकओएस |
| अर्चना सृजन | नहीं | |
| अनुसूची संग्रह निर्माण | किंडा | टेकआउट वेबसाइट |
| जाँच करें कि क्या संग्रह बनाया गया है? नहीं | |
| संग्रह सूची प्राप्त करें | हाँ | क्रॉस-प्लेटफॉर्म |
| सभी संग्रह फाइलें डाउनलोड करें | हाँ | लिनक्स, मैकओएस |
| डाउनलोड की गई संग्रह फ़ाइलों को एन्क्रिप्ट करें | नहीं | |
| ड्रॉपबॉक्स में डाउनलोड की गई आर्काइव फाइलें अपलोड करें | नहीं | |
| AWS S3 में डाउनलोड की गई आर्काइव फाइलें अपलोड करें नहीं | |
+ --------------------------------------------- + --- --------- + --------------------- +
सबसे पहले, क्लाउड-टू-क्लाउड समाधान वास्तव में काम नहीं कर सकता क्योंकि Google टेकआउट और किसी भी ज्ञात ऑब्जेक्ट स्टोरेज प्रदाता के बीच कोई इंटरफ़ेस नहीं है। आपको अपनी स्वयं की मशीन पर बैकअप फ़ाइलों को संसाधित करने के लिए मिला है (जिसे आप अपने स्टोरेज प्रदाता को भेजने से पहले सार्वजनिक क्लाउड में होस्ट किया जा सकता है, यदि आप चाहते हैं)।
दूसरे, जैसा कि कोई Google टेकआउट एपीआई नहीं है, एक ऑटोमेशन स्क्रिप्ट को Google टेकआउट संग्रह निर्माण और डाउनलोड प्रवाह के माध्यम से चलने के लिए एक ब्राउज़र के साथ एक उपयोगकर्ता होने का दिखावा करने की आवश्यकता है।
स्वचालन सुविधाएँ
Google खाता लॉग-इन
यह अभी तक स्वचालित नहीं है। स्क्रिप्ट को एक ब्राउज़र होने का दिखावा करने और दो-कारक प्रमाणीकरण, कैप्चा और अन्य बढ़ी हुई सुरक्षा स्क्रीनिंग जैसे संभावित बाधाओं को नेविगेट करने की आवश्यकता होगी।
मोज़िला फ़ायरफ़ॉक्स से कुकीज़ प्राप्त करें
मेरे पास लिनक्स उपयोगकर्ताओं के लिए एक स्क्रिप्ट है जो मोज़िला फ़ायरफ़ॉक्स से Google टेकआउट कुकीज़ को हड़पने के लिए और उन्हें पर्यावरण चर के रूप में निर्यात करता है। यह काम करने के लिए, केवल एक फ़ायरफ़ॉक्स प्रोफ़ाइल होनी चाहिए, और लॉग इन करते समय प्रोफ़ाइल को https://takeout.google.com पर जाना चाहिए ।
एक-लाइनर के रूप में:
cookie_jar_path=$(mktemp) ; source_path=$(mktemp) ; cp ~/.mozilla/firefox/*.default/cookies.sqlite "$cookie_jar_path" ; sqlite3 "$cookie_jar_path" "SELECT name,value FROM moz_cookies WHERE baseDomain LIKE 'google.com' AND (name LIKE 'SID' OR name LIKE 'HSID' OR name LIKE 'SSID' OR (name LIKE 'OSID' AND host LIKE 'takeout.google.com')) AND originAttributes LIKE '^userContextId=1' ORDER BY creationTime ASC;" | sed -e 's/|/=/' -e 's/^/export /' | tee "$source_path" ; source "$source_path" ; rm -f "$source_path" ; rm -f "$cookie_jar_path"
एक प्रचलित बश लिपि के रूप में:
#!/bin/bash
# Extract Google Takeout cookies from Mozilla Firefox and export them as envvars
#
# The browser must have visited https://takeout.google.com as an authenticated user.
# Warn the user if they didn't run the script with `source`
[[ "${BASH_SOURCE[0]}" == "${0}" ]] && \
echo 'WARNING: You should source this script to ensure the resulting environment variables get set.'
cookie_jar_path=$(mktemp)
source_path=$(mktemp)
# In case the cookie database is locked, copy the database to a temporary file.
# Only supports one Firefox profile.
# Edit the asterisk below to select a specific profile.
cp ~/.mozilla/firefox/*.default/cookies.sqlite "$cookie_jar_path"
# Get the cookies from the database
sqlite3 "$cookie_jar_path" \
"SELECT name,value
FROM moz_cookies
WHERE baseDomain LIKE 'google.com'
AND (
name LIKE 'SID' OR
name LIKE 'HSID' OR
name LIKE 'SSID' OR
(name LIKE 'OSID' AND host LIKE 'takeout.google.com')
) AND
originAttributes LIKE '^userContextId=1'
ORDER BY creationTime ASC;" | \
# Reformat the output into Bash exports
sed -e 's/|/=/' -e 's/^/export /' | \
# Save the output into a temporary file
tee "$source_path"
# Load the cookie values into environment variables
source "$source_path"
# Clean up
rm -f "$source_path"
rm -f "$cookie_jar_path"
Google Chrome से कुकी प्राप्त करें
मेरे पास लिनक्स के लिए एक स्क्रिप्ट है और संभवतः मैकओएस उपयोगकर्ता Google क्रोम से Google टेकआउट कुकीज़ हड़पने के लिए और उन्हें पर्यावरण चर के रूप में निर्यात करते हैं। स्क्रिप्ट इस धारणा पर काम करती है कि पायथन 3 venv
उपलब्ध है और लॉग इन करते समय Default
Chrome प्रोफ़ाइल https://takeout.google.com पर गया।
एक-लाइनर के रूप में:
if [ ! -d "$venv_path" ] ; then venv_path=$(mktemp -d) ; fi ; if [ ! -f "${venv_path}/bin/activate" ] ; then python3 -m venv "$venv_path" ; fi ; source "${venv_path}/bin/activate" ; python3 -c 'import pycookiecheat, dbus' ; if [ $? -ne 0 ] ; then pip3 install git+https://github.com/n8henrie/pycookiecheat@dev dbus-python ; fi ; source_path=$(mktemp) ; python3 -c 'import pycookiecheat, json; cookies = pycookiecheat.chrome_cookies("https://takeout.google.com") ; [print("export %s=%s;" % (key, cookies[key])) for key in ["SID", "HSID", "SSID", "OSID"]]' | tee "$source_path" ; source "$source_path" ; rm -f "$source_path" ; deactivate
एक प्रचलित बश लिपि के रूप में:
#!/bin/bash
# Extract Google Takeout cookies from Google Chrome and export them as envvars
#
# The browser must have visited https://takeout.google.com as an authenticated user.
# Warn the user if they didn't run the script with `source`
[[ "${BASH_SOURCE[0]}" == "${0}" ]] && \
echo 'WARNING: You should source this script to ensure the resulting environment variables get set.'
# Create a path for the Chrome cookie extraction library
if [ ! -d "$venv_path" ]
then
venv_path=$(mktemp -d)
fi
# Create a Python 3 venv, if it doesn't already exist
if [ ! -f "${venv_path}/bin/activate" ]
then
python3 -m venv "$venv_path"
fi
# Enter the Python virtual environment
source "${venv_path}/bin/activate"
# Install dependencies, if they are not already installed
python3 -c 'import pycookiecheat, dbus'
if [ $? -ne 0 ]
then
pip3 install git+https://github.com/n8henrie/pycookiecheat@dev dbus-python
fi
# Get the cookies from the database
source_path=$(mktemp)
read -r -d '' code << EOL
import pycookiecheat, json
cookies = pycookiecheat.chrome_cookies("https://takeout.google.com")
for key in ["SID", "HSID", "SSID", "OSID"]:
print("export %s=%s" % (key, cookies[key]))
EOL
python3 -c "$code" | tee "$source_path"
# Clean up
source "$source_path"
rm -f "$source_path"
deactivate
[[ "${BASH_SOURCE[0]}" == "${0}" ]] && rm -rf "$venv_path"
डाउनलोड की गई फ़ाइलें साफ़ करें:
rm -rf "$venv_path"
संग्रह निर्माण का अनुरोध करें
यह अभी तक स्वचालित नहीं है। स्क्रिप्ट को Google टेकआउट फ़ॉर्म भरना होगा और फिर उसे सबमिट करना होगा।
पुरालेख रचना की अनुसूची
अभी तक ऐसा करने के लिए पूरी तरह से स्वचालित तरीका नहीं है, लेकिन मई 2019 में, Google टेकआउट ने एक ऐसी सुविधा शुरू की जो प्रत्येक 2 महीने में 1 वर्ष (6 बैकअप कुल) के लिए 1 बैकअप का निर्माण करती है। यह आर्काइव अनुरोध फ़ॉर्म भरते समय ब्राउज़र में https://takeout.google.com पर किया जाना है :
संग्रह बनाया जाता है, तो जाँच करें
यह अभी तक स्वचालित नहीं है। यदि कोई संग्रह बनाया गया है, तो Google कभी-कभी उपयोगकर्ता के Gmail इनबॉक्स में एक ईमेल भेजता है, लेकिन मेरे परीक्षण में, यह हमेशा अज्ञात कारणों से नहीं होता है।
यह जांचने का एकमात्र तरीका है कि क्या संग्रह बनाया गया है, Google टेकआउट को समय-समय पर मतदान करके।
संग्रह सूची प्राप्त करें
मेरे पास ऐसा करने के लिए एक कमांड है, यह मानते हुए कि कुकीज़ "गेट कुकीज़" खंड में पर्यावरण चर के रूप में सेट की गई हैं:
curl -sL -H "Cookie: SID=${SID}; HSID=${HSID}; SSID=${SSID}; OSID=${OSID};" \
'https://takeout.google.com/settings/takeout/downloads' | \
grep -Po '(?<=")https://storage\.cloud\.google\.com/[^"]+(?=")' | \
awk '!x[$0]++'
आउटपुट URL की एक पंक्ति-सीमांकित सूची है जो सभी उपलब्ध अभिलेखों के डाउनलोड की ओर ले जाती है।
इसे रेगेक्स के साथ HTML से पार्स किया गया है ।
सभी संग्रह फ़ाइलें डाउनलोड करें
यहाँ संग्रह फ़ाइलों का URL प्राप्त करने के लिए बैश में कोड है और उन सभी को डाउनलोड करें, यह मानते हुए कि कुकीज़ "गेट कुकीज़" अनुभाग में पर्यावरण चर के रूप में सेट की गई हैं:
curl -sL -H "Cookie: SID=${SID}; HSID=${HSID}; SSID=${SSID}; OSID=${OSID};" \
'https://takeout.google.com/settings/takeout/downloads' | \
grep -Po '(?<=")https://storage\.cloud\.google\.com/[^"]+(?=")' | \
awk '!x[$0]++' | \
xargs -n1 -P1 -I{} curl -LOJ -C - -H "Cookie: SID=${SID}; HSID=${HSID}; SSID=${SSID}; OSID=${OSID};" {}
मैंने इसे लिनक्स पर परीक्षण किया है, लेकिन सिंटैक्स को macOS के साथ भी संगत होना चाहिए।
प्रत्येक भाग की व्याख्या:
curl
प्रमाणीकरण कुकीज़ के साथ कमांड:
curl -sL -H "Cookie: SID=${SID}; HSID=${HSID}; SSID=${SSID}; OSID=${OSID};" \
डाउनलोड लिंक वाले पेज का URL
'https://takeout.google.com/settings/takeout/downloads' | \
फ़िल्टर केवल डाउनलोड लिंक से मेल खाते हैं
grep -Po '(?<=")https://storage\.cloud\.google\.com/[^"]+(?=")' | \
डुप्लिकेट लिंक को फ़िल्टर करें
awk '!x[$0]++' \ |
सूची में प्रत्येक फ़ाइल को एक-एक करके डाउनलोड करें:
xargs -n1 -P1 -I{} curl -LOJ -C - -H "Cookie: SID=${SID}; HSID=${HSID}; SSID=${SSID}; OSID=${OSID};" {}
नोट: डाउनलोडों को समानांतर करना ( -P1
अधिक संख्या में बदलना ) संभव है, लेकिन Google सभी कनेक्शनों में से एक को थ्रॉटल करने लगता है।
नोट: ऐसी -C -
फाइलें जो पहले से मौजूद हैं, उन्हें छोड़ देता है, लेकिन हो सकता है कि यह मौजूदा फाइलों के डाउनलोड को फिर से शुरू न करे।
डाउनलोड की गई संग्रह फ़ाइलों को एन्क्रिप्ट करें
यह स्वचालित नहीं है। कार्यान्वयन इस बात पर निर्भर करता है कि आप अपनी फ़ाइलों को कैसे एन्क्रिप्ट करना चाहते हैं, और जिस फ़ाइल को आप एन्क्रिप्ट कर रहे हैं, उसके लिए स्थानीय डिस्क स्थान की खपत दोगुनी होनी चाहिए।
ड्रॉपबॉक्स में डाउनलोड की गई आर्काइव फाइलें अपलोड करें
यह अभी तक स्वचालित नहीं है।
AWS S3 में डाउनलोड की गई आर्काइव फाइलें अपलोड करें
यह अभी तक स्वचालित नहीं है, लेकिन इसे केवल डाउनलोड की गई फ़ाइलों की सूची पर चलना और कमांड चलाने जैसी बात होनी चाहिए:
aws s3 cp TAKEOUT_FILE "s3://MYBUCKET/Google Takeout/"