Backup VPS w systemie Debian

Backup VPS w systemie Debian

Dzis będzie o backup moje VPS i rozwiazaniach z których to ja korzystam, czyli backup mysql oraz plików, przy czym częśc backupu odbywa się lokalnie a częśc zdanie na mojego nas-a.

AutoMySQLBackup

Program banalna. Jak sama nazwa mówi jest to program do automatycznej kopii baz danych MySQL.

apt-get install automysqlbackup

Skrypt jest uruchamiany z cron-a dobowa i przy podstawowej konfiguracji dump-y bazy składuje w /var/lib/automysqlbackup, jednak oczywiście kilka parametrów można zmienić i u mnie wyglada to tak:

vim /etc/default/automysqlbackup
BACKUPDIR="/backup/sql"
MAILADDR="moj@adres-email.pl" # mail który dostanie info o backupie

I to wszystko :) jak widać moje dumpy są w /backup/sql.

rdiffBackup

rdiffBackup używam do kopii zapasowej stron internetowych, a dokladniej zmian w plikach. Program jest banalny :), jednak na początek musimy go zainstalować.

apt-get install rdiff-backup

Teraz aby wszystko zadziałało musimy zrobić wpisy w cronie.

crontab -e
00 00 * * * rdiff-backup --remove-older-than 30D --force /backup/rdiff/
10 * * * * rdiff-backup -v0 --exclude-regexp 'log' --exclude-regexp 'cache' /web/ /backup/rdiff/

Więc jak widać w pierwszej linii kasujemy pliki starsze niż 30 dni oraz robimy backup.

rSnaphot

Tą aplikacja, a raczej skryptem dokonuje backupu całościowego, dobowego swojego VPS na NAS-a.
W pierwszej kolejności dodamy do serwera backupowego klucz ssh, tak aby backupy wykonywały się samoczynnie.
Generowanie klucza (jeżeli takiego nie ma):

ssh-keygen –t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
The key's randomart image is:

Po wygenerowaniu nowego klucza wgrywamy do na serwer backupu:

ssh-copy-id -i /root/.ssh/id_rsa.pub root@server-backup.pl

Testujemy, powinno zadziałać ssh bez hasła

ssh root@server-backup.pl

Instalacja oprogramowania:

apt-get install rsnapshot

I chwila konfiguracji, trzeba pamiętać iż w pliku konfiguracyjnym nie używamy spacji a tabulatory

vim /etc/rsnapshot.conf
snapshot_root   /raid/backup/vps/ #wskazujemy miejsce składowania backupów

# ile beda trzymane backupy w rotacji
retain          daily   31 # ile dni
retain          weekly  4 # ile tygodni
retain          monthly 12 #ile miesiecy

#definicje backupow
backup  /etc/           etc-local/ # lokalny etc
backup  root@4.5.6.7:/      vps/ #backup samego mojego vps
backup  root@1.2.3.4:/   vps2/ #jakis inny backup innej maszyny

Teraz pozostanie nam do skonfigurowania cron, wg. uznania.

vim /etc/cron.d/rsnapshot
# 0 */4         * * *           root    /usr/bin/rsnapshot hourly
30 1    * * *           root    /usr/bin/rsnapshot daily
0  3    * * 1           root    /usr/bin/rsnapshot weekly
30 2    1 * *           root    /usr/bin/rsnapshot monthly

Godzinowe backupy nie są u mnie używane więc # :)

etckeeper

A to ciekawa aplikacja która pilnuje nam katalogu etc, co też widać gdy działa apt-get.

apt-get install etckeeper

I to w zasadzie wszystko :)
Aplikacja uruchamiana jest z crona w katalogu /etc/cron.daily
Teraz cała zabawa polega na operowaniu bzr-em. Przykładowy log

 $ bzr log | more
------------------------------------------------------------
revno: 428
committer: root 
branch nick: 8px /etc repository
timestamp: Mon 2014-11-17 08:19:04 +0100
message:
  saving uncommitted changes in /etc prior to apt run
------------------------------------------------------------
revno: 427
committer: root 
branch nick: 8px /etc repository
timestamp: Sun 2014-11-16 19:38:07 +0100
message:
  committing changes in /etc after apt run

  Package changes:
  -jetty8 8.1.3-4
  -libjetty8-extra-java 8.1.3-4
  -libjetty8-java 8.1.3-4
------------------------------------------------------------
revno: 426
committer: root 
branch nick: 8px /etc repository
timestamp: Sun 2014-11-16 19:37:33 +0100
message:
  saving uncommitted changes in /etc prior to apt run

Zamiast bzr można używać też dla przykładu git-a.
I to koniec na dziś :)