[Discuss] Cloud backup
David Kramer
david at thekramers.net
Sun Dec 15 19:33:36 EST 2019
I apologize I had on my list to send you this information since the
Installfest and failed to do so. I'll post it here to share with the
larger audience.
I found the very cheapest storage of backup files you will hopefully
never need turns out to be Google Cloud Platform. Right now I'm only
backing up my Linode server there automatically but I want to get
regularly scheduled backups from other machines too. The cost is like...
20 cents a month for daily backups of most of the important parts of the
system. You can configure the buckets to automatically delete files
over a certain age so you don't even need to script that. HOWEVER, and
this is a little non-intuitive, the cheaper the storage rate you choose,
the longer you must keep the files there, because they want to reduce
transactions. It literally won't let your remove a file from cold
storage that's been there for less than (IIRC) 90 days. Fine by me.
I back up my database and mail directories daily, and do file level
backups of the important directories weekly. In all cases, I tar up the
files, then encrypt them with a password using openssl AES256. Then I
used GCP's gsutil to copy the files into the right bucket. I found
gsutil very easy to use after some initial experimentation. You do need
to do some magic to connect your install to your account so you don't
need to specify credentials with each call but that wasn't too bad.
https://cloud.google.com/storage/docs/gsutil
Being a software engineer, I moved a lot of the functionality into one
script, backuplib.sh, so there's very little duplication between the
scripts, and it all just works once I get it working for one script. I
can post more examples if you want but here are some of the key
functions in that file:
function makeBackupName {
/bin/echo "${BACKUP_DIR}/backup_${1}_${HOSTNAME}_${DATE}.${2}"
}
function makeBucketName {
/bin/echo "gs://dkramer_${HOSTNAME}_backups/"
}
# encryptBackup INPUTFILE OUTPUTFILE
function encryptBackup {
testBackupExists ${1}
/usr/bin/openssl enc -aes-256-cbc -salt -pbkdf2 -in ${1} -out ${2}
-pass env:ENC_PASSWORD
testBackupExists ${2}
/bin/rm ${1}
/bin/chmod 700 ${2}
}
# uploadBackup FILENAME
function uploadBackup {
bucketName=`makeBucketName`
/usr/bin/gsutil cp ${1} "${bucketName}"
echo "Space used:"
gsutil du -sh "${bucketName}"
}
# removeOld DAYS WILDCARD
function removeOld {
/usr/bin/find ${BACKUP_DIR} -name "${2}" -mtime +${1} -delete
}
Given that, the entire script to back up my system files (minus some
other things I do to document the current state of the system):
backup=`makeBackupName system tgz`
backupenc="${backup}.enc"
tar cvzf ${backup} --exclude='var/spool/mail/'
--exclude='var/log/journal' etc home root usr/local var/www var/spool
var/cache var/log
encryptBackup ${backup} ${backupenc}
uploadBackup ${backupenc}
removeOld ${BACKUP_DAYS} 'backup_system_*.tgz.*'
Backing up mail is similar but just under /var/mail, and skipping some
large non-critical files.
Backing up the databases is a little more complicated because my server
is using MySQL for some things and Postgresql in others, and in both
cases I query the list of databases dynamically then generate a dump of
each one, so there's no central list of databases to maintain.
The backups are called by cron of course.
If there's anything you would like me to dig into deeper, let me know.
On 12/14/19 10:17 AM, Jerry Feldman wrote:
> I currently have Dropbox professional and Google drive (free). I snapshot
> backup my tower to a local hard drive. I'm thinking of backing up the most
> recent snapshot to either Dropbox or Google. The advantage of Dropbox is
> that it supports Linux so I could either tar or cp or rsync to a folder in
> my local Dropbox directory, and it would automatically sync to the Dropbox
> cloud. With Google I could use deja dup. I certainly could use aws, but I
> already have Dropbox and Google accounts. I'm just looking for opinions on
> both.
>
> --
> Jerry Feldman <gaf.linux at gmail.com>
> Boston Linux and Unix http://www.blu.org
> PGP key id: 6F6BB6E7
> PGP Key fingerprint: 0EDC 2FF5 53A6 8EED 84D1 3050 5715 B88D 6F6
> B B6E7
> _______________________________________________
> Discuss mailing list
> Discuss at lists.blu.org
> http://lists.blu.org/mailman/listinfo/discuss
More information about the Discuss
mailing list