क्लाउड स्टोरेज के लिए नियमित Google टेकआउट बैकअप को स्वचालित कैसे करें


42

मैं नियमित Google टेकआउट बैकअप बनाना चाहता हूं (हर 3 महीने में) और ड्रॉपबॉक्स या एस 3 जैसे कुछ अन्य क्लाउड स्टोरेज में उन्हें एन्क्रिप्ट किया गया है।

हालांकि यह पसंद करने के लिए क्लाउड-टू-क्लाउड समाधान नहीं है। यह 100% स्वचालित होने की आवश्यकता नहीं है, हालांकि अधिक बेहतर है।

किसी भी विचार के लिए अग्रिम धन्यवाद।

जवाबों:


2

Google टेकआउट के बैकअप के लिए डायरेक्ट API के बजाय (जो अब तक लगभग असंभव सा प्रतीत होता है), आप Google ड्राइव के माध्यम से अपने डेटा को 3rd पार्टी स्टोरेज सॉल्यूशन में बैकअप कर सकते हैं। कई Google सेवा Google डिस्क पर बैकअप की अनुमति देती हैं, और आप निम्न टूल का उपयोग करके Google ड्राइव का बैकअप ले सकते हैं:

GoogleCL - GoogleCL Google सेवाओं को कमांड लाइन में लाता है।

gdatacopier - Google डॉक्स के लिए कमांड लाइन दस्तावेज़ प्रबंधन उपयोगिताओं।

FUSE Google ड्राइव - Google ड्राइव के लिए एक FUSE उपयोगकर्ता-स्पेस फ़ाइल सिस्टम, जो C में लिखा गया है।

ग्राइव - Google ड्राइव क्लाइंट का एक स्वतंत्र ओपन-सोर्स कार्यान्वयन। यह Google में सर्वर से बात करने के लिए Google दस्तावेज़ सूची एपीआई का उपयोग करता है। कोड C ++ में लिखा गया है।

gdrive-cli - GDrive के लिए एक कमांड-लाइन इंटरफ़ेस। यह GDrive API का उपयोग करता है, न कि GDocs API का, जो दिलचस्प है। इसका उपयोग करने के लिए, आपको एक क्रोम एप्लिकेशन को पंजीकृत करना होगा। यह आपके द्वारा कम से कम स्थापित किया जाना चाहिए, लेकिन प्रकाशित होने की आवश्यकता नहीं है। रेपो में एक बॉयलरप्लेट ऐप है जिसे आप शुरुआती बिंदु के रूप में उपयोग कर सकते हैं।

अजगर-फ्यूज उदाहरण - इसमें कुछ स्लाइड और पायथन FUSE फाइल सिस्टम के उदाहरण शामिल हैं।

इनमें से ज्यादातर उबंटू रिपॉजिटरी में लगते हैं। मैंने स्वयं फ्यूज, gdrive और GoogleCL का उपयोग किया है और वे सभी ठीक काम करते हैं। नियंत्रण के स्तर के आधार पर आप चाहते हैं कि यह वास्तव में आसान या वास्तव में जटिल होगा। यह आप पर निर्भर है। यह EC2 / S3 सर्वर से करने के लिए सीधे आगे होना चाहिए। बस अपनी ज़रूरत की हर चीज़ के लिए एक-एक करके कमांड्स को समझें और इसे क्रोन जॉब की स्क्रिप्ट पर रखें।

यदि आप इतनी मेहनत नहीं करना चाहते हैं, तो आप बस स्पिनबैकअप जैसी सेवा का उपयोग कर सकते हैं । मुझे यकीन है कि वहाँ दूसरों के रूप में अच्छा कर रहे हैं, लेकिन मैं किसी भी कोशिश नहीं की है।


20
Google टेकआउट इसके लिए सबसे अच्छा उपकरण है क्योंकि यह अधिक सेवाओं का समर्थन करता है जो कि इन अन्य उपकरणों को। सवाल वैध है।
jl6

6
@krowe: आपका जवाब वास्तव में उपयोगी है, यह केवल Google ड्राइव से संबंधित है। Google टेकआउट से आप अपने सभी डेटा को केवल Google ड्राइव ही नहीं, बल्कि 25 विभिन्न Google सेवाओं से डाउनलोड कर सकते हैं।
बजर्के फ्रायंड-हेंसन

@ BjarkeFreund-Hansen 1) उन 25 सेवाओं में से कई को GDrive में सहेजा जा सकता है और स्वचालित GDrive बैकअप के हिस्से के रूप में स्वचालित रूप से बैकअप लिया जा सकता है। 2) अधिकांश शेष सेवाएँ या तो बैकअप (+ 1s, मंडलियों, आदि) या डिफंक्ट (Google कोड) के लिए व्यर्थ हैं। 3) मैं ऐसे लोगों को समझा कर थक गया हूं जिनके पास बेहतर उत्तर नहीं है। मैं काफी निश्चित हूं कि टेकआउट को स्वचालित करने का कोई तरीका नहीं है (क्लाइंट साइड मैक्रोज़ का उपयोग करने से अलग, जो वैसे भी बहुत विश्वसनीय नहीं हैं)। 4) यदि आप मुझे गलत साबित कर सकते हैं तो अपना बेहतर समाधान पोस्ट करें और हम बात कर सकते हैं। यदि नहीं, तो इसी मुद्दे पर मेरी पिछली टिप्पणी को देखें।
krowe

