|
|
Ten dokument jest dost�pny w nast�puj�cych j�zykach: English Castellano ChineseGB Deutsch Francais Nederlands Russian Turkce Polish |
Brian Hone <bhone(at)eink.com> O Autorze: Brian Hone jest administratorem i programist� w korporacji E Ink. W wolnych chwilach �egluje na bardzo zimnych wodach i wisi na ska�kach . T�umaczenie na j�zyk polski: Mariusz Koz�owski <mariusz(at)linuxfocus.org> Zawarto��: |
Rsync: Najlepszy system tworzenia kopii zapasowych.Notka:
Tworzenie kopii zapasowych to jedno z najtrudniejszych zada� w administracji systemem.
Jest ono r�wnie� jednym z najwa�niejszych.
Stanowi ono ostatni� desk� ratunku w przypadku uszkodzenia sprz�tu, naruszenia bezpiecze�stwa oraz najwi�kszego z zagro�e�: u�ytkownikcy systemu. Podczas gdy istnieje wiele system�w tworzenia kopii zapasowych
kosztuj�cych wiele tysi�cy dolar�w, kt�re archiwizuj� dane na drogie nap�dy ta�mowe u�ywaj�c wadliwego p�atnego oprogramowania jest lepsze rozwi�zanie: Rsync i tania macierz dyskowa.
|
Mog� przytoczy� d�ug� list� powod�w, dla kt�rych archiwizazja danych to koszmar administratora. Je�li jeste� administratorem, prawdopodobnie nie musz� tego robi�. Niekt�re z powod�w to: drogi sprz�t, kt�ry wysiada cz�ciej ni� pracuje, drogie oprogramowanie, kt�rego zarz�dzanie to koszmar i d�ugie godziny sp�dzone na odzyskiwaniu odpowiednich wersji plik�w. �eby jeszcze pogorszy� spraw� zwykle korporacja przyk�ada bardzo ma�o wagi do kopii zapasowych, a� do tego nieuniknionego dnia, gdy s� one naprawd� potrzebne. Je�li zarchiwizowa�e�/odzyska�e� dane odby�e� tak� rozmow�:
User: "Zgubi�em plik. Chc� aby� odzyska� go natychmiast."
SysAdmin: "Ok, jak si� nazywa�?"
User: "Nie wiem, chyba mia� 'e' w nazwie."
SysAdmin: "Ok, wi�c w jakim by� katalogu?"
User: "Nie wiem, m�g� by� w jednym z tych trzech..."
SysAdmin: "*westchni�cie* Kiedy ostatnio go u�ywa�e�?"
User: "Hmmm... To chyba by� czwartek w lutym czy kwietniu. W czym problem?
My�la�em, �e macie kopie zapasowe w takich sytuacjach."
Rsync to bardzo dobra implementacja ma�ego pi�knego algorytmu. Jego podstawowa zaleta to mo�liwo�� efektywnego mirrorowania sysetmu plik�w. U�ywaj�c rsync prostym jest stworzenie systemu, kt�ry b�dzie przechowywa� �wie�� kopi� obserwowanego systemu plik�w u�ywaj�c r�nych protoko��w sieciowych jak nfs, smb czy ssh. Drug� wa�n� w�a�ciwo�ci� rsync jest mo�liwo�� archiwizacji starych kopii plik�w, kt�re zosta�y zmodyfikowane lub usuni�te. Istnieje zdecydowanie zbyt wiele w�a�ciwo�ci aby je rozwa�a� w tym artykule. Gor�co polecam lektur� rsync.samba.org.
Po kr�tce system ten sk�ada si� z taniej maszyny opartej na Linux'ie z mas� tanich dysk�w i ma�ym skryptem pow�oki zwanym rsync. [Fig 1] Gdy archiwizujemy dane m�wimy rsync aby stworzy� katalog o nazwie 'YY-DD-MM' jako miejsce do przechowywania zmian. Nast�pnie rsync sprawdza czy na serwerach kt�re archiwizujemy zasz�y jakie� zmiany. Je�li jaki� plik uleg� zmianie stara wersja jest kopiowana do wczesniej opisanego katalogu, a po�niej nadpisuje plik w g��wnym katalogu z archwizowanymi danymi. [Fig 2]
Og�lnie dzienne zmiany stanowi� ma�y procent ca�ego systemu plik�w. Wg moich test�w warto�� ta zwykle wacha si� w przedziale 0.5% do 1%. Dlatego te� z zestawem dysk�w o rozmiarze dwukrotnie wi�kszym od naszych archiwizowanych system�w mo�esz przechowa� oko�o 50-100 dni zmian. Gdy dysk staje si� pe�ny po prostu podepnij nowy zestaw dysk�w, a stare odepnij. W praktyce jest mo�liwe przechowanie ponad sze�ciu miesi�cy zmian na dysku. W�a�ciwie je�li znajdziesz gdzie� miejsce mo�esz skopiowa� archiwizowane dane na inny serwer zanim zmienisz dyski. W ten spos�b mo�esz przechowa� ca�kiem du�� liczb� katalogow zmian na dysku.
Wr��my do powy�szej, wyimaginowanej rozmowy. Wyobra� sobie teraz, �e zamiast niepor�cznego systemu opartego o ta�my masz system oparty o Linux'a z czekaj�cymi na Ciebie danymi z ostatnich sze�ciu miesi�cy. U�ywaj�c Twojej ulubionej kombinacji locate/find/grep mo�esz znale�� wszystkie pliki nale��ce do danego u�ytkownika zawieraj�ce 'e' z dat� czwartek luty b�d� kwiecie� i zrzuci� je do katalogu tego wla�nie u�ytkownika. Problem w znalezieniu, kt�ra z wersji jest wa�ciwa to jeden z moich ulubionych rodzaj�w problemu: to nie m�j problem.
Nst�pnie wyobra� sobie nasz ulubiony scenariusz - ca�kowita utrata danych. Powiedzmy, �e masz wielki serwer nfs/samba, kt�ry tracisz. Je�li zarchiwizowa�e� pliki konfiguracyjne samby mo�esz przywr�ci� serwer jako chwilowo tylko do odczytu w par� minut. Chcia�bym zobaczy� jak to robisz z ta�mami.
Archiwizacja na ta�mie | Rsync | |
---|---|---|
Koszt | Bardzo du�y | Ma�y |
Pe�na archiwizacja | Szybko | Szybko |
Archiwizacja zmian | Szybko | Szybko |
Pe�ne odzyskiwanie systemu | Bardzo wolno, prawdopodownie wiele ta�m | Szybko - wszystko jest na dysku |
Przywracanie plik�w | Powoli, mo�e wiele ta�m, cz�sto problem ze znalezieniem w�a�ciwej wersji. | Bardzo szybko - wszystko jest na dysku, a na dodatek masz pod r�k� narz�dzia systemu UN*X jak: find, grep i locate |
Ca�kowita utrata danych | Jednyna mo�liwo�� to pe�ne odzyskiwanie systemu | Mo�e zosta� przywr�cony jako serwer plik�w w par� minut |
Istnieje wiele kombinacji konfiguracji systemu archiwizacji. Wszystkie narz�dzia s� open-source, zawarte standardowo w dystrybucjach i bardzo elastyczne. Opiszemy tutaj jedn� z wielu mo�liwo�ci konfiguracji.
Podstawowa wersja tego skryptu pochodzi ze strony rsync. Jest to naprawd� jedno polecenie:
rsync --force --ignore-errors --delete --delete-excluded --exclude-from=exclude_file --backup --backup-dir=`date +%Y-%m-%d` -av
Kluczowe opcje to:
Poni�szy skrypt mo�e by� odpalany co noc u�waj�c linux'owego cron. Aby skrypt by� uruchamiany o 23 co noc u�yj polecenia "crontab -e", a potem wpisz to:
0 23 * * * /�cie�ka/do/twojego/skryptu
Oto m�j skrypt pow�oki wi���cy to wszystko w ca�o��. Znowu istnieje wiele sposob�w na zrealizowanie tego. Jest to tylko jedna z implementacji.
#!/bin/sh ######################################################### # Script to do incremental rsync backups # Adapted from script found on the rsync.samba.org # Brian Hone 3/24/2002 # This script is freely distributed under the GPL ######################################################### ################################## # Configure These Options ################################## ################################### # mail address for status updates # - This is used to email you a status report ################################### MAILADDR=your_mail_address_here ################################### # HOSTNAME # - This is also used for reporting ################################### HOSTNAME=your_hostname_here ################################### # directory to backup # - This is the path to the directory you want to archive ################################### BACKUPDIR=directory_you_want_to_backup ################################### # excludes file - contains one wildcard pattern per line of files to exclude # - This is a rsync exclude file. See the rsync man page and/or the # example_exclude_file ################################### EXCLUDES=example_exclude_file ################################### # root directory to for backup stuff ################################### ARCHIVEROOT=directory_to_backup_to ######################################### # From here on out, you probably don't # # want to change anything unless you # # know what you're doing. # ######################################### # directory which holds our current datastore CURRENT=main # directory which we save incremental changes to INCREMENTDIR=`date +%Y-%m-%d` # options to pass to rsync OPTIONS="--force --ignore-errors --delete --delete-excluded \ --exclude-from=$EXCLUDES --backup --backup-dir=$ARCHIVEROOT/$INCREMENTDIR -av" export PATH=$PATH:/bin:/usr/bin:/usr/local/bin # make sure our backup tree exists install -d $ARCHIVEROOT/$CURRENT # our actual rsyncing function do_rsync() { rsync $OPTIONS $BACKUPDIR $ARCHIVEROOT/$CURRENT } # our post rsync accounting function do_accounting() { echo "Backup Accounting for Day $INCREMENTDIR on $HOSTNAME:">/tmp/rsync_script_tmpfile echo >> /tmp/rsync_script_tmpfile echo "################################################">>/tmp/rsync_script_tmpfile du -s $ARCHIVEROOT/* >> /tmp/rsync_script_tmpfile echo "Mail $MAILADDR -s $HOSTNAME Backup Report < /tmp/rsync_script_tmpfile" Mail $MAILADDR -s $HOSTNAME Backup Report < /tmp/rsync_script_tmpfile echo "rm /tmp/rsync_script_tmpfile" rm /tmp/rsync_script_tmpfile } # some error handling and/or run our backup and accounting if [ -f $EXCLUDES ]; then if [ -d $BACKUPDIR ]; then # now the actual transfer do_rsync && do_accounting else echo "cant find $BACKUPDIR"; exit fi else echo "cant find $EXCLUDES"; exit fi
|
Strona prowadzona przez redakcj� LinuxFocus
© Brian Hone, FDL LinuxFocus.org |
t�umaczenie:
|
2004-03-09, generated by lfparser version 2.46