如何通过ssh连接到另一台服务器后在shell脚本中下载文件?

时间:2012-01-18 10:42:21

标签: linux ssh download

我的目标:

使用ssh(公钥/私钥登录)连接到Debian计算机的cronjob(在MacOSX Snow Leopard上)的shellcript,执行tar命令并随后下载tarred文件。

我的问题:

登录工作,也执行一些命令。但是如何将文件下载回本地计算机?

这是我到目前为止所拥有的:

到目前为止,这是shell脚本的内容:

#!/bin/bash
ssh user@remotehost << 'ENDSSH'
tar -C / -czf /home/user/stuff.tar.gz /home/user/stuff
ENDSSH

6 个答案:

答案 0 :(得分:2)

简短而简单,不需要heredoc。

ssh -Te none user@remotehost "tar -C / -cz /home/user/stuff" >stuff.tar.gz

答案 1 :(得分:1)

将其传回去。

#!/bin/bash
ssh user@remotehost << 'ENDSSH' > stuff.tar.gz
tar -C / -czf - /home/user/stuff
ENDSSH

答案 2 :(得分:1)

这可能是你想要的。

scp stuff.tar.gz user@remotehost:/"directory to place this file"/

答案 3 :(得分:1)

创建文件后,只需rsync

#!/bin/bash
ssh user@remotehost tar -C / -czf /home/user/stuff.tar.gz /home/user/stuff
rsync -chavP --stats user@remotehost:/home/user/stuff.tar.gz .

启动与remotehost的第二次连接,但是当文件自上次存档以来没有发生任何变化时,可以节省您在网络中复制数据的时间。

答案 4 :(得分:1)

为什么要下载tar文件而不在stdout上创建tar内容?

即:

ssh user@machine '(' cd /the/dir '&&' tar cf - list of files ')' >archive.tar

答案 5 :(得分:0)

予。如何通过SSH压缩文件或文件夹

对于不同的压缩格式,您需要使用不同的命令行:

  1. 邮编
  2. 将文件或文件夹压缩为zip文件:

    zip -r file.zip file
    
    1. BZ2
    2. 将文件(仅限)压缩为bz2文件:

      Bzip2 -zk file
      
      1. GZ
      2. 将文件(仅限)压缩为gz文件:

        gzip -c file > file.gz
        

        顺便说一句,您需要将上面的“文件”更改为您要压缩的扩展名(如果有)的文件名,而您可以用以下任何关键字替换以下“xxx”:

        1. 焦油
        2. 将一个文件或文件夹压缩为tar文件:

          tar -cvf xxx.tar file
          

          将多个文件和/或文件夹压缩为tar文件:

          tar -cvf xxx.tar file1 file2 folder1 folder2 ...
          
          1. TAR.BZ2
          2. 将一个文件或文件夹压缩为tar.bz2文件:

            tar -cvjf xxx.tar.bz2 file
            

            将多个文件和/或文件夹压缩为tar.bz2文件:

            tar -cvjf xxx.tar.bz2 file1 file2 folder1 folder2 ...
            
            1. .tar.gz的
            2. 将一个文件或文件夹压缩为tar.gz文件:

              tar -cvzf xxx.tar.gz file
              

              将多个文件和/或文件夹压缩为tar.gz文件:

              tar -cvzf xxx.tar.gz file1 file2 folder1 folder2 ...
              

              II。如何通过SSH提取文件

              提取文件会更容易,因为您不必担心文件夹:

              1. 邮编
              2. 提取zip文件:

                unzip file.zip
                
                1. BZ2
                2. 提取bz2文件:

                  bunzip2 file.bz2 
                  
                  1. GZ
                  2. 提取gz文件:

                    gzip -d file.gz 
                    
                    1. 焦油
                    2. 提取tar文件:

                      tar -xvf file.tar
                      
                      1. TAR.BZ2
                      2. 提取tar.bz2文件:

                        tar -xvjf file.tar.bz2 
                        
                        1. .tar.gz的
                        2. 提取tar.gz文件:

                          tar -xvzf file.tar.gz 
                          

                          顺便说一下,你需要用真实的文件名替换压缩文件的上述“文件”。

                          加成:

                          除了远程服务器之外,上述命令行也可用于具有终端应用程序的Mac OS计算机。