Комментарии

Галерея

Опрос

Из каких стран идет больше всего спама, попыток взлома на ваши серверы?:

Простенький скрипт для бекапа важных директорий (FreeBSD)

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

Итак у нас есть 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 скрипт, безотказно работает на моей фре уже очень долго Зомби

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

Скрипт хорош.
Я думаю стоит в него включить бекап mysql баз, так сказать образец, ибо у многих есть базы, а сохранность данных не обеспечена Зомби

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

Это будет как то так:
Для снятия дампа баз данных мы будет использовать 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

все rotate
эти строки добавляем в предидущий скрипт, и наслождаемся...

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

полностью скрипт будет выглядеть так:

#!/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

Аватар пользователя maximum
xeen:
Ах, да, вот ещё...
#создаем директории для резервирования копий
mkdir /data/Files/backup/sys_backup/$date
НАДО ТАК
mkdir -p /data/Files/backup/sys_backup/$date

не прошло и года... =)

Хозяяяяиииииин!!!
А еще можно пути в качестве переменных или скрипту давать, или в начале самого скрипта задавать...
Также логирование действий скрипта не помешает...
Заменить переменные схожие с командами...типа $date заменить надо...
Желаю удачи, хозяин ^_^

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

xeen, хорошие идеи, может ты напишешь скрипт? а мы наберемся опыта =)

Логично, если я буду знать больше хозяина, я ему буду нужен....^_^

Аватар пользователя Celt
xeen:
Логично, если я буду знать больше хозяина, я ему буду нужен....^_^

ой ты какой трусливый заяс серенький Фига

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

cp <откуда> <куда>
вот это да!