== Scriptino standard di backup con tar su hard disk esterno == Questo va bene per me, probabilmente non per voi. Modificatelo a piacere. O meglio, non usatelo, che e` un cesso inverecondo. {{{ # #!/bin/bash # logger -t backup_usb Inizio backup # check se /mnt e gia in uso if ! [ -f /mnt/not_mounted ]; then echo "Backup fallito: /mnt e' gia' montata!"; logger -t backup_usb "Backup fallito: /mnt e' gia' montata!"; exit 1 fi; # se non e` in uso, la monto mount -t ext3 -L $1 /mnt if [ -f /mnt/not_mounted ]; then echo Backup fallito: non riesco ad accedere al disco removibile ; logger -t backup_usb Backup fallito: non riesco ad accedere al disco removibile ; else echo `date` Ruoto i vecchi files logger -t backup_usb Ruoto i vecchi files savelog -l -c 2 /mnt/*.tgz savelog -l -c 2 /mnt/*.log echo `date` Inizio il backup del sistema logger -t backup_usb Inizio il backup del sistema tar cvzf /mnt/sistema.tgz / --one-file-system --totals --exclude /home --exclude /var/vmail --exclude /ud0 > /mnt/sistema.log echo . echo `date` Inizio il backup di ud0 logger -t backup_usb Inizio il backup di ud0 tar cvzf /mnt/ud0.tgz /ud0 --one-file-system --totals > /mnt/ud0.log echo . echo `date` Inizio il backup delle home logger -t backup_usb Inizio il backup delle home tar cvzf /mnt/home.tgz /home --one-file-system --totals > /mnt/home.log echo . echo `date` Inizio il backup della mail logger -t backup_usb Inizio il backup della mail tar cvzf /mnt/mail.tgz /var/vmail --one-file-system --totals > /mnt/mail.log echo . echo `date` Smonto il disco logger -t backup_usb Smonto il disco sync sleep 1m fi; umount /mnt logger -t backup_usb Disco smontato - fine backup date }}} == Tar da un disco all'altro in locale == Monti i due dischi, poi: {{{ (cd /source/directory && tar cf - . ) | (cd /dest/directory && tar xpf -) }}} == Tar in salsa ssh == Per fare un tar via ssh da una macchina all'altra, scrivendo un file tgz sulla macchina remota: {{{ tar czf - | ssh @ dd if=- of= }}} oppure {{{ tar czf - | ssh @ dd of= }}} a seconda della versione di "dd" della macchina remota. Se si vuole fare il contrario, cioe` aprire un archivio remoto e scompattarlo in locale: {{{ ssh @ dd if= of=- | tar xpf - }}} Per fare un tar del file system della macchina remota e scriverlo in un file tgz locale: {{{ ssh @ tar czf - --one-file-system / | dd of= }}} Oppure: {{{ ssh @ dd if= | tar xpf - }}} Esempio: tar di /ud0 (con tutto) in ssh sul file /backup.tgz della macchina remota. {{{ tar czf - /ud0 | ssh root@pippo.pluto.it dd if=- of=/backup.tgz }}} Per fare una copia di un file system via ssh (non producendo un file tar, ma una copia delle directory di partenza) mantenendo tutti i permessi: {{{ tar cf - <...> | ssh @ tar xpf - -C }}} Esempio: tar di /ud1/programmi e /ud1/rapporti verso la stessa posizione su un disco di una macchina remota: (in questo esempio, sulla macchina locale mi trovo gia` dentro a "/ud1" {{{ tar cf - programmi/ rapporti/ | ssh root@10.20.0.201 tar xpf - -C /ud1/ }}} == Copiare solo i files piu` nuovi di una data == Puo` venire utile creare un archivio solo con i files piu` nuovi di una certa data. Si puo` fare con il seguente parametro: {{{ tar czf [altri parametri] --newer="2014-11-30 02:00:00" }}} Il formato della data e` YYYY-MM-DD HH:MM:SS == Estrazione di alcuni files soltanto == Estrarre un file indipendentemente dal path (usando eventualmente anche wildcards): {{{ tar xvf /mnt/ud0.tgz --wildcards --no-anchored nomefile tar xvf /mnt/ud0.tgz --wildcards --no-anchored '*nomefile*' }}}