次のコマンドを使用してファイルをリモートホストにコピー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
ことができます。ssh
scp
cp
答え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"