Итак у нас есть FreeBSD + жизненоважные директории, нужно их забекапить... бекап будет делаться обычным архивированием файлов.
Создаем файл скрипта, пример: backup_script.sh
делаем его исполняемым: chmod a+x backup_script.sh
Далее приведен листинг скрипта:
#!/bin/sh #дата бекапа, далее будет подставляться в имя директории бекапа $date date=`date "+%Y_%m_%d"`; echo "-=BackUp script starting [$date]=-"; #создаем директории для резервирования копий mkdir /data/Files/backup/sys_backup/$date sync #теперь собираем tar-архив и сжимаем его gzip'ом, выбрав при этом 9 уровень компрессии tar cvf - /home | gzip -9c > /data/Files/backup/sys_backup/$date/backup_home.tar.gz sync tar cvf - /etc | gzip -9c > /data/Files/backup/sys_backup/$date/backup_etc.tar.gz sync tar cvf - /usr/local/etc | gzip -9c > /data/Files/backup/sys_backup/$date/backup_usr_local_etc.tar.gz sync tar cvf - /usr/local/www | gzip -9c > /data/Files/backup/sys_backup/$date/backup_usr_local_www.tar.gz sync tar cvf - /var | gzip -9c > /data/Files/backup/sys_backup/$date/backup_var.tar.gz sync echo "-=BackUp script stopping [$date]=-"; exit 0
Вот собственно и все, что касается линукса, то наверное все так же, кроме путей до директорий.
Этот скрипт также можно расширить, например для бекапа баз данных, например mysql или же для дампа БД 1C
Данный скрипт будет актуален для домашнего использования, в остальных случаях нужно использовать dump/restore
Может быть есть какие то замечания или дополнения?
P.S скрипт, безотказно работает на моей фре уже очень долго 
Скрипт хорош.
Я думаю стоит в него включить бекап mysql баз, так сказать образец, ибо у многих есть базы, а сохранность данных не обеспечена 
Это будет как то так:
Для снятия дампа баз данных мы будет использовать mysqldump (mysqldump - a database backup program)
для бекапа я завел отдельного пользователя с такими правами:
GRANT SELECT , FILE , LOCK TABLES ON * . * TO 'backup'@'localhost' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
т.е. этот пользователь может делать выборку баз данных и импорт/экспорт баз в файл, а так же может накладывать блокировку на чтение или запись (о блокировках в mysql можно почитать тут)
итак:
#команда которая будет выполняться (коннект к серверу) #!!!обратите внимание, указывать пароль нужно именно в таком виде как я привел ниже, т.е. -pпароль (никаких пробелов, иначе скрипт будет ожидать ввода пароля) mysql='mysqldump -u backup -h localhost -ppasswd'; #здесь все понятно, $mysql коннектимся к серверу, -all-databases все базы данных, и в архив =) $mysql --all-databases | gzip -9c > /data/Files/backup/sys_backup/$date/mysql_all_dump.gz sync
все 
эти строки добавляем в предидущий скрипт, и наслождаемся...
полностью скрипт будет выглядеть так:
#!/bin/sh #дата бекапа, далее будет подставляться в имя директории бекапа $date date=`date "+%Y_%m_%d"`; mysql='mysqldump -u backup -h localhost -ppasswd'; echo "-=BackUp script starting [$date]=-"; #создаем директории для резервирования копий mkdir /data/Files/backup/sys_backup/$date sync #теперь собираем tar-архив и сжимаем его gzip'ом, выбрав при этом 9 уровень компрессии tar cvf - /home | gzip -9c > /data/Files/backup/sys_backup/$date/backup_home.tar.gz sync tar cvf - /etc | gzip -9c > /data/Files/backup/sys_backup/$date/backup_etc.tar.gz sync tar cvf - /usr/local/etc | gzip -9c > /data/Files/backup/sys_backup/$date/backup_usr_local_etc.tar.gz sync tar cvf - /usr/local/www | gzip -9c > /data/Files/backup/sys_backup/$date/backup_usr_local_www.tar.gz sync tar cvf - /var | gzip -9c > /data/Files/backup/sys_backup/$date/backup_var.tar.gz sync echo "-=Mysql dumping start=-"; $mysql --all-databases | gzip -9c > /data/Files/backup/sys_backup/$date/mysql_all_dump.gz sync echo "-=mysql dumping stopping=-"; echo "-=BackUp script stopping [$date]=-"; exit 0
ls -l /data/Files/backup/sys_backup/ drwxr-xr-x 2 maxx wheel 512 7 мар 23:04 2009_03_07
ls -l /data/Files/backup/sys_backup/2009_03_07 -rw-r--r-- 1 maxx wheel 233037 7 мар 23:01 backup_etc.tar.gz -rw-r--r-- 1 maxx wheel 1275908922 7 мар 23:01 backup_home.tar.gz -rw-r--r-- 1 maxx wheel 1712682 7 мар 23:01 backup_usr_local_etc.tar.gz -rw-r--r-- 1 maxx wheel 96320650 7 мар 23:03 backup_usr_local_www.tar.gz -rw-r--r-- 1 maxx wheel 51847460 7 мар 23:04 backup_var.tar.gz -rw-r--r-- 1 maxx wheel 1842900 7 мар 23:04 mysql_all_dump.gz
дохрена sync..
#!/bin/sh
#дата бекапа, далее будет подставляться в имя директории бекапа $date
date=`date "+%Y_%m_%d"`;
mysql='mysqldump -u backup -h localhost -ppasswd';
echo "-=BackUp script starting [$date]=-";
#создаем директории для резервирования копий
mkdir /data/Files/backup/sys_backup/$date
НАХРЕН УБРАТЬ!
sync
НАХРЕН УБРАТЬ!
#теперь собираем tar-архив и сжимаем его gzip'ом, выбрав при этом 9 уровень компрессии
tar cvf - /home | gzip -9c > /data/Files/backup/sys_backup/$date/backup_home.tar.gz
НАХРЕН УБРАТЬ!
sync
НАХРЕН УБРАТЬ!
tar cvf - /etc | gzip -9c > /data/Files/backup/sys_backup/$date/backup_etc.tar.gz
НАХРЕН УБРАТЬ!
sync
НАХРЕН УБРАТЬ!
tar cvf - /usr/local/etc | gzip -9c > /data/Files/backup/sys_backup/$date/backup_usr_local_etc.tar.gz
НАХРЕН УБРАТЬ!
sync
НАХРЕН УБРАТЬ!
tar cvf - /usr/local/www | gzip -9c > /data/Files/backup/sys_backup/$date/backup_usr_local_www.tar.gz
НАХРЕН УБРАТЬ!
sync
НАХРЕН УБРАТЬ!
tar cvf - /var | gzip -9c > /data/Files/backup/sys_backup/$date/backup_var.tar.gz
добавить!
sync&&sync&&sync
добавить!
echo "-=Mysql dumping start=-";
$mysql --all-databases | gzip -9c > /data/Files/backup/sys_backup/$date/mysql_all_dump.gz
добавить!
sync&&sync&&sync
добавить!
echo "-=mysql dumping stopping=-";
echo "-=BackUp script stopping [$date]=-";
exit 0
Ах, да, вот ещё...
#создаем директории для резервирования копий
mkdir /data/Files/backup/sys_backup/$date
НАДО ТАК
mkdir -p /data/Files/backup/sys_backup/$date
Ах, да, вот ещё...
#создаем директории для резервирования копий
mkdir /data/Files/backup/sys_backup/$date
НАДО ТАК
mkdir -p /data/Files/backup/sys_backup/$date
не прошло и года... =)
Хозяяяяиииииин!!!
А еще можно пути в качестве переменных или скрипту давать, или в начале самого скрипта задавать...
Также логирование действий скрипта не помешает...
Заменить переменные схожие с командами...типа $date заменить надо...
Желаю удачи, хозяин ^_^
xeen, хорошие идеи, может ты напишешь скрипт? а мы наберемся опыта =)
Логично, если я буду знать больше хозяина, я ему буду нужен....^_^
Логично, если я буду знать больше хозяина, я ему буду нужен....^_^
ой ты какой трусливый заяс серенький 
cp <откуда> <куда>
вот это да!