如何在rsync中发送带有换行特殊字符的“--files-from”?

如何在rsync中发送带有换行特殊字符的“--files-from”?

由于某些奇怪的原因,有些人的目录中包含换行符,可以通过以下方式重现:

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/

相关内容