Wie entferne ich Verzeichnisse aus der Quelle, nachdem ich sie kopiert habe?

Wie entferne ich Verzeichnisse aus der Quelle, nachdem ich sie kopiert habe?

Ich möchte nur Verzeichnisse verschieben. Ich habe mir nacheinander mv, cp und rsync angesehen, da jedes Tool nacheinander nicht die Option zu haben schien, Verzeichnisse nach dem Kopieren aus der Quelle zu entfernen. Beispielsweise benötigt mv Dateien, keine Verzeichnisse, wenn sich src und dst auf unterschiedlichen Geräten befinden:

„Verschieben zwischen Geräten fehlgeschlagen: Quelle zu Ziel; Ziel kann nicht entfernt werden: Ist ein Verzeichnis“

Der einfachste Weg, dies zu tun, besteht wahrscheinlich darin, einen zusätzlichen Löschbefehl zu verwenden, obwohl ich diesen lieber nicht verwenden würde, da dadurch das Risiko eines Datenverlusts steigt.

Antwort1

Wie Bob sagte. Leider kann ich (noch) nichts dazu sagen, daher muss ich meine Anpassungen hier einfügen. Ich würde vorschlagen, eine leicht modifizierte Version von Bobs Befehl zu verwenden:

cp -rp source-dir target-dir && rm -r source-dir;

Das doppelte Et-Zeichen stellt sicher, dass der zweite Befehl nur ausgeführt wird, wenn der erste beendet ist.erfolgreich- es wäre schrecklich, wenn das Kopieren aus irgendeinem Grund fehlschlagen würde (z. B. nicht genügend Speicherplatz auf dem Zielvolume) und die Quelle trotzdem gelöscht würde ...

Antwort2

Eigentlich,mvkann Verzeichnisse „verschieben“, aber nicht zwischen Geräten oder Dateisystemen. Es läuft sehr schnell, weil es nur den Dateizeiger neu definiert; die Inhalte selbst werden nicht kopiert.

Sie benötigen also zwei Befehle (kopieren und dann entfernen). Auf meinem Solaris-System verschiebe ich Verzeichnisse mit diesen beiden Befehlen:

cp -rp source-dir target-dir; rm -r source-dir;

Lesen Sie die Manpages, um sicherzustellen, dass Sie die richtige Syntax für Ihre Umgebung und für die Behandlung aller möglicherweise vorhandenen symbolischen Links verwenden.

verwandte Informationen