名前にコロンが含まれる複数のファイルをrsyncする

名前にコロンが含まれる複数のファイルをrsyncする

rsyncファイル名のコロンは、その前がリモートマシン名であることを示すものとして解釈されます。コロンがファイル名に含まれているファイルをrsyncしようとすると、rsyncは通常混乱し、次のようなエラーが発生します。

The source and destination cannot both be remote.
rsync error: syntax or usage error (code 1) at main.c(1166) [Receiver=3.0.9]

または

Unexpected remote arg: 02\:12\:43.481000"
rsync error: syntax or usage error (code 1) at main.c(1232) [sender=3.0.9]

(私の使用例では、名前に日付が含まれるファイルが多数あることに注意してください)

ワイルドカードを使用してファイルを選択的に送信するために rsync を使用するにはどうすればよいでしょうか。次のような感じです:

rsync -avz my_special_files* othermachine:/other/path/

答え1

親ディレクトリから実行します:

rsync -avz parent_directory/my_special_files* othermachine:/other/path/

そして、それは動作します (少なくとも rsync 3.09 プロトコル バージョン 30 を搭載した ubuntu 12.04 では)。

理由は? rsync がホストを認識するために使用するロジックに関係しています。単語の前にあるスラッシュはホストとは見なされないようです。奇妙なことに、 、を使用してfindすべての名前の前に「./」が付くようにしても、まだ機能しませんでした。

この種の問題についてはいくつかの議論がありますが、例えばこれ、ワイルドカードの使用などについては触れられていません。しかし、最終的にうまくいった方法を試してみようという気持ちになりました。

関連情報