Ежедневный бэкап с rsync, bash и cron

Аватар пользователя ReMMeR

backupДля простого и быстрого резервного копирования напишем простенький скрипт, который будет создавать ежедневный бекап нужных нам папок, а также складывать в папки с текущей датой файлы, который изменились или удалились.

Скрипт бэкапа с 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

Комментарии

Отправить комментарий

CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
1
5
z
P
F
y
Введите код без пробелов и с учетом верхнего/нижнего регистра.
Ленты новостей Ленты новостей
22:01:02|2018-09-20|CCBot/2.0 (https://commoncrawl.org/faq/)|54.224.166.141