Простой скрипт бэкапа встроенными возможностями системы с копированием на шару и удалением через определенное время
Сам скрипт:
#!/bin/sh ### Переменные TIME=`date +%Y-%m-%d` # Что бэкапить WHAT=/home/dir # Куда класть бэкап WHERE=/home/backup/ # Куда копировать бэкап COPY=/mnt/backup/ ### Сам бэкап # Архивация нужного каталога в файл tar -cvpzf $WHERE/$TIME.tgz $WHAT > /dev/null # Копировать файл бэкапа на шару cp $WHERE/$TIME.tgz $COPY # Удалить файлы бэкапов месячной давности в обоих каталогах find $WHERE -mtime +30 -print -delete find $COPY -mtime +30 -print -delete
В результате выполнения скрипта будет сделан архив каталога /home/dir
под названием 2014-03-06.tgz
, помещен в /home/backup/
и затем скопирован в /mnt/backup/
.
Так же будут удалены файлы бэкапов месячной давности.
При помощью этого способа можно бэкапить систему полностью. Скрипт будет выглядеть так:
#!/bin/sh TIME=`date +%Y-%m-%d` WHAT=/ WHERE=/home/backup/ COPY=/mnt/backup/ tar -cvpzf $COPY/$TIME.tgz --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/sys --exclude=$WHAT $WHAT > /dev/null cp $WHERE/$TIME.tgz $COPY find $WHERE -mtime +30 -print -delete find $COPY -mtime +30 -print -delete
WHAT=/
т.е. бэкапим root каталог.
Параметр --exclude
говорит о том какие каталоги надо пропустить при создании архива.
В данном случае каталоги /proc, /lost+found, /mnt, /sys
и $WHAT
(каталог куда складывается сам файл бэкапа) исключаются.
Если сильно хочется, можно положить в крон для ежедневного бэкапа раз в сутки в три утра:
00 3 * * * root /root/scripts/my_dir_backup.sh