Rsync peut-être exécuté localement, côté client ou côté serveur :
$ rsync -a repSource repCible
$ rsync -e ssh -a repSource login@server:repCible
$ rsync -e ssh -a login@client:repSource repCible
Exécuté par root, rsync -a conserve les droits.
1 Installation
- côté client :
# apt get install rsync
# ssh-keygen -t dsa -f .ssh/rsync_dsa
- côté serveur :
# apt get install rsync
# adduser rsync
# su - rsync
$ mkdir .ssh
$ touch .ssh/authorized_keys
$ chmod 644 .ssh/authorized_keys
$ ssh root@max "cat ~/.ssh/rsync_dsa.pub" >> ~/.ssh/authorized_keys
Test depuis le client :
# rsync -e "ssh -i /root/.ssh/rsync_dsa" -au dirToBackup rsync@narval:/mnt/raid1/rsync/.
2 Script
fichier /bin/cron.d/backup-home.sh
#!/bin/bash
rotationdays=15
homedirs="root cvsroot"
bkphost=rsync@narval
bkpdir=/mnt/raid1/rsync
srcbkp=
dateprev=/root/bin/.dateprev
#for dir2del in `find $bkpdir -maxdepth 1 -type d -name "date*" -mtime +${rotationdays} 2>/dev/null`; do
# rm -rf ${dir2del}/* 2>/dev/null
#done
for home in $homedirs; do
[ -d $srcbkp/$home ] || continue
datebkp=date`date +%d`
[ -f $dateprev ] || date +%d > $dateprev
OPTIONS=
[ `date +%d` != `head -1 $dateprev` ] && OPTIONS=--delete
#echo "rsyncing $OPTIONS .. $home"
#mkdir -p $bkpdir/$datebkp 2>/dev/null
ssh -i /root/.ssh/rsync_dsa $bkphost "mkdir -p $bkpdir/$datebkp" 2>/dev/null
#nice rsync -auq $OPTIONS $srcbkp/$home $bkpdir/$datebkp/ 2>/dev/null
nice rsync -e "ssh -i /root/.ssh/rsync_dsa" \
-auq $OPTIONS $srcbkp/$home $bkphost:$bkpdir/$datebkp/ 2>/dev/null
date +%d > $dateprev
done
cat > ~/bin/cron.d/backup-home.cron
0 4 * * 7 root /root/bin/backup-home.sh &>/dev/null
^D
ln -s ~/bin/backup-home.cron /etc/cron.d/.
|