私のコンピューターには500GBのドライブが1つあります。
400GBのデータを/unencrypted
から/encrypted
に移動したい。
両方のディレクトリは同じパーティションにありますが、/encrypted
は ecryptfs によって処理されるため、mv /uncrypted/* /encrypted
は次のようになります。
... 800GBが必要なため、余裕がありません。
ファイルを1つずつ移動した場合、問題はありません(ecryptfsゾーンは動的です)。
ディレクトリをファイルごとに移動するmv
オプションまたは別のツールはありますか?
ファイルの数が非常に多いため、ARG_MAXはスクリプトベースのソリューションでは問題になる可能性があります。
rsync
がある場合(実際に実行するには--dry-run
を削除してください):
rsync --dry-run --remove-source-files -avHAX /unencrypted/ /encrypted
それ以外の場合は、bash4 +と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
実際に実行するには、各コマンドからecho
を削除します。