Kontynuuj przerwanie cp

17

Czy można cpponownie uruchomić po przerwaniu i uruchomić go tam, gdzie skończył się ostatni raz (nie nadpisywać danych, które już zostały skopiowane, tylko kopiować to, co pozostało)?

Phil
źródło

Odpowiedzi:

32

Takie przypadki nauczyły mnie używania rsyncod samego początku. Jednak w twoim przypadku możesz teraz użyć rsync. Skopiuje tylko nowe dane, w tym jeśli zostanie cpzatrzymany w połowie dużego pliku.

Możesz go używać tak jak cp, w ten sposób:

rsync --append /where/your/copying/from /where/you/want/to/copy
Rory
źródło
3
Lub, --append-verifyaby się upewnić, porównać sumy kontrolne na końcu.
Zaz
7

Użyj przełącznika -u i zobacz stronę podręcznika systemowego cp.

Sven
źródło
ale pliki źródłowe się nie zmieniły ani nic
Phil
1
-u służy tylko do „aktualizacji” ... tzn .: nie zastąpi istniejących plików w miejscu docelowym, jeśli są one takie same lub nowsze ...
ericslaw
2
Jeśli użyjesz -u, to ponownie skopiuje ten sam duży plik. -u pomaga tylko wtedy, gdy próbujesz wznowić dużą rekurencyjną kopię.
Rory
7

W przypadku, gdy przerwana cpkopia była rekurencyjna, możesz chcieć wznowić pracę z rsync, włączając opcję --recursive.

Przykład

Polecenie przerwania kopiowania:

cp -r source-directory destination-directory

Załóżmy, że destination-directoryjuż istniał, więc to polecenie kopiowania utworzyło katalog o nazwie source-directory wewnątrz destination-directory . Można to wznowić poprzez:

rsync --recursive --append source-directory destination-directory

Zauważ, że końcowe ukośniki mają dokładne znaczenie w opcjach ścieżki rsync.

W takim przypadku polecenie kopiowania mogło otrzymać argument source-directorylub source-directory/nie robi to różnicy. Jednak w komendzie rsync musi być source-directory bez ukośnika końcowego .

Jan-Philip Gehrcke
źródło