使用 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"

但是,有没有一种方法可以一步实现这一目标,而无需额外的远程复制(对于大文件来说,这需要一些时间)?我正在考虑在管道传输ssh和使用时可以执行的操作,cat - | tee如下所示:

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

我想表达这个问题的另一种方式是......我如何通过管道将.tar.gz文件传输到远程主机ssh?这样,我可以通过管道myfile.tar.gzssh使用上述技巧同时写入两个文件,而不是使用scpand then 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"

相关内容