====== Пакет RSYNC ======
* [[https://www.howtoforge.com/backing-up-with-rsync-and-managing-previous-versions-history|Backing Up With rsync And Managing Previous Versions/History]]
===== Установка =====
==== Debian/Ubuntu ====
root@nodeN:~# apt install rsync
==== FreeBSD ====
[nodeN:~] # pkg install rsync
===== Использование rsync клиента =====
==== Debian/Ubuntu/FreeBSD/MacOSX ====
server# mkdir /disk2/var/
server# time cp -rvp /var/log/ /disk2/var/log/
или
server# time rsync -av --del /var/log/ /disk2/var/log/
node1# rsync -avz --del /home/ 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/
* [[Команда dd#Клонирование диска по сети]]
clone# mount /dev/sda1 /mnt
source# rsync -avzR --sparse --del /opt/ /var/ /srv/ 192.168.13.229:/mnt/
==== Инкрементное копирование (Incremental Backup) ====
* [[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/companies/slurm/articles/452630/|Резервное копирование, часть 2: Обзор и тестирование rsync-based средств резервного копирования]]
Делаем первый бекап (например, на внешний диск или раздел, смонтированный по 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
# rsync -av --del /var/lib/lxc/www/rootfs/ $BACKUP_PATH
# rsync -av --del /home/ $BACKUP_PATH
Сохраняем линк на него
# LATEST_LINK=/mnt/Backups/www/rootfs/latest
# LATEST_LINK=/mnt/Backups/client1/home/latest
# ln -s $BACKUP_PATH $LATEST_LINK
Через некоторое время, после изменений, делаем следующий бекап с использованием линка на предыдущий
# 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
# rsync -av --del /var/lib/lxc/www/rootfs/ --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
Смотрим количество hardlink на файлы, которые не менялись
# find $LATEST_LINK/ -type f -links +1 -ls | less
Восстановление из бекапа
# BACKUP_PATH=/mnt/Backups/www/rootfs/
# systemctl stop lxc@www
# rsync -av --del $BACKUP_PATH /var/lib/lxc/www/rootfs/
# systemctl start lxc@www
===== Использование rsync сервера =====
==== FreeBSD ====
[node2:~] # service rsyncd rcvar
[node2:~] # cd /usr/local/etc/
==== Ubuntu/Debian ====
root@node2:~# cat /etc/default/rsync
...
RSYNC_ENABLE=true
...
root@node2:~# systemctl enable rsync
root@node2:~# cd /etc/
==== FreeBSD/Ubuntu ====
node2# cat rsyncd.conf
# pid file = /var/run/rsyncd.pid
[home]
uid = root
use chroot = yes
path = /home
read only = no
hosts allow = node1.corpX.un
ubuntu node2# service rsync start
или
freebsd node2# service rsyncd start
node1# rsync node2::
home
node1# rsync node2::home
...
node1# rsync node2::home/user1/
...
node1# rsync -av --delete /home/ node2::home