Planuję wykonać kopię zapasową moich dużych dysków twardych rsync
i przewiduję, że zajmie to kilka dni. Czy bezpiecznie jest używać oryginalnego dysku twardego (dodawanie plików) podczas rsync
pracy? Czy lepiej pozostawić HDD nietknięte, dopóki nie rsync
zostanie zakończone?
27
Odpowiedzi:
Jak już zauważyli inni, można bezpiecznie czytać z dysku źródłowego lub używać dysku docelowego poza katalogiem docelowym, gdy rsync jest uruchomiony. Można również bezpiecznie czytać w katalogu docelowym, zwłaszcza jeśli katalog docelowy jest zapełniany wyłącznie przez uruchomienie rsync.
To, co na ogół nie jest bezpieczne, to pisać w katalogu źródłowym podczas działania rsync. „Zapisuje” to wszystko, co modyfikuje zawartość katalogu źródłowego lub dowolnego jego podkatalogu, a więc obejmuje aktualizacje plików, usuwanie, tworzenie itp.
W przeciwnym razie nie będzie faktycznie złamać niczego, ale zmiana może lub nie może faktycznie odebrano przez rsync do kopiowania do lokalizacji docelowej. Zależy to od rodzaju zmiany, od tego, czy rsync przeskanował już ten konkretny katalog i czy rsync skopiował już dany plik lub katalog.
Istnieje jednak prosty sposób: Po zakończeniu uruchom ponownie program rsync z tymi samymi parametrami. (Chyba że masz jakiś funky parametr usuwania; jeśli tak, to zachowaj ostrożność.) Spowoduje to ponowne przeskanowanie źródła i przeniesienie wszelkich różnic, które nie zostały wykryte podczas pierwszego uruchomienia.
Drugi przebieg powinien przenosić tylko różnice, które wystąpiły podczas poprzedniego uruchomienia rsync, i jako taki zakończy się znacznie szybciej. W ten sposób możesz swobodnie korzystać z komputera podczas pierwszego uruchomienia, ale powinieneś unikać jak największej liczby zmian w źródle podczas drugiego uruchomienia. Jeśli możesz, zdecydowanie rozważ ponowne zamontowanie źródłowego systemu plików tylko do odczytu przed rozpoczęciem drugiego uruchomienia rsync. (Coś jak
mount -o ro,remount /media/source
powinno zrobić.)źródło
@reboot root find / -print &>/dev/null
do mojego crontab systemu, aby zapełnić pamięć podręczną. (Rzeczywisty wpis jest bardziej skomplikowany z uwagi na kilka specjalnych przypadków w moim konkretnym systemie.) Zużywa trochę pamięci RAM i trochę czasu na ścianie wcześnie po uruchomieniu, aby poprawić skanowanie drzewa katalogów całkiem sporo IME.updatedb
(budowanie bazy danych lokalizacji) lubslocate -u
(tak samo, jeśli masz slocate)? W ten sposób nadal buforujesz hierarchię, ale także budujesz bazy danych lokalizowania lub slocacji, pozwalając na użycie tych poleceń do szybkiego znalezienia wielu plików?Zależy to od używanego systemu tworzenia kopii zapasowych, ale ogólnie źle jest modyfikować zawartość urządzenia podczas tworzenia kopii zapasowej. Możesz jednak przeczytać jego zawartość; to bezpieczna operacja, nawet jeśli spowolni proces.
W twoim przypadku
rsync
utworzy listę plików, a następnie rozpocznie tworzenie kopii zapasowej. Dlatego żaden plik dodany do źródłowego dysku twardego po rozpoczęciu tworzenia kopii zapasowej nie zostanie skopiowany.To, co robię, to wcale nie używać urządzenia podczas tworzenia kopii zapasowej. Jest to bezpieczniejszy sposób na szybkie i spójne tworzenie kopii zapasowych.
źródło
rsync
które zakończy się za kilka sekund, ponieważ zostaną skopiowane tylko pliki, które zmieniłem podczas uruchamiania. Wszystko będzie w pamięci podręcznej, więc o wiele łatwiej jest powstrzymać się od modyfikacji w tym okresie.Odczytywanie danych z obszarów źródłowych podczas
rsync
pracy jest bezpieczne, ale jeśli coś zaktualizujesz, kopia, którarsync
tworzy / aktualizuje, może być niespójna:Jeśli zaktualizujesz plik, który rsync już przeskanował, nie zobaczy aktualizacji, dopóki nie zostanie uruchomiony w przyszłości. Jeśli zaktualizujesz plik, który nie został jeszcze przeskanowany, zmiana zostanie uwzględniona w miejscu docelowym. Jeśli zaktualizujesz pliki, które zostały przeskanowane i nie zostały przeskanowane, w miejscu docelowym pojawi się mieszanka starych i nowych wersji.
Jeśli dodasz plik do katalogu, który został już przeskanowany, tym razem zostanie on pominięty w kopii docelowej. Jeśli usuniesz plik z katalogu, który został już przeskanowany, tym razem pozostanie on w kopii docelowej. W zależności od sposobu wywołania
rsync
całe drzewo może być skanowane na początku lub może być skanowane przyrostowo wraz z procesem synchronizacji.W niektórych okolicznościach
rsync
zobaczysz niekonsekwencję i ostrzeże Cię. Jeśli usuniesz plik lub podkatalog z katalogu, który został już zeskanowany, ale jego zawartość nie została zeskanowana, pojawi się komunikat o błędzie dotyczący braku obiektu. W podobnych okolicznościach może czasami (jeśli zmienił się rozmiar i / lub znacznik czasu) również ostrzec o zmianie plików podczas skanowania.W przypadku niektórych kopii zapasowych ta niespójność może nie być poważnym problemem, ale w większości przypadków tak, dlatego zaleca się, aby nie próbować synchronizować aktywnie zmieniającego się źródła.
Jeśli używasz LVM do porcjowania systemu pamięci, możesz użyć tymczasowej migawki, aby wykonać kopię zapasową w określonym momencie. Wymaga to wystarczającej ilości miejsca w grupie woluminów, aby utworzyć wolumin migawki wystarczająco duży, aby pomieścić wszystkie zmiany, które zostaną wprowadzone w czasie, gdy migawka jest potrzebna. Sprawdź dokumentację LVM (lub jeden z wielu przykładów online: wyszukaj „Kopia zapasowa migawki LVM” lub podobny), aby uzyskać więcej informacji.
Nawet bez LVM niektóre systemy plików same obsługują migawki - więc możesz również zajrzeć do tej opcji.
Jeśli chcesz wykonać kopię zapasową dużych aktywnych woluminów bez długiego przestoju i nie możesz użyć migawek, może być wystarczające uruchomienie skanowania „na żywo” do zakończenia, a następnie zatrzymanie dostępu do woluminu i uruchomienie innego procesu rsync, który może zająć znacznie mniej czasu (jeśli bardzo niewiele się zmieniło, po prostu skanuje drzewo katalogów, a następnie kilka zaktualizowanych plików). W ten sposób czas, w którym należy unikać zmian, może być znacznie krótszy.
źródło
Źródłowy dysk twardy może czytać wszystko podczas rsync.
Źródłowy dysk twardy może zapisywać dowolne treści niezwiązane z treścią rsync.
Docelowy dysk twardy może czytać wszystko podczas rsync.
Docelowy dysk twardy może zapisywać wszystko podczas rsync z warunkiem, że ma wystarczającą ilość miejsca zarezerwowanego dla zsynchronizowanej zawartości.
Oczywiście w każdym przypadku nastąpi zmniejszenie wydajności.
źródło
Wszystkie obecne odpowiedzi mówią o bezpieczeństwie danych w kategoriach spójności i zakładania idealnego sprzętu.
Inną rzeczą do rozważenia jest samo bezpieczeństwo sprzętu. Jeśli masz non-backed-up dysków twardych, które mogą być na granicy braku (może nawet nie wiedzą jeszcze) i robisz wstępną kompleksową kopii zapasowej nie używaj go. Nawet nie montuj go, jeśli dane są krytyczne. Możesz użyć narzędzia takiego jak
dd
klonowanie dysku jako urządzenia blokowego. Czego nie chcesz, aby głowa szukała dysku i mogła pisać podczas próby wykonania kopii zapasowej. Plusdd
powinien być szybszy dla początkowej kopii zapasowej, ponieważ po prostu kopiuje bity w kolejności (jeśli dysk nie jest w większości pełny, przypuszczam, że rsync również wygrałby w pierwszym przypadku).W przypadku kolejnych przyrostowych kopii zapasowych rsync to świetny wybór i zgadzam się z pozostałymi odpowiedziami w 100%.
źródło
dd
nie jest najlepszym wyborem. Użyjddrescue
zamiast; znacznie lepiej radzi sobie z częściowymi awariami. Ale nie było to uwzględnione w pierwotnym pytaniu.