scpを使用してリモートホストにファイルをコピーおよびコピーする

scpを使用してリモートホストにファイルをコピーおよびコピーする

次のコマンドを使用してファイルをリモートホストにコピーscpし、リモートホストにファイルをコピーして追加された日付スタンプバージョンを作成します。

scp myfile.tar.gz [email protected]:/root/myfolder
ssh [email protected] "cd /root/myfolder && cp myfile.tar.gz myfile_2020-06-23.tar.gz"

しかし、追加のリモートコピー(大容量ファイルの場合は少し時間がかかりません)なしで1つのステップでこれを達成する方法はありますか?私は次のようなものをパイピングして使用するsshときに何ができるか考えています。cat - | tee

... | ssh [email protected] "cat - | tee myfile.tar.gz > myfile_2020-06-23.tar.gz"

この質問を表現したいもう一つの方法は....tar.gzファイルをリモートホストにパイプする方法ですかssh?です。これにより、and thenを使用する代わりに、上記のトリックを使用して両方のファイルに同時にパイプして書き込むmyfile.tar.gzことができます。sshscpcp

答え1

リモートサーバーが一般的なUnixコマンドを受け入れると仮定すると、次のことができます。

cat myfile.tar.gz | ssh [email protected] \
        "cd /root/myfolder && tee myfile.tar.gz > myfile_2020-06-23.tar.gz"

catリモートサーバーで実行する必要はありません。catローカルサーバーで実行することも必ずしも必要ではありません。次のようにできます。

ssh [email protected] \
        "cd /root/myfolder && tee myfile.tar.gz > myfile_2020-06-23.tar.gz" \
        < myfile.tar.gz
        ^^^^^^^^^^^^^^^-- Redirect from the file

必要に応じてtarパイプで接続することもできます。ssh

tar czf - myfiles | ssh [email protected] \
        "cd /root/myfolder && tee myfile.tar.gz > myfile_2020-06-23.tar.gz"

関連情報