Написал такой вот скрипт
#!/bin/sh
LIST="dir1/subdir1 dir2 dir3 dir1/subdir2"
CLEAN_SCRIPT="/root/clean.sh" #за день накапливается куча временных файлов, бОльшая часть которых на следующий день не нужна, - сносим
BASE_DIR="/srv/"
DEST_HOST="192.168.1.7"
DEST_DIR="/srv/backup/"
USER="sambauser"
DEST="$USER@$DEST_HOST:$DEST_DIR"
DATE=`date +%F`
PREV_BAK="$DEST_DIR"`date -d "-1 day" +%F`"/"
$CLEAN_SCRIPT
ping -c4 -w4 $DEST_HOST > /dev/null 2>&1
EXIT_CODE=$?
if [ $EXIT_CODE -eq "0" ]
then
for DIR in $LIST
do
rsync -a -e 'ssh -p468' \
--link-dest=$PREV_BAK$DIR $BASE_DIR$DIR $DEST$DATE
done
exit 0
elif [ $EXIT_CODE -eq "2" ]
then
echo "Network problem!"
exit $EXIT_CODE
elif [ $EXIT_CODE -eq "1" ]
then
echo "$DEST_HOST is down!"
exit $EXIT_CODE
else
echo "Something goes REALY wrong..."
exit $EXIT_CODE
fi
На принимающей машине старые бэкапы удаляются таким вот образом
#!/bin/bash
BKP_DIR="/srv/backup/"
MAX="7"
OLD_DIR=$(date -d "-$MAX day" +%F)
N=$(ls $BKP_DIR | wc -l)
if [ -d $BKP_DIR$OLD_DIR ]
then
rm -rf $BKP_DIR$OLD_DIR
elif [ $N -gt $MAX ]
then
N=$[$N - $MAX]
LIST=$(ls -t $BKP_DIR | head -n$N)
for I in $LIST
do
rm -rf $BKP_DIR$I
done
fi
exit 0
Ткните пожалуйста носом в косяки.