rsync:パイプからファイルのリストを読む

rsync:パイプからファイルのリストを読む

次のコマンドを使用して/tmp/fileファイルをリモートサーバーに転送できます。rsync

rsync -R -av /tmp/file root@server:/

しかし、パイプするファイルのリストをどのように提供しますか?--files-from=オプションを試しましたが、うまく/dev/stdinいきません。

echo /tmp/file | rsync -R -av --files-from=/dev/stdin root@server:/

(通常のファイルでも機能しません)

たとえば、findの出力を使用できるようにパイプからrsyncを読み取ることはできますか?

答え1

rsyncファイルからパス名を読み取る場合でも、ソースパラメータとターゲットパラメータを指定する必要があります。

echo /tmp/file | rsync -av --files-from=- / user@server:/

読み取ったパス名はソースディレクトリrsyncに基づいています。このオプションは使用時に暗黙的であり、指定された標準入力を使用できます。/-R--files-from-

また、見ることができます

findusingrsyncで出力を渡す意図について別の質問をしたい場合があります--from-file。おそらくあなたが望むものを達成するより安全な方法があります。たとえば、-print0withを使用してwithとペアリングできますfind。システムのマニュアルを参照してください。-from0rsyncrsyncfind

答え2

find で -exec オプションを使用できます。

find -type f -name /tmp/file -exec rsync -R -av {} root@server:/ \;

{} は前の結果の結果です。つまり、-exec以前に見つかったすべてのものです。 ;execの終わりを示す

関連情報