User Tools

Site Tools


пакет_rsync

Пакет RSYNC

Установка

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/

root@val2:~# /usr/bin/rsync -avz -e "ssh -p NNN" val.bmstu.ru:/var/lib/dokuwiki/data/ /var/lib/dokuwiki/data/
clone# mount /dev/sda1 /mnt
source# rsync -avzR --sparse --del /opt/ /var/ /srv/ 192.168.13.229:/mnt/

Инкрементное копирование (Incremental Backup)

Делаем первый бекап (например, на внешний диск или раздел, смонтированный по 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/<TAB>

# systemctl stop lxc@www

# rsync -av --del $BACKUP_PATH /var/lib/lxc/www/rootfs/

# systemctl start lxc@www
root@disk:~# cat Backups2.sh
#!/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

Использование 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
пакет_rsync.txt · Last modified: 2025/06/16 10:28 by val