Linux: Příklady zálohování - rsync, tar, rdiff backup, dd, ftp, ssh, mysql
Ohledně zálohování na linuxových systémech toho lze všude na netu nalézt hodně, ale tak nějak chybí jednoduchý článek se základními příklady použítí nástrojů rsync, tar, rdiff backup, dd, ftp, ssh, dump mysql - proto čtěte dále.
Zálohování MySQL
- provede zálohu MySQL databáze "mojedatabaze"
mysqldump -u root -h localhost -pheslo mojedatabaze | gzip -9 > mojedatabaze.sql.gz
- provede zálohu všech MySQL databází
mysqldump -u root -h localhost -pheslo --all-databases | gzip -9 > vsechnydatabaze.sql.gz
Zálohování vzdáleně přes rsync
- provede zálohu místního adresáře /home/hanz
do vzdáleného umístění 192.168.7.77:/media/data/
s vynecháním souborů .txt
rsync -av --exclude="*.txt" /home/hanz root@192.168.7.77:/media/data/
#někdy se uvádí použití exclude a include i bez '=', ale manuál se zmiňuje jen o variantě s '='
Tar (komprimovaná) záloha přes SSH
- přihlásí se na vzdálené umístění 192.168.85.252, z něj zazálohuje /var/lib/mysql
a /var/www
do lokálního /home/backups/zaloha.tar.gz
s komprimací gzip.
ssh root@192.168.85.252 | tar -czvf "/home/backups/zaloha.tar.gz" -P /var/lib/mysql /var/www
Inkrementální (přírůstková) záloha (rdiff-backup)
- bude automatizovaně zálohovat (přírůstky) z /home
do umítění /media/usb/backup
kromě /home/temp
rdiff-backup --exclude /home/temp --exclude "**/.*" /home /media/usb/backup
rdiff-backup - vyjímka na skryté soubory a adresáře (.*)
rdiff-backup --exclude "**/.*" /home /media/usb/backup
rdiff-backup - vyjímka na skryté soubory a adresáře (.*), ale zároveň povolit zálohu /home/user/.password-store/
rdiff-backup --include /home/user/.password-store/ --exclude "**/.*" /home /media/usb/backup
rdiff-backup - záloha na vzdálené umístění přes SSH
rdiff-backup /home/user/ user@10.10.10.10::/mnt/backups/rdiff_user
Klonování či vytvoření image celého oddílu/disku pomocí DD
DD je linuxový nástroj s primárním určením pro konvertování a kopírování dat (DD = convert and copy files). Umožňuje mimo jiné klonovat disky či ukládat jejich obsah do image - to je vhodné právě pro zálohu celého systému do jednoho souboru.
DD - vytvoření image disku do lokálního umístění
- převede obsah z /dev/md0p1
do image /mnt/usb/clone/md0p1.img
dd if=/dev/md0p1 | gzip -1 - | dd of="/mnt/usb/clone/md0p1.img" status=progress
DD - vytvoření image disku ze vzdáleného umístění
- přihlásí se přes SSH na vzdálené umístění 192.168.85.252, provede vytvoření image (vzdáleného) zařízení /dev/mmcblk0p1
do místního adresáře /home/backups/mmcblk0p1-image.gz
ssh root@192.168.85.252 "dd if=/dev/mmcblk0p1 | gzip -1 -" | dd of="/home/backups/mmcblk0p1-image.gz" status=progress
DD - klon z disku na disk (zrcadlo 1:1)
- provede překlonování disku /dev/sda
na /dev/sdb
dd if=/dev/sda of=/dev/sdb bs=64K conv=noerror,sync status=progress
Záloha z FTP umístění pomocí WGET
- provete zálohu z FTP umístění ftp://user:heslo@domena.cz/adresar
do místního adresáře /home/backups/ftp/
wget -r --directory-prefix=/home/backups/ftp/ ftp://user:heslo@domena.cz/adresar
Ukázka jednoduché interaktivní zálohy s proměnnými
- obsahuje základní logy, mount disku, rsync dat, notifikaci na email s přílohami a vypnutí stroje
#!/bin/bash
echo -n Pokud chces stroj po zaloze vypnout tak napis cislo 1:
read vypnout
datum=$(date '+%y-%m-%d')
uname -a >> /tmp/$datum.log-messages.txt
tail -500 /var/log/auth.log | grep 'sshd' > /tmp/$datum.log-ssh.txt
tail -100 /var/log/messages >> /tmp/$datum.log-messages.txt
mount /dev/sdc1 /mnt/usb
rsync -av --exclude="backups/" --delete /home/ /mnt/usb/backups -progress >> /tmp/$datum.backup.log
umount /mnt/usb
echo -e "Zaloha byla prave dokoncena. \n Datum je $datum" | mutt -s "Predmet zpravy" -a "/tmp/$datum.backup.log" -a "/tmp/$datum.log-messages.txt" -a "/tmp/$datum.log-ssh.txt" -- email@email.cz
if [ $vypnout == 1]; then
shutdown -h now
else
Zaloha byla dokoncena muzete vyjmout USB disk
echo "Zaloha je hotova, system nebude vypnut" | mail -v -s "Predmet zpravy" email@email.cz
fi
<blockquote>WARNING: Kernel Errors Present
Buffer I/O error on dev sda1, log ...: 1 Time(s)
EXT4-fs error (device sda1) in ...: 1 Time(s)
EXT4-fs error (device sda1): _ ...: 1 Time(s)
EXT4-fs warning (device sda1): htree_dirblock_to_tree:959: inode #2: lblock 0: comm ls: error -5 reading direc ...: 1 Time(s)
JBD2: Error -5 detected when ...: 1 Time(s)
WARNING: CPU: 2 PID: 24670 at fs/fs-writeback.c: ...: 1 Time(s)</blockquote>
Chci preventivně provést klon / překopírování na novou SD kartu u mého raspberry pi, jak na to?
Dík Martin