Prosty mirror backup via (L)FTP
Napisał: Patryk Krawaczyński
05/07/2010 w Administracja, Hacks & Scripts Brak komentarzy. (artykuł nr 267, ilość słów: 247)
W
wielu sytuacjach przydaje się prosta kopia zapasowa, która oprócz przechowywania najważniejszych plików – trzyma ich wersję z paru dni oraz jest równolegle przechowywana na innym serwerze w przypadku poważnej awarii oryginalnego źródła. Poniższy skrypt tworzy backup wybranych katalogów – przechowując przez 20 dni ich wcześniejsze wersje oraz tworzy lustrzaną kopię plików z archiwami na serwerze FTP.
#!/bin/bash export yesterday=`date +%d%m%Y --date='20 day ago'` export today=`date +%d%m%Y` if [ -e /chroot/backup/backup$yesterday.bz2 ] then rm /chroot/backup/backup$yesterday.bz2 fi tar -cvjpf /backup/backup$today.bz2 --same-owner --exclude=/etc/X11 /etc 2> /backup/error.log lftp serwer-ftp.pl -u login,hasło << EOF cd backup_router lcd /backup mirror -R -e -c --ignore-time mirror -R -e -n --ignore-time quit EOF unset yesterday unset today exit 0
Do poprawnego działania skryptu wymagane są takie programy jak tar, bzip2 oraz lftp. Zmienna yesterday
określa ile dni wstecz będą przechowywane kopie katalogu /etc (z wykluczeniem /etc/X11) w katalogu /backup. Narzędzie lftp
dzięki wykorzystaniu przeciwnego działania (-R) polecenia mirror
umieszcza całą zawartość katalogu /backup na zdalnym serwerze serwer-ftp.pl w katalogu backup_router. Pozostałe opcje dbają o poprawną synchronizację treści przy każdej sesji. Ze względu na przechowywanie w skrypcie danych autoryzacyjnych do serwera FTP należy nadać mu odpowiednie prawa dostępu:
chmod 700 backup.sh
Sam skrypt z powodu braku szyfrowania transmisji powinien być stosowany w sieciach wewnętrznych. Jest to również rozwiązanie przeznaczone dla serwerów, w których użytkownicy mają tylko prawo do wyświetlania swoich procesów. Jeśli zależy nam na kopii przyrostowej, a nie jeden do jednego – należy usunąć parametr -e przy poleceniu mirror
.
Więcej informacji: Kopia bezpieczeństwa, LFTP