Ежедневный бэкап с rsync, bash и cron
Для простого и быстрого резервного копирования напишем простенький скрипт, который будет создавать ежедневный бекап нужных нам папок, а также складывать в папки с текущей датой файлы, который изменились или удалились.
Скрипт бэкапа с rsync
В свамом rsync нас интересуют несколько параметров:
rsync -b --delete --backup-dir=backup_dir source dest
-b - ключ, указывающий, что нам нужно создавать резервную копию
--delete Удалять любые файлы на приемной стороне, которых нет на передающей.
- --backup-dir создавать резервную копию в этом каталоге ( не полную резервную копию, а только тех файлов, которые уадились или изменились с последнего резервного копирования)
- Еще полезная команда в скрипте - mkdir -p path - cоздаст все дерево подпапок без лишних вопросов
- Сам скрипт :
#!/bin/bash
d=/home/backup
dirs='/etc
/home/user
/var/www/html
'
date=`date +%Y_%m/%d`
p="$d/z$date"
mkdir -p $p
for i in $dirs; do
echo "Doing $i #################################################################"
mkdir -p $p/$i
mkdir -p $d/main/$i
rsync -a -r -v -t -h --progress --delete-excluded -b --delete --backup-dir=$p/$i $i $d/main/$i
done
cd $d
./_remove_empty_folders.sh $p
Настройка crontab
В данном конкретном случае нам бужен бэкап раз в сутки. Поэтому и добавляем соответствующую строку в crontab :
crontab -l > crontab
Правим кронтаб любимым редактором
mcedit cronttab
и добавляем в конец строку
15 6 * * * /home/backup/_backup_all.sh
сохраняем и выполняем
crontab crontab
Бэкап у нас настроен ежедневно на 6:15 утра.
Удаление пустых папок
Так как rsync в папке с датой создает всё дерево каталогов, которое только мешает, на нужен небольшой скрипт для удаления пустых папок. Навходе он получает верхнюю папку, в коей и ее подпапках бесчинствует.
_remove_empty_folders.sh :
#!/bin/bash
pth=$1
find $pth -type d -empty -delete
Комментарии
Отправить комментарий