Итак, имеем свой веб-сервер на ubuntu (или еще на чем-нибудь, почти неважно). И надо нам на этом сервере организовать резервное копирование наших сайтов и другой полезной информации. Передавать, например, на FTP.
Для начала надо собрать кроном все данные для архивации в одно место на диске, заархивировать, а потом этот архив передать на FTP.
1. Создаем скрипт.
/srv/www# touch backup.sh
даем права на исполнение
/srv/www# chmod +x backup.sh
содержание.
#!/bin/sh
#создаем папку с бэкапом
#mkdir /srv/www-backup
mkdir /srv/www-backup/`date +%d-%m-%Y`
#делаем в него бэкап файлов веб-сервера, самого скрипта и конфигов апача. Для freebsd путь к апачу будет /usr/local/etc/apache2
cp -r /srv/www/ /srv/www-backup/`date +%Y-%m-%d`
cp -r /etc/apache2 /srv/www-backup/`date +%Y-%m-%d`-apache2-config
#бэкапим базы данных
/usr/bin/mysqldump -uLOGIN -pPASSWORD DATABASE_NAME > /srv/www-backup/`date +%Y-%m-%d`/`date +%Y-%m-%d`-DATABASE_NAME.sql
#создаем архив
zip -r /srv/www-backup/`date +%Y-%m-%d`-backup.zip /srv/www-backup/`date +%Y-%m-%d`
#удаляем каталог
rm -rf /srv/www-backup/`date +%Y-%m-%d`
# трем архивы старше 14 дней
find /srv/www-backup -name "*.zip" -mtime +14 -delete
# Копирование резервного архива на удаленный FTP-сервер
ftpuser='username'
password='password'
ftpserver='IP of FTP-server'
file=`date +%Y-%m-%d`'-backup.zip'
ftp -n $ftpserver <user $ftpuser $password
put /srv/www-backup/$file /www-backup$file
bye
End
2. Добавляем скрипт в крон.
Открываем планировщик
crontab -e
Вставляем наше задание
00 05 * * * /bin/sh /srv/www/backup.sh >/dev/null 2>&1
И наслаждаемся. Каждые сутки в 5 утра будет создаваться новая полная копия наших сайтов.