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

maximum
Аватар пользователя maximum
Отсутствует
Зарегистрирован: 21.06.2009

Итак у нас есть 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
Аватар пользователя porese
Отсутствует
Зарегистрирован: 25.12.2009

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

[img]http://i.imgur.com/oszoh.jpg[/img][img]http://slackware.com/~msimons/slackware/grfx/shared/SWtheDistro.jpg[/img]
maximum
Аватар пользователя maximum
Отсутствует
Зарегистрирован: 21.06.2009

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

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

#!/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
н/д
xeen
Отсутствует
Зарегистрирован: 07.08.2009

дохрена 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

xeen
Отсутствует
Зарегистрирован: 07.08.2009

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

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

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

н/д
xeen
Отсутствует
Зарегистрирован: 07.08.2009

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

maximum
Аватар пользователя maximum
Отсутствует
Зарегистрирован: 21.06.2009

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

н/д
xeen
Отсутствует
Зарегистрирован: 07.08.2009

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

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

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

porese
Аватар пользователя porese
Отсутствует
Зарегистрирован: 25.12.2009

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

[img]http://i.imgur.com/oszoh.jpg[/img][img]http://slackware.com/~msimons/slackware/grfx/shared/SWtheDistro.jpg[/img]

Галерея

Вот как-то так...

img

HP

img

omni pcx office (Alcatel)

img

Опрос

Какую из *nix-систем вы используете дома?
Debian
15%
Mandriva
6%
Ubuntu
28%
Kubuntu
4%
Gentoo
11%
Slackware
7%
FreeBSD
19%
РУС-BSD
1%
Open/NetBSD
0%
Использую только liveCD
1%
Такого дома не держу...
8%
Всего голосов: 256