Инструкция как сделать ежедневные инкрементальные бэкапы. Скрипт создает бэкапы по датам с симлинками на уже существующие файлы, чтобы они место не занимали.
1) Создайте файл:
#!/bin/bash
SOURCE_DIRECTORY="user@example.com:/src"
DEST_DIRECTORY="/dest"
RSYNC_OPTS="-aSsuhz --numeric-ids --bwlimit=50000 --info=progress2"
# Remove old backups
for i in $(seq 0 6); do
DAY=$((i+30))
LAST_DATE=`date '+%Y-%m-%d' -d "$DAY days ago"`
rm -rf "$DEST_DIRECTORY/backup.$LAST_DATE"
done
# Use lasts backup as the incremental base if it exists
if [ -d "$DEST_DIRECTORY/last" ]
then
RSYNC_OPTS="$RSYNC_OPTS --link-dest $DEST_DIRECTORY/last"
fi
# Rsync
CURRENT_DATE=`date '+%Y-%m-%d_%H%M%S'`
rsync $RSYNC_OPTS "$SOURCE_DIRECTORY/" "$DEST_DIRECTORY/backup.$CURRENT_DATE/"
# Recreate symlink
if [ -d "$DEST_DIRECTORY/last" ]
then
yes | rm -f $DEST_DIRECTORY/last
fi
ln -s $DEST_DIRECTORY/backup.$CURRENT_DATE $DEST_DIRECTORY/last
Поменяйте параметры SOURCE_DIR и DEST_DIR на свои значения.
2) Пропиши в крон строчку
0 0 * * * /path/to/backup/script.sh > /dev/null
Дополнительные ссылки: