Zálohovat by měl dneska každý a ten kdo si myslí, že ne, tak dvakrát.
Pokud se útočník dostane na server jsou nám zálohy plat prtný, protože může s dostatečnými právy smáznout vše, tedy i naše zálohy.
Proto k redundanci dat přistupuji s SSH, RSYNC, CRONem zodpovědně a dělám ještě replikaci dat na jiný stroj v síti, který ani nemusít být většinou času online...
BTW: radši ani nebudu těm méně paranoidnějším odhalovat celou pravdu, veškerá data mám na 4ks HDD (RAID1[server] → LAN → RAID1[PC])
Nebudeme nic potřebovat, vše je defaultně v bUbuntu... (až na sshd)
[SERVER]
Ošéfíme nejdřív přihlašování ze serveru na PC skrze SSH bez nutnosti zadat heslo
user@server:~$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_dsa): [enter]
Enter passphrase (empty for no passphrase): [enter]
Enter same passphrase again: [enter]
Your identification has been saved in /home/user/.ssh/id_dsa.
Your public key has been saved in /home/user/.ssh/id_dsa.pub.
The key fingerprint is:
55:94:94:47:c7:4c:47:36:7c:d3:26:44:89:9f:c1:58 user@server
The key's randomart image is:
+--[ DSA 1024]----+
| o |
| o o |
| o o o |
| o o o |
| o o o |
| o o |
| o |
+-----------------+
Vygenerovaný klíč je potřeba uložit na PC (stále z SHHčka serveru)
user@server:~$ ssh-copy-id -i ~/.ssh/id_dsa.pub user@10.0.2.250
user@10.0.2.250's password:
Now try logging into the machine, with "ssh 'user@10.0.2.250'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
user@server:~$ ssh 10.0.2.250
user@pc:~$ exit
logout
Connection to 10.0.2.250 closed.
user@server:~$
Připravíme si místo pro zálohy a soubory pro dávky
user@server:~$ sudo mkdir /backups
user@server:~$ sudo mkdir /backups/current
user@server:~$ sudo nano /backups/current/Backups.sh
user@server:~$ sudo nano /backups/current/Remote.sh
Backups.sh
#!/bin/sh
#přesun aktuálních záloh do složky /backups/
mv /backups/current/* /backups/
#záloha konfiguračních souborů
tar czf /backups/current/etc_backup-`date '+[%Y-%m-%d][%A][%T]'`.tar.gz /etc
#záloha MySQL zdrojových souborů pro databáze
tar czf /backups/current/mysql_backup-`date '+[%Y-%m-%d][%A][%T]'`.tar.gz /var/lib/mysql
#záloha webových stránek
tar czf /backups/current/www_backup-`date '+[%Y-%m-%d][%A][%T]'`.tar.gz /root/stránek
#smazání záloh starších 7 dní
find /backups/ -mtime +7 -delete
Remote.sh
#!/bin/sh
#Vzdalene nahrani nejnovejsich zaloh na mischel
rsync --delete-before -ae ssh /backups/current/ user@10.0.2.250:/home/user/server/backups/
user@server:~$ sudo crontab -e
# takhle by to mělo vypadat
## m h dom mon dow command
01 04 * * * /backups/current/Backups.sh
[sudo] password for user:
crontab: installing new crontab
user@server:~$ sudo crontab -l
#čeknem jestli to tak fakt vypadá
user@server:~$ crontab -e
# takhle by to mělo vypadat
## m h dom mon dow command
01 20 * * * /backups/current/Remote.sh
[sudo] password for user:
crontab: installing new crontab
user@server:~$ crontab -l
#čeknem jestli to tak fakt vypadá
PC, ta nejtěžší část ^^
user@PC:~$ sudo apt-get install ssh
BTW: na obou strojích mám stejného usera pod kterým je prováděna komunikace pomocí SSH,
jinak je potřeba zadávat ve tvaru: "ssh user@host"!
BTW2: čas si cronu je třeba nastavit podle podmínek, já vim, že jsem většinou večer na PC, proto volím tento čas...
BTW3: na straně serveru jsem ještě nestihl vyřešit hromadění starých záloh, takže je promáznout ručně, nebo napsat upgrade a přidat sem...EDIT: Tak jsem doplnil i mazání záloh starších sedmi dní... Stálo by za to možná dělat jednu kompletní a pak jenom přírůstky...
Snad se bude líbit snouman