rsyncで改行特殊文字で "--files-from"を送信する方法は?

rsyncで改行特殊文字で "--files-from"を送信する方法は?

奇妙な理由で、一部の人には改行文字を含むディレクトリがあります。これは次のように再現できます。

mkdir normal
mv normal why$'\n'would$'\t'you$'\r'dothis

私はこれらの奇妙な文字を含むrsyncファイルとフォルダを担当しています。

現在、rsyncを並列化しているので、ルートを再帰的に処理し、タスクを管理可能な塊に分割する必要があります。ルートディレクトリにはこれらの奇妙な文字はありません。実行するとrsync --dry-run並列化できるファイルが提供されますが、たとえば、\n役割は次のとおりです。\#012、私はそれが8進数だと思います。

ただし、これをエスケープすると、rsync -a --files-from=files.txtrsyncはこのフォルダを見つけることができないため、このエスケープを含む場所を送信できなくなります。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/

関連情報