Ich versuche, alle Unterverzeichnisse eines Ordners auf eine andere Freigabe auf demselben Server zu verschieben. Wenn ich ein MV * mache, wird mir der Speicherplatz ausgehen, da die Ordner erst entfernt werden, wenn alle Ordner übertragen wurden. Daher möchte ich ein kurzes Skript erstellen, das jedes einzelne durchläuft. Hat jemand ein Beispiel, das ich mir ansehen kann? Ich habe mich umgesehen, kann aber nicht genau das finden, wonach ich suche.
scripting
filesystems
file-transfer
NinjaCat
quelle
quelle
Antworten:
Sie könnten verwenden
rsync(1)
:Dadurch werden erfolgreich übertragene Dateien aus dem ursprünglichen Pfad entfernt.
quelle
Du willst
for
.Ein Beispiel (dies zeigt nur, was getan wird):
Wenn Sie glücklich sind, entfernen Sie, um
echo
es wirklich zu tun.quelle
Die Verwendung des
mv
Befehls zum Verschieben von Dateien von einem Volume auf ein anderes Volume ist ein Kopiervorgang. Aber wie würde Ihnen der Speicherplatz auf dem Quellvolume ausgehen? Auf dem Zieldatenträger würde nur dann der Speicherplatz ausgehen, wenn dieser Datenträger kleiner als die Gesamtgröße der Dateien ist, die Sie verschieben. In beiden Fällen wird jedoch nur Speicherplatz auf dem Quellvolume freigegeben, nicht jedoch mehr Speicherplatz.Wenn Sie
mv
Dateien auf demselben Volume von einem Verzeichnis in ein anderes verschieben, ist dies nur ein Umbenennungsvorgang. Sie kopieren keine Daten, sondern passen lediglich die Dateizeiger an, um eine andere Verzeichnishierarchie anzuzeigen. Ihnen wird nicht der Speicherplatz ausgehen, da die Dateidaten genau dort bleiben, wo sie waren.Ich bin mir nicht sicher, ob ich das Problem sehe. :-) Hast du das tatsächlich versucht und hast keinen Platz mehr oder versuchst du nur vorauszuplanen?
quelle
mv
den effizienten Weg zu nutzen.ls -1 | xargs -n1 -i echo mv '{}' destination
Entfernen Sie einfach das Echo, wenn Sie zufrieden sind.
quelle
Nur als Referenz glaube ich, dass der
mv
Befehl keine Kopier- und Löschoperation ausführt, dh hatmv /home/foo /home/bar
existieren gleichzeitig für eine kurze Zeit. Es funktioniert eher wie das Umbenennen. Es ist wichtig, die Dateisystemabrechnung so zu ändern, dass das, worauf
/home/foo
jetzt hingewiesen wird, darauf hinweist,/home/bar
dass die Daten auf der Festplatte nicht physisch von einem Ort an einen anderen verschoben oder kopiert und dann vom vorherigen Speicherort gelöscht werden.quelle