Nic*_*oul 20 scripting file-copy rename files
我的电脑有一个 500GB 的驱动器。
我想将数据从移动400GB/unencrypted
到/encrypted
。
两个目录都在同一分区上,但/encrypted
由ecryptfs处理,因此mv /uncrypted/* /encrypted
:
...我买不起,因为它需要 800GB。
如果文件一个一个地移动,就不会有问题(ecryptfs 区域是动态的)。
是否有mv
选项或其他工具可以逐个文件地移动目录?
有大量文件,因此 ARG_MAX 可能是基于脚本的解决方案的问题。
Chr*_*own 20
如果您有rsync
(删除--dry-run
以真正做到):
rsync --dry-run --remove-source-files -avHAX /unencrypted/ /encrypted
Run Code Online (Sandbox Code Playgroud)
否则,使用 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
Run Code Online (Sandbox Code Playgroud)
要真正运行它,请echo
从每个命令中删除。
归档时间: |
|
查看次数: |
784 次 |
最近记录: |