User Tools

Site Tools


rootserver:backup

Backup-Server

Als Backup-Server dient im Moment mein NAS, ein Western Digital MyBook World Edition.
Dort läuft ein cron-Job. Wie crontab einrichtet wird, sagt http://www.chrisz.de/?p=544.
Das Paket rsync ist auf dem WD MyBook schon drauf, ssh (und scp) ebenfalls.

rsnapshot auf WD MyBook

Info unter http://www.rsnapshot.org/

/opt/bin/ipkg install rsnapshot

Da kommen zig Fehlermeldungen (siehe Ausschnitt), die aber wahrscheinlich kein Problem darstellen:

...
/opt/bin/update-alternatives: /opt/bin/update-alternatives: 185: sort: not found
update-alternatives: removing //opt/bin/whoami as no more alternatives exist for it
/opt/bin/update-alternatives: /opt/bin/update-alternatives: 185: sort: not found
update-alternatives: removing //opt/bin/yes as no more alternatives exist for it
...
Successfully terminated.

Beachten: Die Trenner bei rsnapshot.conf sind meistens Tabs!

/opt/etc/rsnapshot.conf
config_version  1.2
snapshot_root   /shares/backup/rsnapshot/
cmd_cp          /bin/cp
cmd_rm          /bin/rm
cmd_rsync       /opt/bin/rsync
cmd_ssh         /usr/bin/ssh
cmd_du          /usr/bin/du
interval        daily   7
interval        weekly  4
interval        monthly 6
link_dest       1
verbose         2
loglevel        3
logfile         /shares/backup/rsnapshot/log/rsnapshot.log
lockfile        /opt/var/run/rsnapshot.pid
backup  /etc/                   nas1/
backup  /opt/etc/               nas1/
 
backup  user1@192.168.0.164:/home/user1/        s4y_staging/
        ssh_args=-i /root/.ssh/rsync_key
 
backup  rsynusr1@wellcrafted.de:/               wellcrafted.de/
        ssh_args=-i /root/.ssh/rsync_key,+rsync_long_args=--rsync-path="sudo /usr/bin/rsync" --include-from=/opt/etc/s4y_backup_files.txt

Ausschnitt aus der –include-from Datei:

- cache/
- tmp/
- /bin/
- /boot/
- /dev/
- /initrd/
- /lib/
- /media/
- /mnt/
- /opt/
- /proc/
- /sbin/
- /srv/
- /sys/
- /usr/
+ /etc/
+ /etc/**
+ /home/
+ /home/**
+ /root/
+ /root/**
+ /var/
+ /var/vmail/
+ /var/vmail/**
+ /var/www/
+ /var/www/**
+ /var/backups/
+ /var/backups/mysql/
+ /var/backups/mysql/latest/
+ /var/backups/mysql/latest/**
- *

TODO Debian Documentation says:
The main things you'll want to back up are the contents of /etc, /var/lib/dpkg, /var/lib/apt/extended_states and the output of dpkg –get-selections “*” (the quotes are important). If you use aptitude to manage packages on your system, you will also want to back up /var/lib/aptitude/pkgstates.

FIXME in Liste ergänzen; cron-job für dpkg –get-selections “*”

scp ohne Passwortabfrage

Auf WD MyBook (ssh root@mybook; pwd=welc0me) Keyfile generieren:

/usr/bin/ssh-keygen -t dsa -f /root/.ssh/rsync_key -N ""

Public Key zum Webserver kopieren

scp /root/.ssh/rsync_key.pub rsynusr1@mywebsvr:~/.ssh/

Dort an die authorizedkeys Datei anhängen; Rechte überprüfen für .ssh und authorizedkeys (600!)

ssh rsynusr1@mywebsvr
cd ~/.ssh
cat rsync_key.pub >> authorized_keys
chmod 600 authorized_keys
rm rsync_key.pub

Testen

ssh -l rsynusr1 -i ~/.ssh/rsync_key mywebsvr

Bei Problemen ssh mit Option -v (verbose) aufrufen, das versteht man ganz gut. Am Remote Server in /var/log/messages nachsehen, evtl. steht da so etwas:

Oct 29 08:49:42 mywebsvr auth.info sshd[4791]: Authentication refused: bad ownership or modes for directory /home/rsynusr1

Der sshd reagiert nicht auf authorized_keys, wenn das Verzeichnis oder die Datei mit Schreibrechten für andere als dem User belegt sind.
Dem kann man dann damit beikommen:

cd
chmod go-w ~/ ~/.ssh ~/.ssh/authorized_keys

cron jobs

crontab
# Minute   Stunde   Tag   Monat   Wochentag   Befehl
0 1 * * * /opt/bin/rsnapshot daily
0 2 * * 1 /opt/bin/rsnapshot weekly
0 3 1 * * /opt/bin/rsnapshot monthly

Mails senden

Root Server

User einrichten

useradd -m rsynusr1

User in sudoers eintragen:

visudo

Zeile einfügen:

rsynusr1     ALL=NOPASSWD: /usr/bin/rsync

FIXME User sollte eingeschränkte shell haben; Frage: braucht er überhaupt eine? Passt scponly bzw. scponlyc?

rsync auf root-server

Prüfen ob vorhanden (es sollte eine 3.x-Version sein!):

dpkg-query -S rsync

Installieren:

apt-get install rsync

script for adhoc-backup (test):

rsync -aze "ssh -i /root/.ssh/rsync_key" --stats user1@192.168.0.164:/home/user1/rsync/ /shares/Download/backup/

Scripte vor Backup

MySQL

User anlegen (read-only, lock tables)

# mysql --user=admin --password

mysql> create user 'scott'@'localhost' identified by 'tiger';
Query OK, 0 rows affected (0.05 sec)

mysql> grant select, lock tables on *.* to 'scott'@'localhost';
Query OK, 0 rows affected (0.00 sec)

AutoMySQLBackup konfigurieren:

cd /root
cp download/automysqlbackup.sh.2.5 bin/automysqlbackup.sh
cd bin
chmod o= automysqlbackup.sh
chmod u=rwx automysqlbackup.sh
cd /etc/cron.daily
ln -s /root/bin/automysqlbackup.sh automysqlbackup
mkdir /var/backups/mysql
chmod o= /var/backups/mysql

Ausschnitt aus automysqlbackup.sh:

MYSQL_DUMP_OPT="--events --ignore-table=mysql.event"
 
USERNAME=scott
PASSWORD=tiger
DBHOST=localhost
DBNAMES="all"
BACKUPDIR="/var/backups/mysql"
MAILCONTENT="log"
MAILADDR="mymail@goebl.com"
MDBNAMES="mysql $DBNAMES"
DBEXCLUDE="information_schema performance_schema"
SEPDIR=yes
LATEST=yes
 
# === ADVANCED OPTIONS ( Read the doc's below for details )===
OPT="--quote-names --opt $MYSQL_DUMP_OPT"

Avoid --events Error

Since the update to mysql@5.1.72 I get the warning:

-- Warning: Skipping the data of table mysql.event. Specify the --events option explicitly.

Didn't want to update to automysqlbackup@3.0rc6 so I changed the script like this:

# add following line (as the first non-comment-line)
MYSQL_DUMP_OPT="--events --ignore-table=mysql.event"

# ....

# changed Line ~347 to
OPT="--quote-names --opt $MYSQL_DUMP_OPT" # OPT string for use with mysqldump

rootserver/backup.txt · Last modified: 2014/01/09 17:26 by hgoebl