Kopiuj tylko nowe pliki - czy to możliwe? Zasadniczo chcesz scalić dwa foldery


10

Mam folder na Dysku 1 o nazwie Muzyka i ma on pojemność 100 GB. Mam folder na Dysku 2 o nazwie Muzyka i ma on pojemność 116 GB. To najnowsza wersja. Jak skopiować folder Muzyka z Dysku 2 na Dysku 1 bez konieczności przepisywania każdego pojedynczego pliku?


Z jakiej wersji OS X korzystasz?
— Nix

1
Używam 10.7.4. Kiedy kopiuję folder z jednego dysku na drugi, pojawia się pytanie, czy chcę go wymienić. Brak opcji scalania.
— dallen

Odpowiedzi:


5

Opcja scalania pojawi się tylko wtedy, gdy kopiujesz (a nie przenosisz) folder. Pamiętaj, aby przytrzymać optionpodczas przeciągania nowego folderu do lokalizacji starego folderu. Alternatywnie, użycie ⌘+, caby skopiować nowy folder i ⌘+, vaby wkleić stary folder, powinno dać ci możliwość scalenia plików.


Nadal wydaje się, że zapisuje pliki, które nie muszą być przepisywane. Korzystanie rsynczamiast
— BRogers

Nawet jeśli opcja scalania jest dostępna, czasami nie działa (po prostu zgłasza błąd i nic nie robi) - szczególnie w przypadku dużych folderów, jak w twoim przypadku. To kolejny powód, dla którego powinieneś używać rsync.
— Andrzej Martyna

21

Jest to klasyczny przypadek użycia rsync:

rsync -av /source-path/source-dir /destination-path

rsync skopiuje tylko nowe i zmienione pliki do nowej lokalizacji.

Ważne jest, aby zrozumieć, jak działa ukośnik końcowy argumentu źródłowego. Jeśli występuje ukośnik końcowy, zawartość katalogu / source-path / source-dir zostanie skopiowana do ścieżki docelowej . Jeśli nie ma końcowego ukośnika, sam katalog źródłowy zostanie skopiowany do miejsca docelowego, a jego zawartość znajdzie się na wyższym poziomie w hierarchii docelowej.

Więc jeśli chcesz zreplikować jedną ścieżkę do drugiej, dołącz końcowy ukośnik w następujący sposób:

rsync -av /sourcepath/sourcedir/ /duplicatpath/sourcedir/

1
Ładny chwyt! A jeśli robisz to z wielu dysków (lub z dowolnego miejsca na komputerze) i nie chcesz wpisywać katalogów, możesz po prostu przeciągnąć dysk (zewnętrzny USB lub kapsułę czasu) lub po prostu określony katalog i dodać to do polecenia dla ciebie. Po prostu przeciągnij lokalizację docelową do terminala
— BRogers

Człowieku, bardzo dziękuję za zasugerowanie końcowego cięcia. Zastanawiałem się, dlaczego rsync -av ./foo/bar / vol1 / foo / bar kopiuje wszystkie istniejące pliki. Krwawe cięcia lol !!!
— sming

1

Sprawdź cppolecenie. Użyj man cpi przeczytaj opcje. Możesz zrobić coś takiego:

cp -r -u ~/source ~/destination

-R, -r , --recursive: rekursywnie kopiuj katalogi
-u , --update: kopiuj tylko wtedy, gdy plik SOURCE jest nowszy niż plik docelowy lub gdy brakuje pliku docelowego
-p taki sam jak --preserve = mode, własność , znaczniki czasu
-v --verbose: wyjaśnij, co się dzieje

Więc jeśli chcesz skopiować pliki z folderu Pobrania / muzyki, aby powiedzieć swój folder Muzyka / nowy , zrobiłbyś coś w następujący sposób: Scaliłoby zawartość tych dwóch folderów, a jeśli istnieją dwa pliki o tej samej nazwie i ścieżce, zachowałoby najnowszy oparty na sygnaturze czasowej.
cp -ruvp ~/Downloads/music/* ~/Music/new/


Czy na pewno opcja -u działa z poleceniem cp w OSX? Dostaję komunikat „cp: nielegalna opcja - u” w Sierra. Wygląda na to, że nie wszystkie polecenia są takie same jak w Linuksie.
— OMA

Wypróbuj polecenie cp --help i sprawdź, czy opcja jest dostępna. Lub sprawdź wersję cp i upewnij się, że jest aktualna. Używam: cp (GNU coreutils) 8.27
— drew7721

Niestety, -u nie jest poprawną flagą dla cp na OS X. Bardzo dobrze byłoby mieć!
— Per Quested Aronsson

0

Nie jestem pewien, dlaczego domyślny przycisk Scalanie lwa nie jest dla mnie wyświetlany. Ale skończyło się na tym ditto. Znaleziono tutaj: https://superuser.com/a/221599/102789


1
BĄDŹ OSTROŻNY! ditto nie zachowuje nowszych plików, zawsze nadpisuje miejsce docelowe źródłem. Jeśli plik źródłowy jest starszy, usunie nowy plik i zastąpi starszym plikiem
— FrancescoMM

to prawda - bardzo ważne ostrzeżenie od FrancescoMM, użyj rsync
— Andrzej Martyna
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.