Google operates at a scale of billions of users.
At that scale, mistakes
happen,
and you can lose all your
data.
Here are two ways to deal with it.
- Avoid giving out your “@gmail.com” email address publicly - use “@customdomain.com” which you control
- Keep a backup of your important data elsewhere, like Backblaze - it charges about USD 1 for storing 100GB
for one year, which is sufficient for most normal users
How to back up Google Photos to Backblaze#
- Download via
Google Takeout - depending on the size,
it will take up to a few hours for Google to create a takeout and put it in, say,
${HOME}/Downloads/google-photos/Takeout - Create a new bucket on
Backblaze -
google-photos-backup-v1 - Create a new Backblaze key and save it in
.env as AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY - Use
restic for backup
- One-time init:
make initGooglePhotos # remember the password you configure here - Backup:
make backupGooglePhotos # First time this is slow; future backups are incremental and fast
One can do it similarly for Gmail and Google Drive.
Here’s how my .env file looks:
1
2
3
| # Ref: https://secure.backblaze.com/app_keys.htm
AWS_ACCESS_KEY_ID="<REDACTED>"
AWS_SECRET_ACCESS_KEY="<REDACTED>"
|
And the
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
| -include .env
export
RESTIC_PHOTOS_BACKUP_REPOSITORY="s3:s3.us-east-005.backblazeb2.com/<backupFolder1>"
RESTIC_EMAIL_BACKUP_REPOSITORY="s3:s3.us-east-005.backblazeb2.com/<backupFolder2>"
RESTIC_GOOGLE_DRIVE_BACKUP_REPOSITORY="s3:s3.us-east-005.backblazeb2.com/<backupFolder3>"
GOOGLE_PHOTOS_TAKEOUT_FOLDER="${HOME}/Downloads/google-photos/Takeout"
GMAIL_TAKEOUT_FOLDER="${HOME}/Downloads/gmail/Takeout"
GOOGLE_DRIVE_TAKEOUT_FOLDER="${HOME}/Downloads/google-drive/Takeout"
.SILENT: init-google-photos backup-google-photos init-gmail backup-gmail check
# This will interactively prompt for encryption password
initGooglePhotos:
AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} \
AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} \
restic -r ${RESTIC_PHOTOS_BACKUP_REPOSITORY} init
backupGooglePhotos:
AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} \
AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} \
restic -r ${RESTIC_PHOTOS_BACKUP_REPOSITORY} backup ${GOOGLE_PHOTOS_TAKEOUT_FOLDER}
initGmail:
AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} \
AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} \
restic -r ${RESTIC_EMAIL_BACKUP_REPOSITORY} init
backupGmail:
AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} \
AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} \
restic -r ${RESTIC_EMAIL_BACKUP_REPOSITORY} backup ${GMAIL_TAKEOUT_FOLDER}
initGoogleDrive:
AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} \
AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} \
restic -r ${RESTIC_GOOGLE_DRIVE_BACKUP_REPOSITORY} init
backupGoogleDrive:
AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} \
AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} \
restic -r ${RESTIC_GOOGLE_DRIVE_BACKUP_REPOSITORY} backup ${GOOGLE_DRIVE_TAKEOUT_FOLDER}
_checkGooglePhotos:
AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} \
AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} \
RESTIC_REPOSITORY=${RESTIC_PHOTOS_BACKUP_REPOSITORY} \
restic check
_checkGmail:
AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} \
AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} \
RESTIC_REPOSITORY=${RESTIC_EMAIL_BACKUP_REPOSITORY} \
restic check
_checkGoogleDrive:
AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} \
AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} \
RESTIC_REPOSITORY=${RESTIC_GOOGLE_DRIVE_BACKUP_REPOSITORY} \
restic check
check: _checkGooglePhotos _checkGmail _checkGoogleDrive
|