===== 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*'