由于某些奇怪的原因,有些人的目录中包含换行符,可以通过以下方式重现:
mkdir normal
mv normal why$'\n'would$'\t'you$'\r'dothis
我负责rsync包含这些奇怪字符的文件和文件夹。
我目前正在并行化我的 rsync,因此我需要递归根目录并将工作分解为可管理的块。根目录没有这些疯狂的字符。运行rsync --dry-run
给我提供了可以并行化的文件,但是例如\n
角色变成\#012
,我怀疑是八进制。
但是,当它像这样转义时,我无法再发送包含此转义的rsync -a --files-from=files.txt
位置,因为 rsync 找不到此文件夹。files.txt
\#012
在这种情况下我该怎么办?我是否缺少一些额外的转义步骤,可以让 rsync 拾取此信息?我不可能写一个\n
因为文件:
somedumb\nthing
变成
somedumb
thing
答案1
您应该使用该--from0
参数,它允许发送者用\0
.
cd /source/path1 &&
find . -print0 | rsync -av --files-from=- --from0 . remote:/target/
或者
find /source/path1/./ -print0 | rsync -av --files-from=- --from0 / remote:/target/