Mam katalog a i katalog b. Są duże. b jest prawie identyczne z a. „prawie” oznacza, że 4-5 plików różnią się i nie wiem, które to pliki. Chcę skopiować b na a, ale tylko pliki, które się różnią. jestem w bash.
(nie, nie mogę po prostu usunąć a i zastąpić go na b, ponieważ 1) a jest sterowany wersją 2) pełna kopia (lub mv) zajęłaby zbyt wiele. Chcę skopiować tylko te pliki, które się różnią).
linux
bash
cp
file-transfer
konferencja janes
źródło
źródło
rsync
opcja?Odpowiedzi:
Możesz
rsync
to zrobić za pomocą polecenia, którego używamrsync -tr "folder to copy from" "folder to copy to"
na przykład
rsync -tr /home/me/stuff/* /home/me/otherstuff/
źródło
Można to również zrobić za pomocą starego, dobrego
cp
:Dzięki srcspider za przypomnienie mi o użyciu
-T
!cp -ruT old-dir new-dir
źródło
Inną dobrą opcją jest Unison ( http://www.cis.upenn.edu/~bcpierce/unison/ ), szczególnie jeśli tak naprawdę nie ma „źródła” i „miejsca docelowego”. Każdy katalog jest katalogiem głównym, a Unison synchronizuje je i przechowuje metadane do przyszłych synchronizacji. Oferuje zarówno wiersz poleceń, jak i opcję GUI, którą można łatwo zaplanować również za pomocą crona.
Używam go do tworzenia kopii zapasowej mojego Dropbox na moim lokalnym urządzeniu NAS, które nie może uruchomić klienta Dropbox.
źródło
Można tego dokonać z dobrym, ale nieco innym formatem niż podano powyżej. Oto jak to zrobiłem:
źródło
Możesz różnicować 2 katalogi.
diff -r dir1 dir2
pokaże ci listę plików, które są różne
źródło