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
よろしく、ヌーブ
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.191
192.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の結果をキャプチャすることです。
-C
フラグを使用して、scp
転送でcの表示を有効にすることができます。圧縮の詳細については man scp
を確認できますが、これで十分です。
リモートサーバーからローカルアーカイブにファイル/ディレクトリを取得する必要がある場合は、ssh内でtar + gzipを使用して、ローカルファイルにリダイレクトできます。例えば:
ssh user@server "Sudo tar cvzf - /var/log/containers/**/*.log" > containers_logs.tgz
どこ: