Rsync
De gacq wiki
Revisión del 21:20 3 oct 2006 de WikiSysop (discusión | contribuciones) (→Desktop and notebook syncronization)
Contenido
rsync has a lot of parameters, here you have a selection
-a, --archive
-a, --archive archive mode
same as -rlptgoD (no -H)
-r, --recursive recurse into directories -l, --links copy symlinks as symlinks -p, --perms preserve permissions -t, --times preserve times -g, --group preserve group -o, --owner preserve owner (super-user only) -D same as --devices --specials
commons
-v, --verbose increase verbosity -u, --update skip files that are newer on the receiver -z, --compress compress file data during the transfer -e, --rsh=COMMAND specify the remote shell to use -h, --human-readable output numbers in a human-readable format --progress show progress during transfer -f, --filter=RULE add a file-filtering RULE
for incrementals
-b, --backup destination files are renamed --backup-dir=DIR for incremental backups
limits
--max-size=SIZE don't transfer any file larger than SIZE --bwlimit=KBPS limit I/O bandwidth; KBytes per second
Working files syncronization / desktop <-> notebook
gacq.com-get
# Run this at the notebook # HOST=gacq.com USER=anysyncuser rsync -avuze 'ssh -p 22' --delete $USER@$HOST:/srv/gacq/rsync/ rsync
gacq.com-put
# Run this at the notebook # HOST=gacq.com USER=anysyncuser rsync -avuze 'ssh -p 22' --delete rsync $USER@$HOST:/srv/gacq/
Backup using ssh
Commands to execute
At host to backup (as root)
useradd -g 0 -G daemon,dip,lpadmin,shadow,sasl rbackup passwd rbackup su - rbackup mkdir -p /home/rbackup/.ssh chmod 700 /home/rbackup/.ssh chown -R rbackup.root /home/rbackup
At backup server (as root)
ssh-keygen -t dsa -f diskarray.gacq.com-id_dsa scp diskarray.gacq.com-id_dsa.pub rbackup@diskarray.gacq.com:.ssh/authorized_keys
Test the key:
ssh -i diskarray.gacq.com-id_dsa.pub rbackup@diskarray.gacq.com
script (ssh)
#!/bin/sh # # Configuration: HOST=mynotebook.gacq.com USER=gacq MYSQLPASS=MYSQL_ROOT_PASS # dir=full_backup date=`date +%F_%T | tr \: _` incremental=incremental/incremental_$date dumps=dumps/dump_$date mkdir -p $dir mkdir -p $incremental mkdir -p $dumps rsync -auzvh \ -e "ssh -l $USER -i $HOST-id_dsa" \ --delete \ --filter='+ /etc/' \ --filter='+ /etc/**' \ --filter='+ /root/' \ --filter='+ /root/**' \ --filter='+ /usr/' \ --filter='+ /usr/local/' \ --filter='+ /usr/local/scripts/' \ --filter='+ /usr/local/scripts/**' \ --filter='- /**' \ --backup --backup-dir=../$incremental \ $HOST:/ $dir ssh -l $USER -i $HOST-id_dsa $HOST "/usr/bin/dpkg --get-selections" > $dumps/dpkg--get-selections.txt ssh -l $USER -i $HOST-id_dsa $HOST "mysqldump --all-databases --password=$MYSQLPASS | gzip" > $dumps/all-databases.sql.gz
Backup using rsyncd
/etc/rsyncd.conf
[all] comment = from root path = / read only = yes list = yes uid = root gid = root strict modes = yes hosts allow = gacq.com ignore errors = no ignore nonreadable = yes transfer logging = no timeout = 600 refuse options = checksum dry-run dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz
script (rsyncd)
#!/bin/sh # # Configuration: HOST=mycustomer.gacq.com USER=gacq MYSQLPASS=MYSQL_ROOT_PASS # dir=full_backup date=`date +%F_%T | tr \: _` incremental=incremental/incremental_$date dumps=dumps/dump_$date mkdir -p $dir mkdir -p $incremental mkdir -p $dumps rsync -azvh \ --delete \ --max-size=50M \ --bwlimit=200 \ --progress \ --filter='+ /etc/' \ --filter='+ /etc/**' \ --filter='+ /root/' \ --filter='+ /root/**' \ --filter='+ /home/' \ --filter='+ /home/**' \ --filter='+ /usr/' \ --filter='+ /usr/local/' \ --filter='+ /usr/local/scripts/' \ --filter='+ /usr/local/scripts/**' \ --filter='- /**' \ --backup --backup-dir=../$incremental \ $HOST::all $dir ssh -l $USER -i $HOST-id_dsa $HOST "/usr/bin/dpkg --get-selections" > $dumps/dpkg--get-selections.txt ssh -l $USER -i $HOST-id_dsa $HOST "mysqldump --all-databases --password=$MYSQLPASS | gzip" > $dumps/all-databases.sql.gz
Diferences between ryncd and ssh
add/remove this
-e "ssh -l $USER -i $HOST-id_dsa"
and change the source
for rsyncd use:
$HOST::all $dir
for ssh use:
$HOST:/ $dir
duplicating systems with sync
rsync -v -r -p -o -g -D -t -S -l -H \ --exclude /mnt/ \ --exclude /proc/ \ --exclude /tmp/ \ --exclude /home/ / /mnt/fireball/
Boot from a CD-ROM and mount the target-disk. Fix fstab and lilo.conf. Create /mnt and /proc and set the right permissions (for this directories). Then run lilo and reboot. Next time you run rsync, add these option to the command-line:
--exclude /etc/fstab \ --exclude /etc/lilo.conf \ --delete