Jak wznowić kopię dużego pliku w systemie Linux? Mam ogromny plik (gigabajty serwerowe) częściowo skopiowany na dysk sieciowy, i zajęło to dużo czasu, i było to w większości zrobione, zanim operacja kopiowania została zatrzymana z powodu problemu sieci, który został naprawiony. Jak wznowić kopiowanie pliku. Nie chcę nieefektywnego skryptu, a ecp nie działał (wydaje się, że nie działa w przypadku dużych plików).
9
Jeśli wiesz, że po prostu musisz dołączyć do pliku lokalnego i nie chcesz używać rsync (co może zająć dużo czasu przy obliczaniu sum kontrolnych), możesz użyć curl. Na przykład, jeśli masz duży plik na wolno wyjmowanej pamięci USB zamontowanej w,
/media/CORSAIR/somefile.dat
a tylko połowa jest w bieżącym katalogu, aby wznowić:curl -C - -O "file:///media/CORSAIR/somefile.dat"
źródło
Tak, rsync jest właściwą drogą. Dla mnie przesłaliśmy 100+ GB danych przez rsync + ssh. Jeśli szukasz prawdziwej kopii zapasowej, upewnij się, że korzystasz z opcji
-a
(archiwizuj), aby zachować atrybuty plików (czasy, właścicieli, perms itp.)Przydaje się również do kopiowania dużych plików, które mogą ulec zmianie podczas migracji. Możesz wstępnie załadować dane do miejsca docelowego i po przygotowaniu do ostatecznej kopii zrób to jeszcze raz, ale tylko przez ułamek czasu. Możesz zaoszczędzić na faktycznym przestoju, używając rsync do pełnego potencjału.
Korzystanie z PS
v
(pełne) może spowolnić przesyłanie wielu plików.źródło
Polecenie, które chcesz, będzie podobne
chyba że możesz uzyskać dostęp do serwera przez ssh i uruchomić rsync w ten sposób, w takim przypadku polecenie FlyingFish jest najlepsze.
źródło
rsync jest dobry tylko wtedy, gdy masz rsync na serwerze docelowym. W takim przypadku jest to rzeczywiście najlepsze rozwiązanie.
Ale nie inaczej. Ponieważ rsync ma na celu kopiowanie tylko zmienionych części w dużych plikach, zakłada, że te zmienione części mogą znajdować się w dowolnym miejscu pliku. Oznacza to, że suma kontrolna wszystkich bloków, które zostały już skopiowane. Jeśli nie masz rsync na zdalnym końcu, lokalny rsync zacznie od odczytu wszystkiego, co zostało już przesłane.
Jeśli twój komputer źródłowy ma serwer WWW lub ftp, możesz użyć wget z serwera docelowego z opcją „--continue”. (lub zwiń za pomocą opcji „--continue-at [- | size]”).
Jeśli twój komputer docelowy ma serwer FTP, możesz użyć curl na maszynie źródłowej z opcją --append.
W ostateczności możesz użyć dd z argumentami „bs =” (rozmiar bloku), „skip =” i „seek =”. Na przykład:
Załóżmy, że będziesz w stanie używać bloków 2048 bajtów. Jeśli plik docelowy ma obecnie 2'048'000'000 bajtów (2 GB), to znaczy 1'000'000 bloków po 2048 bajtów. Aby dołączyć resztę pliku źródłowego do miejsca docelowego, możesz
dd if = plik_źródłowy = plik_docelowy bs = 2048 pomiń = 1000000 szukaj = 1000000
Możesz użyć większego rozmiaru bloku, aby poprawić szybkość transferu. Pamiętaj tylko, aby podać rozmiar bloku za pomocą bs = i że wartość podana do pomijania i szukania jest w blokach, a nie w bajtach.
źródło