Odpowiedzi:
Spróbowałbym,
rsync -a /from/file /dest/file
można korzystać z innych opcji, takich jak --append
, -P (--partial --progress)
. Aby uzyskać więcej informacji, zobacz man rsync .
Lub jeśli używasz, cp
użyj cp -u
.
z man cp
:
-u, --update
copy only when the SOURCE file is newer than the destination file or when the destination file is missing.
cp -u
może się nie przejmować, ponieważ sprawdza tylko znaczniki czasu, a nie rozmiar ... Więc musisz touch
najpierw znaleźć pliki źródłowe, jeśli musisz go użyć . (Lub po prostu użyj rsync
.)
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:
$ rsync -aPEmivvz from/ to/
(skopiuje from/
do to/
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”
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ą.
Możesz także ponownie skopiować wszystkie pliki, poprosić o potwierdzenie każdego zastąpienia, a następnie automatycznie odpowiedzieć „nie” na pytanie:
yes n | cp -i /source /dest
(prawdopodobnie użyłeś więcej opcji, na przykład -r
, więc po prostu dodaj je jak cp -pri /source /dest
...)