mv löscht Dateien am Ende anstatt eins nach dem anderen

349
Paperino

Ich verschiebe einen Ordner rekursiv zwischen zwei Dateisystemen mit mv -v. Es scheint, als würden am Ende Löschungen stattfinden (um mv transaktional zu machen ?). Ich habe nicht genug Speicherplatz für zwei Kopien desselben Ordners. Gibt es eine Möglichkeit, mv zu zwingen, eine Datei zu löschen, sobald sie fertig ist?

0
Ein "mv" sollte nur dann zusätzlichen Speicherplatz zuweisen, wenn er auf eine andere Partition verschoben wird. Andernfalls werden lediglich die Inodes aktualisiert, um den neuen Speicherort auf der Partition anzuzeigen. Sie werden weder kopiert noch gelöscht. Wenn Sie jedoch auf eine neue Partition kopieren, ist mir unklar, warum Sie den Speicherplatz nicht sparen können, da beide Partitionen ausreichend sein sollten, um das gesamte Verzeichnis zu speichern (oder das Ganze wird nie funktionieren, weil das Ziel zu klein ist.) ). Frank Thomas vor 5 Jahren 0
Anscheinend macht mv nichts rekursiv. Es wird jeden Ordner der obersten Ebene verschieben. Das ist gut genug für mich, der Inhalt ist gleichmäßig zwischen den Ordnern der obersten Ebene aufgeteilt und ich habe genügend Platz für jeweils 2 Kopien. PS mein Fall war mit 2 ZFS-Dateisystemen im selben Pool verbunden. Aus einer MV-Perspektive unterscheiden sich diese, aus der Speicherperspektive werden sie geteilt. Ich weiß nicht, ob es Sinn macht. Paperino vor 5 Jahren 0
Ahh, das macht Sinn. Multi-Disk-Aggregationen verwirren die Sache. Leider funktioniert mv nicht für Sie, also schauen Sie sich Alternativen wie ein Shell-Skript an, um die Unterverzeichnisse aufzulisten und einzeln zu verarbeiten (Kopieren, Löschen, Spülen, Wiederholen) . Frank Thomas vor 5 Jahren 0

1 Antwort auf die Frage

1
Frank Thomas

Nein, die Man-Seiten für mvzeigen keine Schalter an, die das Verhalten des Befehls in der von Ihnen beschriebenen Weise ändern. Sie müssen sich andere Befehle oder Algorithmen ansehen.

Name

mv - move (umbenennen) Dateien Synopse

mv [OPTION] ... [-T] QUELLE DEST

mv [OPTION] ... QUELLE ... VERZEICHNIS

mv [OPTION] ... -t VERZEICHNISQUELLE ...

Beschreibung

Benennen Sie SOURCE in DEST um, oder verschieben Sie SOURCE (s) in VERZEICHNIS.

Zwingende Argumente für lange Optionen sind auch für kurze Optionen obligatorisch.

--backup [= CONTROL]

make a backup of each existing destination file 

-b

like --backup but does not accept an argument 

-f, --force

do not prompt before overwriting 

-i, --interaktiv

prompt before overwrite 

-n, - no-clobber

do not overwrite an existing file 

Wenn Sie mehr als -i, -f, -n angeben, wird nur die letzte wirksam.

--strip-nachlaufende Schrägstriche

remove any trailing slashes from each SOURCE argument 

-S, --suffix = SUFFIX

override the usual backup suffix 

-t, --target-directory = DIRECTORY

move all SOURCE arguments into DIRECTORY 

-T, --no-Zielverzeichnis

treat DEST as a normal file 

-u, - Update

move only when the SOURCE file is newer than the destination file or when the destination file is missing 

-v, --verbose

explain what is being done 

--Hilfe

display this help and exit 

--Ausführung

output version information and exit 

Das Backup-Suffix lautet '~', sofern es nicht mit --suffix oder SIMPLE_BACKUP_SUFFIX gesetzt ist. Die Versionskontrollmethode kann über die Option --backup oder über die Umgebungsvariable VERSION_CONTROL ausgewählt werden. Hier sind die Werte:

keine, aus

never make backups (even if --backup is given) 

nummeriert, t

make numbered backups 

vorhanden, null

numbered if numbered backups exist, simple otherwise 

einfach, niemals

always make simple backups 

Quelle: https://linux.die.net/man/1/mv