Backup директории сайта в .tar архив инкрементно


Инкрементный backup директории сайта на сетевое хранилище

 

Допустим, что нам надо сделать инкрементную копию каталога /var/www/html/ в сетевое хранилище. Каждую полночь должен создаваться полный бэкап, а в 8 утра и 16 дня должны делаться инкрементные копии. Архивы должны храниться 8 дней и быть запакованы в .tar

Создадим скрипт полного бэкапа

nano /opt/backup/backup_full

 

#!/bin/bash
# Create incremental copy of /var/www/html

#монтируем папку с NAS сервера

mount -t nfs 01.23.45.67:/volume1/on/nas/server /mnt/backup

# Создадим полный архив и запишем метаданные в файл /var/log/www.snar В этом файле будут содержаться сведения об архивируемых файлах. Его мы будем использовать позднее
tar –create \
–file=/mnt/backup/”backup_$(date +”%Y_%m_%d_%I_%M”).tar” \
–listed-incremental=/var/log/www.snar \
/var/www/html*

#отмонтируем папку

umount /mnt/backup

 

========================================================================================
Создаём скрипт для инкрементного бэкапа, используя метаданные от понлого

nano /opt/backup/backup_incremental

 

#!/bin/bash
# Create incremental copy of /var/www/html

 

#mount nfs volume
mount -t nfs 01.23.45.67:/volume1/on/nas/server /mnt/backup

#Create .tar archive with incremental metadata /var/log/www.snar

tar –create \
–file=/mnt/backup/”backup_$(date +”%Y_%m_%d_%I_%M”).tar” \
–listed-incremental=/var/log/www.snar \
/var/www/html*

 

#umount nfs volume
umount /mnt/backup

=======================================================================================

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

nano /opt/backup/remove_old_bkp

 

#!/bin/bash
#remove backup older than 8 day

#mount nfs volume
mount -t nfs 01.23.45.67:/volume1/on/nas/server /mnt/backup

# remove files backup* older than 8 days
find /mnt/backup/backup* -mtime +8 -exec rm {} \;

# remove metadata file
rm -f /var/log/www.snar

#umount nfs volume
umount /mnt/backup

=======================================================================================

Задания в планировщик Cron

jobname: /etc/cron.d/backup_wwwroot_full

00 00 * * * root /opt/backup/backup_full

=======================================================================================
jobname: /etc/cron.d/backup_wwwroot_inc

00 8,16 * * * root /opt/backup/backup_incremental

=======================================================================================
jobname: /etc/cron.d/remove_wwwroot_backup

58 23 * * * root /opt/backup/remove_old_bkp

=======================================================================================