Josef Kufner

  • Tato stránka byla aktualizována naposledy před 20 roky.
  • Věci zde uvedené mohou být mírně zastaralé. V takovém případě je vhodné je brát s rezervou a s ohledem na historické skutečnosti.
  • Zálohování pomocí rsync

    Notebook je vystaven daleko více příležitostem k jeho zničení a s ním i zničení dat na jeho disku. Právě proto jsem si usmyslel, že jej podrobím pravidelnému a plně automatizovanému zálohování. Díky záznamu v /etc/crontab na notebooku se zálohování provádí každý den v 4.04.

    # /etc/crontab
    # backup
    4 4     * * *   root    /root/backup/cron-zaloha.sh
    

    O samotné zálohování se stará celkem jednoduchý script, který nejdříve zkontroluje dostupnost zálohovacího počítače (ten mám v sousední místnosti a využívá se jako mailserver, router a všeobecně přístupný desktop – puštěn je stále). Pokud ping projde, spustí se vlastní zálohování, jehož výsledek je zaslán mailem rootovi na notebooku. Jako bonus je přidána tabulka volného místa na disku. Přihlašování po ssh je řešeno rsa klíči, takže není třeba žádného hesla.

    #!/bin/bash
    #
    # Zalohovani FS z cronu
    # /root/backup/cron-zaloha.sh
    #
    
    log=/var/tmp/backup-mail-$$
    target=rsync://jkpc/daily-backup
    info=true
    cmd="rsync -ax --delete-after --exclude=/var/tmp/ --exclude=/mnt/ / $target"
    
    ping jkpc -c 2 -W 3 >/dev/null 2>&1 || exit
    
    echo started at `date` >$log
    echo $cmd >>$log
    echo >>$log
    
    ( eval $cmd \
            >>$log 2>&1
    ) && (
            echo "" >> $log
            echo "All seems be OK." >> $log
            echo "" >> $log
            su pepa -c "ssh jkpc 'df -h /dev/hda[231]'" >> $log
            [ "$info" == "true" ] && mail -s "[Info] Backup to $target" root < $log
    ) || (
            echo "" >> $log
            su pepa -c "ssh jkpc 'df -h /dev/hda[231]'" >> $log
            mail -s "[Error] Backup to $target" root < $log
    )
    
    rm $log
    

    Na zálohovacím počítači je z inetd spouštěn rsync s touto konfigurací:

    # /etc/rsyncd.conf
    [daily-backup]
            comment = Denni backup notbooka
            path = /home/backup/jknb-daily
            use chroot = yes
            pid file = /var/run/rsync.dailybackup.pid
            read only = no
            list = yes
            uid = root
            gid = root
            hosts allow = 192.168.1.2 192.168.1.3
            dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.bz2 *.tbz
    
    # /etc/inetd.conf
    rsync   stream  tcp     nowait  root   /usr/bin/rsync rsyncd --daemon
    

    Obnovení

    Když se neco stane a je potřeba využít záložní kopii, tak stačí:

    rsync -av rsync://jkpc/daily-backup /

    Vřele doporučuji mít na zálohovacím počítači připravený staticky skompilovaný rsync a v šuplíku cd slaxe či jiné live distribuce.