Инструкция как сделать ежедневные инкрементальные бэкапы. Скрипт создает бэкапы по датам с симлинками на уже существующие файлы, чтобы они место не занимали.

1) Создайте файл:

_x000D_#!/bin/bash_x000D__x000D_SOURCE_DIRECTORY="/srv"_x000D_DEST_DIRECTORY="/backup"_x000D_LINK_DIRECTORY="$DEST_DIRECTORY/last"_x000D_RSYNC_OPTS="-aSsuhz --numeric-ids --info=progress2"_x000D_CURRENT_DATE=`date '+%Y-%m-%d'`_x000D__x000D_# Remove old backups_x000D_for i in $(seq 0 6); do_x000D_ DAY=$((i+30))_x000D_ LAST_DATE=`date '+%Y-%m-%d' -d "$DAY days ago"`_x000D_ rm -rf "$DEST_DIRECTORY/$LAST_DATE"_x000D_done_x000D__x000D_# Check link directory_x000D_if [ -d "$LINK_DIRECTORY" ]; then_x000D_ REAL_LINK_PATH=$(readlink -f "$LINK_DIRECTORY")_x000D_ if [ "$REAL_LINK_PATH" == "$DEST_DIRECTORY/$CURRENT_DATE" ]; then_x000D_  exit 1_x000D_ fi_x000D_fi_x000D__x000D_# Use lasts backup as the incremental base if it exists_x000D_if [ -d "$LINK_DIRECTORY" ]; then_x000D_ RSYNC_OPTS="$RSYNC_OPTS --link-dest $LINK_DIRECTORY"_x000D_fi_x000D__x000D_# Rsync_x000D_rsync $RSYNC_OPTS $SOURCE_DIRECTORY/ $DEST_DIRECTORY/$CURRENT_DATE/_x000D__x000D_# Recreate symlink_x000D_if [ $? -eq 0 ] && [ ! -z $LINK_DIRECTORY ]; then_x000D_ yes | rm -f $LINK_DIRECTORY_x000D_ ln -s $DEST_DIRECTORY/$CURRENT_DATE $LINK_DIRECTORY_x000D_fi

Поменяйте параметры SOURCE_DIRECTORY и DEST_DIRECTORY на свои значения.

2) Пропиши в крон строчку

_x000D_0 0 * * * /path/to/backup/script.sh > /dev/null

Дополнительные ссылки:

  1. Easy Automated Snapshot-Style Backups with Linux and Rsync
  2. Incremental backups with rsync and hard links