This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
пакет_rsync [2021/11/25 17:20] val [Инкрементное копирование (Incremental Backup)] |
пакет_rsync [2025/06/16 10:28] (current) val [Инкрементное копирование (Incremental Backup)] |
||
|---|---|---|---|
| Line 2: | Line 2: | ||
| * [[https://www.howtoforge.com/backing-up-with-rsync-and-managing-previous-versions-history|Backing Up With rsync And Managing Previous Versions/History]] | * [[https://www.howtoforge.com/backing-up-with-rsync-and-managing-previous-versions-history|Backing Up With rsync And Managing Previous Versions/History]] | ||
| + | |||
| ===== Установка ===== | ===== Установка ===== | ||
| Line 30: | Line 31: | ||
| node1# rsync -avz --del --rsync-path="sudo rsync" /home/ student@node2:/home/ | node1# rsync -avz --del --rsync-path="sudo rsync" /home/ student@node2:/home/ | ||
| - | val# /usr/bin/rsync -av --del -e "ssh -p XXX" /var/www/html/dokuwiki/ val@radio.specialist.ru:dokuwiki.mastercopy/ | + | root@val2:~# /usr/bin/rsync -avz -e "ssh -p NNN" val.bmstu.ru:/var/lib/dokuwiki/data/ /var/lib/dokuwiki/data/ |
| + | </code> | ||
| + | |||
| + | * [[Команда dd#Клонирование диска по сети]] | ||
| + | |||
| + | <code> | ||
| + | clone# mount /dev/sda1 /mnt | ||
| + | source# rsync -avzR --sparse --del /opt/ /var/ /srv/ 192.168.13.229:/mnt/ | ||
| </code> | </code> | ||
| Line 36: | Line 44: | ||
| * [[https://linuxconfig.org/how-to-create-incremental-backups-using-rsync-on-linux|How to create incremental backups using rsync on Linux]] | * [[https://linuxconfig.org/how-to-create-incremental-backups-using-rsync-on-linux|How to create incremental backups using rsync on Linux]] | ||
| - | * [[https://habr.com/ru/post/149059/|Делаем свою Time Machine для Линукса]] | + | * [[https://habr.com/ru/companies/slurm/articles/452630/|Резервное копирование, часть 2: Обзор и тестирование rsync-based средств резервного копирования]] |
| <code> | <code> | ||
| - | # BACKUP_PATH=/mnt/Backups/client1/home/$(date "+%Y-%m-%d_%H:%M:%S")/ | + | Делаем первый бекап (например, на внешний диск или раздел, смонтированный по NFS) |
| + | |||
| + | # BACKUP_PATH=/mnt/Backups/www/rootfs/$(date "+%Y-%m-%d_%H-%M")/ | ||
| + | # BACKUP_PATH=/mnt/Backups/client1/home/$(date "+%Y-%m-%d_%H-%M")/ | ||
| # mkdir -p $BACKUP_PATH | # mkdir -p $BACKUP_PATH | ||
| + | |||
| + | # rsync -av --del /var/lib/lxc/www/rootfs/ $BACKUP_PATH | ||
| # rsync -av --del /home/ $BACKUP_PATH | # rsync -av --del /home/ $BACKUP_PATH | ||
| + | Сохраняем линк на него | ||
| + | |||
| + | # LATEST_LINK=/mnt/Backups/www/rootfs/latest | ||
| # LATEST_LINK=/mnt/Backups/client1/home/latest | # LATEST_LINK=/mnt/Backups/client1/home/latest | ||
| + | |||
| # ln -s $BACKUP_PATH $LATEST_LINK | # ln -s $BACKUP_PATH $LATEST_LINK | ||
| - | # BACKUP_PATH=/mnt/Backups/client1/home/$(date "+%Y-%m-%d_%H:%M:%S")/ | + | Через некоторое время, после изменений, делаем следующий бекап с использованием линка на предыдущий |
| + | |||
| + | # BACKUP_PATH=/mnt/Backups/www/rootfs/$(date "+%Y-%m-%d_%H-%M")/ | ||
| + | # BACKUP_PATH=/mnt/Backups/client1/home/$(date "+%Y-%m-%d_%H-%M")/ | ||
| # mkdir $BACKUP_PATH | # mkdir $BACKUP_PATH | ||
| + | |||
| + | # rsync -av --del /var/lib/lxc/www/rootfs/ --link-dest $LATEST_LINK $BACKUP_PATH | ||
| # rsync -av --del /home/ --link-dest $LATEST_LINK $BACKUP_PATH | # rsync -av --del /home/ --link-dest $LATEST_LINK $BACKUP_PATH | ||
| - | # rm $LATEST_LINK | ||
| - | # ln -s $BACKUP_PATH $LATEST_LINK | ||
| - | # ls -aRl $BACKUP_PATH | + | Направляем линк на последний бекап |
| + | |||
| + | # rm $LATEST_LINK && ln -s $BACKUP_PATH $LATEST_LINK | ||
| + | |||
| + | Смотрим количество hardlink на файлы, которые не менялись | ||
| + | |||
| + | # find $LATEST_LINK/ -type f -links +1 -ls | less | ||
| + | |||
| + | Восстановление из бекапа | ||
| + | |||
| + | # BACKUP_PATH=/mnt/Backups/www/rootfs/<TAB> | ||
| + | |||
| + | # systemctl stop lxc@www | ||
| + | |||
| + | # rsync -av --del $BACKUP_PATH /var/lib/lxc/www/rootfs/ | ||
| + | |||
| + | # systemctl start lxc@www | ||
| + | </code><code> | ||
| + | root@disk:~# cat Backups2.sh | ||
| + | </code><code> | ||
| + | #!/bin/sh | ||
| + | |||
| + | for d in DISKREV2025 DISKREV2025_PRE DISKFK2025 DISKFK2025_PRE | ||
| + | do | ||
| + | BACKUP_PATH=/home/Backups/home/"${d}"/$(date "+%Y-%m-%d_%H-%M")/ | ||
| + | mkdir -p "$BACKUP_PATH" | ||
| + | LATEST_LINK=/home/Backups/home/"${d}"/latest | ||
| + | if [ ! -L "${LATEST_LINK}" ]; then | ||
| + | rsync -av --del /home/"${d}"/ "$BACKUP_PATH" | ||
| + | ln -s "$BACKUP_PATH" "$LATEST_LINK" | ||
| + | else | ||
| + | rsync -av --del /home/"${d}"/ --link-dest "$LATEST_LINK" "$BACKUP_PATH" | ||
| + | rm "$LATEST_LINK" && ln -s "$BACKUP_PATH" "$LATEST_LINK" | ||
| + | fi | ||
| + | done | ||
| + | |||
| + | find /home/Backups/home/* -maxdepth 1 -ctime +8 -type d | xargs rm -rf | ||
| </code> | </code> | ||
| ===== Использование rsync сервера ===== | ===== Использование rsync сервера ===== | ||