Wie verschiebe ich ein Verzeichnis Datei für Datei? (anstelle von "kopieren dann entfernen")

20

Mein Computer hat ein 500 GB-Laufwerk.

Ich möchte 400 GB Daten von /unencryptednach verschieben /encrypted.

Beide Verzeichnisse sind auf der gleichen Partition, sondern /encryptedwird durch gehandhabt ecryptfs , so mv /uncrypted/* /encryptedwürde:

  1. Kopieren Sie alle Dateien zum Ziel
  2. Dann entfernen Sie sie von der Quelle

... was ich mir nicht leisten kann, weil es 800GB benötigt.
Wenn Dateien einzeln verschoben würden, gäbe es kein Problem (die ecryptfs-Zone ist dynamisch).

Gibt es eine mvOption oder ein anderes Tool, das ein Verzeichnis Datei für Datei verschiebt?
Da eine große Anzahl von Dateien vorhanden ist, kann ARG_MAX ein Problem für skriptbasierte Lösungen darstellen.

Nicolas Raoul
quelle

Antworten:

20

Wenn Sie haben rsync(entfernen --dry-run, um es wirklich zu tun):

rsync --dry-run --remove-source-files -avHAX /unencrypted/ /encrypted

Ansonsten mit bash4 + und GNU stat:

#!/bin/bash

set -e

shopt -s nullglob globstar

for from in /unencrypted/**/*; do
    to="${from/\/un//}"
    if [[ -d "$from" ]]; then
        echo mkdir -p "$to"
        echo chmod "$(stat -c %a "$from")" "$to"
        echo chown "$(stat -c %u:%g "$from")" "$to"
    else
        echo cp -a "$from" "$to" && echo rm "$from"
    fi
done

echo rm -r /unencrypted

Entfernen Sie echoaus jedem Befehl , um es für echt auszuführen .

Chris Down
quelle
Ich liebe die Rsync-Idee! Anscheinend werden Dateien tatsächlich entfernt, wenn sie verschoben werden: superuser.com/questions/405761
Nicolas Raoul
@NicolasRaoul Wenn ich mich richtig erinnere, werden die Entfernungen gepuffert, aber es ist fast eins zu eins kopieren / entfernen.
Chris Down
Brocken sind in Ordnung für mich, solange jeder Brocken weniger als 50 GB wiegt.
Nicolas Raoul
Müssten Sie nicht auch --dry-runvon der rsync-Befehlszeile entfernen ?
ein Lebenslauf
1
@meduz vist optional und druckt nur die Dateinamen, wenn sie übertragen werden. aHAXist erforderlich, um alle möglichen Dateiattribute beizubehalten - aist archiviert, HAXist "Hardlinks, ACLs und erweiterte Attribute beibehalten".
Chris Down