次のコマンドを使用して/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
-
また、見ることができます
man rsync
- 検索結果を繰り返すのはなぜ悪い習慣ですか?
find
usingrsync
で出力を渡す意図について別の質問をしたい場合があります--from-file
。おそらくあなたが望むものを達成するより安全な方法があります。たとえば、-print0
withを使用してwithとペアリングできますfind
。システムのマニュアルを参照してください。-from0
rsync
rsync
find
答え2
find で -exec オプションを使用できます。
find -type f -name /tmp/file -exec rsync -R -av {} root@server:/ \;
{} は前の結果の結果です。つまり、-exec以前に見つかったすべてのものです。 ;execの終わりを示す