6
@krowe: जीमेल, कैलेंडर, संपर्क, तस्वीरें, हैंगआउट इतिहास और स्थान इतिहास ऐसी सेवाएं हैं जिनका मैं बड़े पैमाने पर उपयोग करता हूं और Google पर डेटा हानि के खिलाफ सुनिश्चित करना चाहता हूं। उन सेवाओं में से कोई भी डेटा Google ड्राइव में शामिल नहीं है। सिर्फ इसलिए कि मैं एक बेहतर समाधान नहीं जानता, या कोई भी मौजूद है, आपको किसी भी अधिक सही जवाब नहीं देता है। फिर, मैं यह नहीं कह रहा हूं कि आप जवाब बुरा है, यह सिर्फ वास्तविक सवाल का जवाब नहीं है।
बजरैक फ्रायंड-हेन्सन

@ BjarkeFreund-Hansen मैं आपकी हताशा को समझता हूं और उन सेवाओं में से कुछ को आपके GDrive के साथ समन्वयित किया जा सकता है (इसलिए वे इसके साथ बैकअप करेंगे)। उदाहरण के लिए, Google फ़ोटो वह कर सकता है: बैकअप फ़ोटो । मेरा मानना ​​है कि कैलेंडर और संपर्कों को एक ही तरीके से सिंक किया जा सकता है। GMail के रूप में अच्छी तरह से समर्थित किया जा सकता है: बैकअप GMail । आप जिन अन्य चीजों का उल्लेख करते हैं, मैं उनके बारे में नहीं जानता, लेकिन ऐसा इसलिए है क्योंकि मैं व्यक्तिगत रूप से उन्हें वैसे भी परेशान नहीं करूंगा।
krowe

2

यह आंशिक स्वचालन के साथ एक आंशिक उत्तर है। यह भविष्य में काम करना बंद कर सकता है यदि 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उपलब्ध है और लॉग इन करते समय DefaultChrome प्रोफ़ाइल 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 टेकआउट: आर्काइव प्रारूप को अनुकूलित करें

संग्रह बनाया जाता है, तो जाँच करें

यह अभी तक स्वचालित नहीं है। यदि कोई संग्रह बनाया गया है, तो 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 के साथ भी संगत होना चाहिए।

प्रत्येक भाग की व्याख्या:

  1. curl प्रमाणीकरण कुकीज़ के साथ कमांड:

    curl -sL -H "Cookie: SID=${SID}; HSID=${HSID}; SSID=${SSID}; OSID=${OSID};" \
  2. डाउनलोड लिंक वाले पेज का URL

    'https://takeout.google.com/settings/takeout/downloads' | \
  3. फ़िल्टर केवल डाउनलोड लिंक से मेल खाते हैं

    grep -Po '(?<=")https://storage\.cloud\.google\.com/[^"]+(?=")' | \
  4. डुप्लिकेट लिंक को फ़िल्टर करें

    awk '!x[$0]++' \ |
  5. सूची में प्रत्येक फ़ाइल को एक-एक करके डाउनलोड करें:

    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/"

0

मैंने इस सवाल को खोजते हुए पाया कि Google ड्राइव में ठीक से दिखाई नहीं देने वाली मेरी Google फ़ोटो को कैसे ठीक करें (जो मैं पहले से ही स्वचालित रूप से बैकअप ले रहा हूं!)।

इसलिए, अपनी तस्वीरों को Google ड्राइव में दिखाने के लिए, https://photos.google.com , सेटिंग पर जाएं और इसे ड्राइव में फ़ोल्डर में फ़ोटो दिखाने के लिए सेट करें।

फिर अपनी संपूर्ण Google ड्राइव में क्लोन करने के लिए https://github.com/ncw/rclone का उपयोग करें (जिसमें अब आपके स्थानीय संग्रहण में 'सामान्य' निर्देशिका के रूप में फ़ोटो शामिल हैं)।


Rclone बहुत अच्छा लग रहा है, एक परिपक्व परियोजना की तरह लगता है। बस मैं जिस उपाय की तलाश में था।
स्टीमपॉवर

यह वास्तव में बहुत अच्छा है। मेरी कई हजारों तस्वीरों के साथ यह अब उनके माध्यम से क्रंच करने में कुछ समय लेता है। मुझे आश्चर्य होता है कि क्या मैं सिर्फ आंखें मूंद कर चेक करने के बजाए इसे आंख मूंद कर डाउनलोड कर सकता हूं।
djsmiley2k - CoW
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.