web-dev-qa-db-ja.com

stdoutにRsyncしますか?

Rsyncプロトコルを介してバックアップサーバーにアクセスできます(rsyncのみ、他には何もありません)。ここで、そこからファイル(.tar.gz)をフェッチし、アーカイブをローカルファイルシステムに保存せずに、直接tarコマンドに渡します。

視覚化するには、sshアクセスで次のことができます。

ssh remote_Host cat backup.file.tar.gz | tar xzf -

そして、実際に.tar.gzをローカルマシンに保存せずに、非圧縮バックアップをローカルで取得します。

Rsyncを使用するときに達成することは可能ですか?

7
user7385

通常、次のように名前付きパイプを使用できます。

mkfifo mypipe
tar xzf mypipe &
rsync --inplace server:/remote/file.tar.gz mypipe

ただし、rsyncは、リモートファイルが通常のファイルであり、ローカルファイルがパイプであることを認識するため、それ自体では賢すぎます。そのため、最初にパイプを削除してから、リモートファイルを転送します。 scpにはこの問題はなく、名前付きパイプにデータを送信します(残念ながら、ここでは役に立ちません)。

4
Brian

そうは思いませんが、scpを使用できる可能性があります。

scp file /dev/stdout

ファイルを標準出力にコピーします。 scpのコマンドライン引数に、ファイルのソースに必要なリモートユーザーとホストの情報を追加できます。

rsyncは、rshまたはsshプロトコルのみを実行できます。 sshを使用していない場合は、rshを使用している必要があります。 sshをrshコマンドに置き換えるだけです。

rsh remote_Host cat backup.file.tar.gz | tarxzf-

0
TD1

短くするために:あなたはできません。 rsyncは、rsyncの2つのインスタンス(クライアント側とサーバー側)間で通信して、違いを見つけることで機能します。 tarは「rsyncish」を話すことができません。

0
akira