Backup Linux сервера: различия между версиями

Материал из Ай да Linux Wiki
Перейти к навигации Перейти к поиску
(Новая страница: «= Backup сервера Linux = Будем сохранять резервные копии выбранных каталогов и файлов каждый ра...»)
 
м
 
Строка 40: Строка 40:
 
rm -rf $BDIR
 
rm -rf $BDIR
 
</syntaxhighlight>
 
</syntaxhighlight>
 
  
 
== Копия всего сервера ==
 
== Копия всего сервера ==
Строка 74: Строка 73:
 
<syntaxhighlight lang=bash>
 
<syntaxhighlight lang=bash>
 
# Backup all files on remote serv2
 
# Backup all files on remote serv2
 
 
ssh 10.0.0.4 "cd /; tar cvzf - . --exclude ./home/pm/backup --exclude ./home/pm/app --exclude ./usr/local/squid/var --exclude ./proc" > \
 
ssh 10.0.0.4 "cd /; tar cvzf - . --exclude ./home/pm/backup --exclude ./home/pm/app --exclude ./usr/local/squid/var --exclude ./proc" > \
 
/home/pavel/backup/serv2_backup_all.tar.gz
 
/home/pavel/backup/serv2_backup_all.tar.gz
Строка 86: Строка 84:
  
 
Если создать сертификат на сервер, то можно будет входить и без пароля, а тогда скрипт можно будет включить в {{Path|/etc/crontab}}. Без этого придётся вводить пароль и, соответственно, автоматического бэкапа не получится.
 
Если создать сертификат на сервер, то можно будет входить и без пароля, а тогда скрипт можно будет включить в {{Path|/etc/crontab}}. Без этого придётся вводить пароль и, соответственно, автоматического бэкапа не получится.
 +
 +
== Ссылки ==
 +
[http://sysadminwiki.ru/wiki/%D0%A0%D0%B5%D0%B7%D0%B5%D1%80%D0%B2%D0%BD%D0%BE%D0%B5_%D0%BA%D0%BE%D0%BF%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B2_Linux sysadminwiki.ru]
 +
 +
[[Категория:Руководства]]
 +
[[Категория:Net]]

Текущая версия на 04:16, 21 апреля 2011

Backup сервера Linux

Будем сохранять резервные копии выбранных каталогов и файлов каждый рабочий день и всего сервера один раз в неделю, с утра по понедельникам. Для этой цели используем два скрипта:

Копия важных файлов

/home/pavel/backup/backup.sh для ежедневной резервной копии:

# Backup main files

BDIR="/home/pavel/backup/data" #!! will be deleted after backup
LOGDIR=$BDIR/all_logs
DNSDIR=$BDIR/dns
CMDREPLY=$BDIR/cmd_reply.txt
PREFIX='/home/pavel/backup/'`hostname -s`-`date +%a`

mkdir $BDIR
mkdir $LOGDIR
mkdir $DNSDIR

# copy files to backup dir
cp -r /etc $BDIR
cp -r /var/lib/bind/etc $DNSDIR
cp -r /var/log $LOGDIR
cp /var/drweb/log/drwebd.log $LOGDIR
cp /usr/local/squid/var/logs/access.log $LOGDIR
cp /usr/local/squid/var/logs/cache.log $LOGDIR
cp /usr/local/squid/etc/squid.conf $BDIR

date > $CMDREPLY
echo "== iptables =============" >> $CMDREPLY
/sbin/iptables -t nat -L >> $CMDREPLY
echo "== route ================" >> $CMDREPLY
/sbin/route >> $CMDREPLY

#zip everything in the backup dir
tar -czvf $PREFIX.tar.gz $BDIR > $PREFIX.log

# clean up
rm -rf $BDIR

Копия всего сервера

/home/pavel/backup/backup_all.sh для резервного копирования всего сервера:

# Backup all files on this server

tar cvzf /home/pavel/backup/koks3_all.tar.gz / --exclude={"/proc","/sys","/tmp","/home","/var/spool/squid","/var/log","/var/cache/apt/archives"}

если регулярные выражения не поддерживаются, то можно каждый каталог, который мы не хотим помещать в резервную копию, отмечать параметром --exclude

cd /
tar cvzf - . --exclude ./home/pavel/backup --exclude ./home/pavel/.apt --exclude ./usr/local/squid/var --exclude ./var/cache/apt/archives \
--exclude ./proc > /home/pavel/backup/teo_backup_all.tar.gz

Теперь добавим запуск этих скриптов в /etc/crontab:

# backup of the system
0 23 * * 1-5 root /home/pavel/backup/backup.sh
0 23 * * 0 root /home/pavel/backup/backup_all_teo.sh

Backup удалённого сервера Linux

Ситуация: на удалённом сервере (10.0.0.4) маленький жёсткий диск и резервная копия там не поместиться. В этом случае создавать и сохранять резервную копию удалённого сервера будем на нашем сервере. Создаём скрипт /home/pavel/backup/backup_all_remote.sh:

# Backup all files on remote serv2
ssh 10.0.0.4 "cd /; tar cvzf - . --exclude ./home/pm/backup --exclude ./home/pm/app --exclude ./usr/local/squid/var --exclude ./proc" > \
/home/pavel/backup/serv2_backup_all.tar.gz

Для выполнения этого скрипта нужно, чтоб на удалённом сервере был разрешён вход пользователю root по протоколу ssh, т.е. в /etc/ssh/sshd_config:

PermitRootLogin yes

Если создать сертификат на сервер, то можно будет входить и без пароля, а тогда скрипт можно будет включить в /etc/crontab. Без этого придётся вводить пароль и, соответственно, автоматического бэкапа не получится.

Ссылки

sysadminwiki.ru