Nur neue Dateien kopieren - ist das möglich? Grundsätzlich möchten zwei Ordner zusammengeführt werden


14

Ich habe einen Ordner auf Laufwerk 1 mit dem Namen Musik, der 100 GB groß ist. Ich habe einen Ordner auf Laufwerk 2 mit dem Namen Musik, der 116 GB groß ist. Es ist die aktuellste Version. Wie kopiere ich den Musikordner von Laufwerk 2 auf Laufwerk 1, ohne jede einzelne Datei neu schreiben zu müssen?


Welche Version von OS X verwenden Sie?
Nix

1
Ich benutze 10.7.4. Wenn ich den Ordner von einem Laufwerk auf das andere kopiere, werde ich gefragt, ob ich ihn ersetzen möchte. Keine Zusammenführungsoption.
dallen

Antworten:


5

Die Zusammenführungsoption wird nur angezeigt, wenn Sie den Ordner kopieren (anstatt ihn zu verschieben). optionStellen Sie sicher, dass Sie gedrückt halten, während Sie den neuen Ordner an den Speicherort des alten Ordners ziehen. Wenn Sie alternativ + czum Kopieren des neuen Ordners und + vzum Einfügen über den alten Ordner verwenden, können Sie die Dateien zusammenführen.


Dies scheint immer noch über Dateien zu schreiben, die nicht neu geschrieben werden müssen. Verwenden Sie rsyncstattdessen
BRogers

Selbst wenn die Option zum Zusammenführen verfügbar ist, funktioniert sie manchmal nicht (meldet nur einen Fehler und unternimmt nichts) - insbesondere bei großen Ordnern wie in Ihrem Fall. Dies ist ein weiterer Grund, warum Sie rsync verwenden sollten.
Andrzej Martyna

24

Dies ist ein klassischer Anwendungsfall für rsync:

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

rsync kopiert nur neue und geänderte Dateien an den neuen Speicherort.

Es ist wichtig zu verstehen, wie ein abschließender Schrägstrich im Quellargument funktioniert. Wenn es ein Schrägstrich wird dann der Inhalt / Quelle-Pfad / source-dir wird kopiert Ziel-Pfad . Wenn kein abschließender Schrägstrich vorhanden ist, wird das Quellverzeichnis selbst in das Ziel kopiert und sein Inhalt befindet sich auf einer anderen Ebene in der Zielhierarchie.

Wenn Sie also einen Pfad auf einen anderen replizieren möchten, fügen Sie den abschließenden Schrägstrich wie folgt ein:

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

1
Großer Fang! Und wenn Sie dies von mehreren Laufwerken (oder irgendwo auf Ihrem Computer) aus tun und die Verzeichnisse nicht eingeben möchten, können Sie einfach ein Laufwerk (externer USB oder Zeitkapsel) oder nur ein bestimmtes Verzeichnis ziehen und hinzufügen lassen es auf den Befehl für Sie. Ziehen Sie einfach den Zielort in das Terminal
BRogers

Mann, vielen Dank, dass Sie den abschließenden Schrägstrich vorgeschlagen haben. Ich habe darüber nachgedacht, warum rsync -av ./foo/bar / vol1 / foo / bar alle vorhandenen Dateien kopiert hat. Blutige Schrägstriche lol !!!
sming

4

AKTUALISIEREN

Installieren Sie zuerst Coreutils. Ausführen brew install coreutils. Wenn Sie nicht habenbrew installiert haben ... wechseln Sie zurück zu Windows!

Überprüfen Sie, ob die cp --versionVersion cp (GNU coreutils) 8 ausgegeben wird. ^^

Dann haben Sie die richtige cpVersion und das -uFlag funktioniert.


Überprüfen Sie den cpBefehl. Verwenden man cpund lesen Sie die Optionen. Sie können so etwas tun wie:

cp -r -u ~/source ~/destination

-R, -r , --recursive: Verzeichnisse rekursiv kopieren
-u , --update: Nur kopieren, wenn die SOURCE-Datei neuer als die Zieldatei ist oder wenn die Zieldatei fehlt
-p wie --preserve = mode, owner , Zeitstempel
-v --verbose: Erklären Sie, was getan wird

Wenn Sie also Dateien aus Ihrem Ordner " Downloads / Musik " kopieren möchten, um Ihren Ordner " Musik / Neuer" anzugeben, gehen Sie wie folgt vor : Dadurch wird der Inhalt dieser beiden Ordner zusammengeführt, und wenn zwei Dateien mit demselben Namen und Pfad vorhanden sind, wird die Datei beibehalten neueste basierend auf dem Zeitstempel.
cp -ruvp ~/Downloads/music/* ~/Music/new/


Sind Sie sicher, dass die Option -u mit dem Befehl cp in OSX funktioniert? Ich erhalte die Nachricht "cp: illegale Option - u" in Sierra. Es scheint, dass nicht alle Befehle mit Linux identisch sind.
OMA

Probieren Sie den Befehl cp --help aus und prüfen Sie, ob die Option verfügbar ist. Oder überprüfen Sie die cp --version und stellen Sie sicher, dass sie aktuell ist. Ich benutze: cp (GNU coreutils)
8.27

Leider ist -u unter OS X kein gültiges Flag für cp. Es wäre sehr praktisch zu haben!
Per Quested Aronsson

Leider ist diese Antwort falsch.
William Cerniuk

Verwenden Sie brew install coreutils, um die richtige cpVersion zu erhalten.
zog7721

0

Ich bin mir nicht sicher, warum die Standardschaltfläche zum Zusammenführen von Löwen für mich nicht angezeigt wird. Aber am Ende habe ich verwendet ditto. Hier zu finden: https://superuser.com/a/221599/102789


1
ACHTUNG! ditto speichert keine neueren Dateien, sondern überschreibt das Ziel immer mit der Quelle. Wenn die Quelldatei älter ist, wird die neue Datei entfernt und durch eine ältere Datei ersetzt
FrancescoMM

das ist richtig - sehr wichtige Warnung von FrancescoMM, benutze rsync
Andrzej Martyna
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.