Próbuję skopiować duży katalog z jednego dysku na drugi. Przez pomyłkę wylogowałem się przed jego zakończeniem, więc tylko około 80% plików zostało skopiowanych. Czy istnieje możliwość skopiowania pozostałych plików bez rozpoczynania od zera?
23
cp -u
może się nie przejmować, ponieważ sprawdza tylko znaczniki czasu, a nie rozmiar ... Więc musisztouch
najpierw znaleźć pliki źródłowe, jeśli musisz go użyć . (Lub po prostu użyjrsync
.)W przypadku częściowego przesyłania plików
cp
może nie być to, czego potrzebujesz.Sugeruję użycie
rsync
zamiast tego. Nawet jeśli przesyłanie się nie powiedzie, możesz po prostu ponownie uruchomić polecenie w późniejszym czasie i skopiuje tylko brakujące pliki.Przykład:
(skopiuje
from/
doto/
katalogu)Ponieważ
rsync
synchronizowanie i sprawdzanie po każdym transferze zapewnia prawidłowe kopiowanie plików, jest banalne.Ten zestaw
-aPEmivvz
jest moim standardowym wyborem do kopiowania plików za pośrednictwem sieci lub dysków zewnętrznych, w tym urządzeń wtykowych, takich jak karty SD itp.Są to przełączniki, których używam prawie zawsze:
-a
: „archiwum”, obejmuje-rlptgo
(rekurencyjne, dowiązania symboliczne jako dowiązania symboliczne, uprawnienia, czasy, grupa, właściciel)-P
: „częściowy postęp” pokazuje ładny pasek postępu dla każdego pliku-E
: „wykonywalność” zachowuje, czy jest wykonywalna czy nie-m
: „noempty” przycina puste katalogi-i
: podsumowanie zmiany wydruku „podsumowanie” dla wszystkich aktualizacji-vv
: „bardziej szczegółowy”-z
: „kompresja”źródło
To, czego prawdopodobnie chcesz, a nie
cp
w tym przypadku, torsync
.Wystarczy rekurencyjnie skopiować jedną strukturę katalogów do nowej lokalizacji:
źródło
Nie należy
cp
do tego używać . Jak powiedzieli inni, nie jest to właściwe narzędzie do pracy. Właściwe narzędzie będzie zależeć od twoich celów.Jeśli potrzebujesz tylko prostej kopii:
rsync /source /destination
z pewnym poziomem flag. Zobacz inne odpowiedzi na kilka naprawdę dobrych przykładów.Jeśli chcesz mieć aktualizacje dwukierunkowe
unison
jest droga. Rsync nie radzi sobie zbyt dobrze w rozwiązywaniu konfliktów z synchronizacjami dwukierunkowymi. Specjalnie usuwa. Więc chcesz, aby odpalały się dwukierunkowe kopieunison
Jeśli chcesz tworzyć kopie zapasowe, a pliki są oparte na tekście, możesz spróbować użyć
git
. Git można uruchamiać lokalnie, nie ma potrzeby używania „serwera”. W rzeczywistości serwery git są tylko metodami udostępniania plików. Możesz całkowicie mieć repozytorium git na dysku kopii zapasowej i „wypychać” go. Ponownie działa to tylko wtedy, gdy pliki są oparte na tekście i próbujesz uzyskać kopię zapasową w jedną stronę.Ponownie, jeśli masz zamiar wykonać kopię zapasową (i nie tylko raz), spójrz na deja-dupe, BackIntime lub podobne opcje. Wykonują migawki danych w danym momencie. Wszystkie uruchamiają rsync pod maską.
źródło
Możesz także ponownie skopiować wszystkie pliki, poprosić o potwierdzenie każdego zastąpienia, a następnie automatycznie odpowiedzieć „nie” na pytanie:
(prawdopodobnie użyłeś więcej opcji, na przykład
-r
, więc po prostu dodaj je jakcp -pri /source /dest
...)źródło
Użyj polecenia
rsync
z następującymi opcjami:źródło