Kopiowanie pliku tylko wtedy, gdy jest nowszy niż miejsce docelowe


36

Jak skopiować plik w systemie Linux tylko wtedy, gdy kopiowany plik jest nowszy niż wersja docelowa?

Jeśli plik w miejscu docelowym jest nowszy, chcę, aby kopia pliku nie była kontynuowana.

Odpowiedzi:



17

Użyj rsync

rsync --progress -r -u /from/one/* /to/another/directory

3
Dla kompletności: -roznacza operację rekurencyjną w podkatalogach i -uutrzymywanie nowszych plików w miejscu docelowym (= aktualizacja). --progresspokazuje informacje o postępie podczas pracy.
Jörg Gottschlich

6

Nie mówisz, jakiej powłoki używasz, więc założę ksh:

if [[ file1 -nt file2 ]]; then cp file1 file2; fi

Czy bash nie jest najczęstszy?
Rob

1
@Rob, tak. Oczywiście działa to również w bashu. Po prostu nie miałem pod ręką bash (ani żadnego standardowego Linux-a), kiedy to napisałem.
Kusalananda

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.