Скрипт бэкапа файлов
Если нам нужен простой скрипт бэкапа файлов, который можно задать в cron, то можно сделать примерно таким образом.
(Вы еще не делаете бэкапов? Тогда мы берем молоточки для жестких дисков и идем к вам!)
Ротационный backup (резервное копирование) файлов и папок
Создадим у себя папку, где будут храниться бэкапы. По сути, вы можете указать любое место, которое вам нравится. В нашем случае мы создадим папку в домашней директории пользователя user. Хотя я бы рекомендовал для этих дел все-таки завести отдельное хранилище.:
mkdir /home/user/backups
Копируем данный текст скрипта в любой файл, который вам нравится, например backup_site. В данном тексте мы укажем сначала переменные, указывающие что копировать, куда копировать и что пропустить (в нашем случае мы копируем wikiadmin.net в backup и не трогаем cache):
#!/bin/bash #указываю переменные: куда копировать, что копировать и какую папку не копировать (например, с временными файлами) export BACKUP_FOLDER="/home/user/backups" export TARGET="/var/www/html/wikiadmin.net" export EXCLD="cache" #ротация rm -rf $BACKUP_FOLDER/03 mv $BACKUP_FOLDER/02 $BACKUP_FOLDER/03 mv $BACKUP_FOLDER/01 $BACKUP_FOLDER/02 mkdir $BACKUP_FOLDER/01 #сама архивация tar cvjf $BACKUP_FOLDER/01/site-wikiadmin.net-`date +%Y-%m-%d-%H-%M-%S`.tar.bz2 $TARGET --exclude=$EXCLD #эта строка нужна, чтобы крон на почту вывел название (проверить дату) и размер архива. ls -lah $BACKUP_FOLDER/01/
Теперь выставляем его в cron с нужной периодичностью и пусть работает. Стоит настроить, чтобы сообщение от выполнения операции приходили на почту, чтобы проверять результат. Как раз последняя строчка ls -lah $BACKUP_FOLDER/01/ и покажет дату создания архива, размер и т.д. Проще утром просмотреть пару таких отчетов, нежели лазить по каталогам и смотреть, все ли забэкапилось.
Восстановление
Тут все просто, достаточно разархивировать нужный вам архив командой tar -xvjf. Например:
tar -xvjf имя.архива.tar.bz2
Копирование по датам
Задачка: в конце рабочего дня все накопленные файлы разговоров Asterisk отправлять по папкам с датами. То есть зашли в год, потом месяц, потом в день и нашли то, что нам нужно. Например, это можно сделать так:
#!/bin/bash SOURCE="home/recording" BKDIR="home/backup" DAY=`date +%d` MONTH=`date +%m` YEAR=`date +%Y` mkdir /$BKDIR/$YEAR/ mkdir /$BKDIR/$YEAR/$MONTH mkdir /$BKDIR/$YEAR/$MONTH/$DAY cp -v -r /$SOURCE/*.wav /$BKDIR/$YEAR/$MONTH/$DAY/ rm -rf /$SOURCE/*