I initially used git to sync my
.vimrc file and my own ebuild repo, but it is not cost-efficient as I actually pay little attention to the tracking commit things. So I ended up using rsync to synchronize my linux files to my dreamhost account.
Assuming you’ve already had a dreamhost account with shell access priviledge (any other hosts with shell access will be fine as well). And you’re going to backup the following files on your system to the dreamhost server:
/home/yourname/.aliasrc /home/yourname/.bashrc /home/yourname/.config/openbox/ /home/yourname/files/ /home/yourname/.vimrc /home/yourname/.vim/ /home/yourname/.xinitrc /home/yourname/.Xdefaults /etc/fstab /etc/fonts/local.conf /etc/make.conf /etc/portage/package.* /etc/X11/xorg.conf
Ofc you dont want others to see your
files directory, so the two files should be excluded from synchronization.
Put the following two lines into a textfile (such as
~/.rsync/excludes) which we’ll use it later:
I wrote this script for sync:
#!/bin/bash includes=" /home/yourname/.aliasrc /home/yourname/.bashrc /home/yourname/.config/openbox/ /home/yourname/files/ /home/yourname/.vimrc /home/yourname/.vim/ /home/yourname/.xinitrc /home/yourname/.Xdefaults /etc/fstab /etc/fonts/local.conf /etc/make.conf /etc/portage/package.* /etc/X11/xorg.conf " rsync -avzuCRpP --delete --delete-excluded $includes --exclude-from "/home/yourname/.rsync/excludes" -e ssh USERNAME@HOSTNAME:linux/
$includes contains the files you want to sync, * wildcard supported, and to exclude the private files you’ll need the
USERNAME@HOSTNAME is your dreamhost account and hostname,
:linux/ means sync the files to the linux directory under your dreamhost home directory.
-a parameter makes sure your files will be synchronized recursively.
-C is used for ignoring files like
*.bak and so on, ofc we dont want to waste time on transfering these useless things.
-R is needed for transfering hierarchically, this means I can sync my
/etc/make.conf file right under
linux/etc/ directory on my dreamhost.
-P parameter is quite useful when the transaction is interrupted, you can continue the process somewhen later.
Now you can
chmod +x scriptname before you run it first time.
Fetch the backup files from your dreamhost is easy, just to run:
rsync -e ssh -av USERNAME@HOSTNAME:linux/ backup/
The files will be transfered to the
backup directory on the local computer.
You may need the Password-less SSH Login if you want to add this script to the cron job.
I use this cron job to make sure the script run automatically at 23:30 p.m. on every Monday and Thursday.
30 23 * * 1,4 punkid sh /home/punkid/scripts/autobackup.sh