マイコンピュータには500GBのドライブがあります。
/unencrypted
400GBのデータをからに移動したいと思います/encrypted
。
両方のディレクトリは同じパーティションにありますが、/encrypted
次のように表示されます。暗号化されたファイルシステム、したがってmv /uncrypted/* /encrypted
:
- すべてのファイルをターゲットにコピー
- その後、ソースから削除します。
...800GBが必要なので余裕はありません。
ファイルを順番に移動すると問題はありません(ecryptfs領域は動的です)。
mv
ファイルごとにディレクトリファイルを移動するオプションや他のツールはありますか?
ファイル数が多いため、スクリプトベースのソリューションではARG_MAXが問題になる可能性があります。
答え1
以下がある場合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
各コマンドから削除します。