Rsync
De gacq wiki
Revisión del 21:44 3 oct 2006 de WikiSysop (discusión | contribuciones) (→At host to backup (as root))
Contenido
- 1 short selection of rsync parameters
- 2 Working files syncronization / desktop <--> notebook
- 3 Backing up system configuration and notebook only files (ssh)
- 4 Backup remote server (rsyncd - no root ssh)
- 5 NO root ssh access (and) NO rsyncd installed on remote host
- 6 Diferences between ryncd and ssh
- 7 duplicating systems with sync
short selection of rsync parameters
-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/
Backing up system configuration and notebook only files (ssh)
Commands to run
At host to backup (as root)
If root ssh access is enable you can create the user with UID=0, and no problems with permisions
useradd -g 0 -o --uid 0 rbackup
with UID != 0
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 remote server (rsyncd - no root ssh)
(Without root ssh access available - /etc/ssh/sshd_config with "PermitRootLogin no")
/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
NO root ssh access (and) NO rsyncd installed on remote host
Put ssh user in the necesaries systems groups
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