Kopia zapasowa danych za pomocą połączenia FreeFileSync i 7-zip

Wywiad, że tak powiem:

Serwer Fujitsu rx300 s6, RAID6 z 6 dysków 1TB, uruchomiony XenServer 6.2, działają na nim kilka serwerów, w tym Ubuntu z wieloma udziałami, 3,5 miliona plików, 1,5 TB danych, wszystko to stopniowo rośnie i puchnie.

Zadanie: skonfigurować zdalne kopie zapasowe z serwera plików, częściowo codziennie, częściowo co tydzień.
Mamy maszynę z systemem Windows do backupu z RAID5 (z braku lepszego, zwykły komputer z wbudowanym kontrolerem RAID) oraz oddzielny dysk 2TB do tymczasowego kopiowania aktualnego stanu plików. Można by użyć dowolnej dystrybucji Linuxa, ale ta maszyna była już dostępna z macierzą RAID i licencją na Windows.

Instalujemy na serwerze backupowym FreeFileSync, konfiguruje „lustro” wszystkiego na plikach serwera raz dziennie wieczorem po godzinie 18:00 uruchamiając przez harmonogram.

Ważna kwestia: przy zapisywaniu zadania wsadowego koniecznie zaznacz opcję „Zamknij okno zadania po zakończeniu”, inaczej procesy będą się mnożyć i rozrastać.

Na listę wyjątków dodajemy pliki tymczasowe: *.dwl, *.dwl2, *.tmp.

FreeFileSync doskonale wykorzystuje sieć, kopiowanie odbywa się w kilku wątkach, a prędkość sięga 80 MB/s przy kopiowaniu dużych plików, nie zauważono problemów z małymi plikami.

Archiwizację przeprowadzimy na lokalnym serwerze backupowym, zamiast wcześniej używanego TheCopier z archiwizacją przez sieć. Swoją drogą, TheCopier jest doskonały! Jednak przy takich objętościach po prostu nie nadąża, mimo interfejsu 1 Gbps na serwerze backupowym i 2 Gbps na serwerze plików (skrzyżowanie dwóch kart sieciowych).

Dawniej używano również SyncToy, ale przy liczbie plików przekraczającej 1,5-2 miliony przestał poprawnie działać, po prostu nie radził sobie.

Do archiwizacji potrzebnych folderów piszemy skrypt bat dla 7-zip:

set now=%TIME:~0,-3%
set now=%now::=.%
set now=%now: =0%
set now=%DATE:~-4%.%DATE:~3,2%.%DATE:~0,2%_%now%
C:„Program Files”7-Zip7z.exe a -tzip -mx=1 -mmt=on -mtc=off -ssw D:backupAll%now%_10-04.zip E:10-04
C:„Program Files”7-Zip7z.exe a -tzip -mx=1 -mmt=on -mtc=off -ssw D:backupAll%now%_35-110.zip E:35-110
C:„Program Files”7-Zip7z.exe a -tzip -mx=1 -mmt=on -mtc=off -ssw D:backupAll%now%_asu.zip E:asu
C:„Program Files”7-Zip7z.exe a -tzip -mx=1 -mmt=on -mtc=off -ssw D:backupAll%now%_director.zip E:director
C:„Program Files”7-Zip7z.exe a -tzip -mx=1 -mmt=on -mtc=off -ssw D:backupAll%now%_gpr.zip E:gpr
C:„Program Files”7-Zip7z.exe a -tzip -mx=1 -mmt=on -mtc=off -ssw D:backupAll%now%_otiz.zip E:otiz
C:„Program Files”7-Zip7z.exe a -tzip -mx=1 -mmt=on -mtc=off -ssw D:backupAll%now%_ps.zip E:ps
C:„Program Files”7-Zip7z.exe a -tzip -mx=1 -mmt=on -mtc=off -ssw D:backupAll%now%_pto.zip E:pto
C:«Program Files»7-Zip7z.exe a -tzip -mx=1 -mmt=on -mtc=off -ssw D:backupsAll%now%_rza.zip E:rza
C:«Program Files»7-Zip7z.exe a -tzip -mx=1 -mmt=on -mtc=off -ssw D:backupsAll%now%_smeta.zip E:smeta

:: a — tworzenie archiwum
:: -tzip lub -t7z — typ archiwum (zip jest 1,5-2 razy szybszy)
:: -mx=1 — stopień kompresji (1 minimalnie, 9 maksymalnie wartości x=[0 | 1 | 3 | 5 | 7 | 9])
:: -mmt=on — włącza przetwarzanie wielowątkowe, gdzie nagle nie jest włączone
:: -mtc=off — wyłącza znaczniki czasu systemu plików (kiedy zapisano, zmieniono itd.)
:: -ssw — kompresuje również pliki otwarte do zapisu
:: -xr!.Sync* — wyklucza tymczasowe pliki BtSync z archiwizacji, pozostawiając stałe

Konstrukcja z set now=% i tak dalej pozwala zachować format zapisu czasu w nazwie pliku bez problemów, które występowały, gdy liczba dnia lub miesiąca była mniejsza niż 10, czyli podstawiamy zero.

Komentarz -xr!.Sync* to relikt, pozostały z pierwotnie używanego BTSync.

Do 500 GB i 700-800 tysięcy plików BTSync działał jeszcze w porządku, synchronizował w locie, ale przy obecnych objętościach bardzo pochłaniał pamięć i zasoby procesora, zarówno na serwerze plikowym Ubuntu, jak i na widowowym serwerze backupowym, gdzie był uruchomiony jako usługa, a także brutalnie obciążał system dyskowy stałymi odczytami-zapisami.

Choć archiwizer i 7-zip, archiwizujemy w formacie zip zamiast rodzimego 7z, ponieważ jest znacznie szybszy, a różnicy w kompresji przy mx=1 prawie nie ma, sprawdzone w wielu eksperymentach.

Archiwa są wykonywane sekwencyjnie.

Sprzątanie folderu z archiwami odbywa się również poprzez zaplanowane zadanie przy użyciu narzędzia fpurge, pozostawiając archiwa nie starsze niż tydzień.
W efekcie mamy kopię plików z poprzedniego dnia, a także archiwa z ostatniego tygodnia, usunięte pliki FreeFileSync wkłada do kosza.

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster