web-dev-qa-db-ja.com

gzipとscpを同時に行う方法

Zip形式で圧縮し、同時にscpを使用して別のホストに転送したいファイルがあります。

次のコマンドを実行しようとしましたが、失敗しました。後で圧縮してscpするのはかまいませんが、どこで間違ったのか知りたいだけです

パイプを使うのは間違っていますか?ここ?

-bash-3.2$ gzip -c aum.dmp | scp [email protected]:/export/home/Oracle/aum.dmp.gz
Usage: scp [-pqrvBC46] [-F config] [-S program] [-P port]
           [-c cipher] [-i identity] [-o option]
       [[user@]Host1:]file1 [...] [[user@]Host2:]file2

よろしく、ヌーブ

5
Noob

gzipはSTDOUTに書き込み、scpはそれを処理できません。

試してみてください

gzip -c aum.dmp | ssh -l  Oracle 192.168.0.191 'cat > /export/home/Oracle/aum.dmp.gz'

代わりに。

どこ

  • gzip -c aum.dmp | aum.dmpをgzipで圧縮し、結果をstdoutに送信します
  • ssh -l Oracle 192.168.0.191192.168.0.191上のユーザーOracleに接続します
  • 'cat > /export/home/Oracle/aum.dmp.gz'このコマンドを実行します

'cat> /export/home/Oracle/aum.dmp.gz'

  • catはstdinをキャプチャします(|の前のコマンドからのstdout)
  • > /export/home/Oracle/aum.dmp.gzこの/export/home/Oracle/aum.dmp.gzに書き込みます

リモートサイトで実行されるcat部分の全体的な目的は、gzipの結果をキャプチャすることです。

5
Archemar

-Cフラグを使用して、scp転送でcの表示を有効にすることができます。圧縮の詳細については man scp を確認できますが、これで十分です。

5
Felipe Lema

リモートサーバーからローカルアーカイブにファイル/ディレクトリを取得する必要がある場合は、ssh内でtar + gzipを使用して、ローカルファイルにリダイレクトできます。例えば:

ssh user@server "Sudo tar cvzf - /var/log/containers/**/*.log" > containers_logs.tgz

どこ:

  • c-アーカイブファイルを作成します。
  • v-進行状況を表示します。
  • z-gzipで圧縮します。
  • f-アーカイブのファイル名。
4
Noam Manos