Files
如何逐個文件移動目錄?(而不是“複製然後刪除”)
我的電腦有一個 500GB 的驅動器。
我想將 400GB 的數據
/unencrypted
從/encrypted
.兩個目錄都在同一個分區上,但
/encrypted
由ecryptfs處理,因此mv /uncrypted/* /encrypted
:
- 將所有文件複製到目標
- 然後從源中刪除它們
…我買不起,因為它需要 800GB。
如果文件一個接一個地移動,就沒有問題(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
從每個命令中刪除。