Frage: Kürzlich musste ich eine große Anzahl von Dateien mit einem Speicherplatz von 7 TB an einen anderen Ort auf meiner CentOS-Box kopieren. Ich habe den Befehl „cp“ verwendet, aber aus irgendeinem Grund (möglicherweise ein Netzwerkproblem) wurde der Befehl nach dem Kopieren einiger Dateien und Verzeichnisse beendet. Wenn ich jetzt den Kopiervorgang wieder aufnehme, beginnt der Befehl von vorne und kopiert die bereits kopierten Dateien (was wiederum verdammt viel Zeit und CPU kostet). Meine Frage ist also, kann ich "cp" sagen ‘ Befehl, um die bereits kopierten Dateien und Verzeichnisse zu ignorieren (damit ich etwas Zeit und CPU sparen kann). Irgendwelche Vorschläge?
Antwort: Sie können entweder „cp ‘ Befehl oder ‘rsync ‘ um Dateien zu kopieren.
Lösung1:Zuerst sehen wir den CP-Befehl:
cp -u --force <src> <dst>
Hier – u kopiert eine Datei nur, wenn die SOURCE-Datei neuer als die Zieldatei ist oder wenn die Zieldatei fehlt.
Hinweis :Falls der obige Befehl wie unten angezeigt wird:
cp : overwrite '<filename>'
Dann wird das „cp ‘Befehl wäre ein Alias mit einem interaktiven Modus! Um den Alias von „cp“ zu finden, geben Sie den folgenden Befehl ein:
# type cp
cp is aliased to `cp -i'
Da es interaktiv ist, forderte es Benutzereingaben auf, selbst wenn Sie –force angegeben hatten Möglichkeit. Um das Obige zu vermeiden und nicht-interaktiv zu kopieren, verwenden Sie den absoluten Pfad des cp-Befehls wie unten gezeigt:
/usr/bin/cp -u --force <src> <dst>
Lösung 2:Verwendung des rsync-Befehls:
# rsync -av --ignore-existing<src> <dst>
Hinweis :rsync erstellt im Voraus eine Dateiliste. Wenn Ihre Quelle eine große Nr. von Dateien, dann rsync dauert Stunden und Stunden und Stunden, um eine so große Dateiliste zu erstellen! und Sie denken vielleicht, dass der Prozess hängen geblieben ist, fügen Sie stattdessen -p hinzu Option und Sie sehen einen Fortschrittsbalken und Sie müssen wirklich nicht glauben, dass rsync hängt!