2012-01-18 49 views
2

我的目標:如何在通過ssh連接到另一臺服務器後通過shell腳本下載文件?

具有一個cronjob(MacOSX上雪豹)連接到Debian系統中使用ssh(公鑰/私鑰登錄)一個shell腳本,執行tar命令,並下載打包的文件之後。

我的問題:

登錄作品,一些命令也執行。但是,如何將文件下載回本地機器?

這是我到目前爲止有:

這是迄今爲止shell腳本的內容:

#!/bin/bash 
ssh [email protected] << 'ENDSSH' 
tar -C/-czf /home/user/stuff.tar.gz /home/user/stuff 
ENDSSH 
+0

爲什麼不簡單地scp呢? – 2012-01-18 10:45:08

+1

@МихаилСтрашун:因爲它還不存在。 – 2012-01-18 10:45:56

+0

我無法立即測試,但嘗試:「scp user @ debian_machine:/ path_to_tar/path/to/local/folder」 – hovanessyan 2012-01-18 10:46:02

回答

2

短期和簡單,無定界符需要。

ssh -Te none [email protected] "tar -C/-cz /home/user/stuff" >stuff.tar.gz 
+0

漂亮!非常感謝。我會將此標記爲已接受的答案,因爲它還包含一些改進閱讀的腳本;-) – acme 2012-01-18 14:02:40

1

流回來。

#!/bin/bash 
ssh [email protected] << 'ENDSSH' > stuff.tar.gz 
tar -C/-czf - /home/user/stuff 
ENDSSH 
+0

非常好的主意,謝謝! – acme 2012-01-18 13:59:39

+0

我會給予約根森公認的答案,因爲他提出了一個很好的改進提示,我現在使用,雖然你的答案是第一個提出漂亮的流式思想的答案。希望你不介意。一個恥辱,不能有兩個答案被標記爲接受;-) – acme 2012-01-18 14:04:55

1

這可能是你想要的。

scp stuff.tar.gz [email protected]:/"directory to place this file"/

+0

謝謝,我已經想過這樣的事情,但使用標準輸出沒有額外的連接的解決方案是更優雅一點。 – acme 2012-01-18 14:05:56

1

只需rsync一旦文件的創建:

#!/bin/bash 
ssh [email protected] tar -C/-czf /home/user/stuff.tar.gz /home/user/stuff 
rsync -chavP --stats [email protected]:/home/user/stuff.tar.gz . 

發起remotehost第二個連接,但會爲您節省複製在網絡上的數據時,該文件並沒有改變(多)自從上次被歸檔以來。

1

爲什麼下載tar文件,而不是建立在標準輸出上焦油含量?

即:

ssh [email protected] '(' cd /the/dir '&&' tar cf - list of files ')' >archive.tar 
0

I.如何通過SSH

對於不同壓縮格式壓縮文件或文件夾,您需要使用不同的命令行:

  1. 郵編

要將文件或文件夾壓縮到一個zip文件:

zip -r file.zip file 
  • BZ2
  • 到一個文件(ONLY)壓縮到BZ2文件:

    Bzip2 -zk file 
    
  • GZ
  • 壓縮的文件(僅)至GZ的文件:

    gzip -c file > file.gz 
    

    順便說一句,你需要將上面的「文件」更改爲文件名的擴展名爲要壓縮,同時可以與任何關鍵字替換下面的「XXX」(如果有的話):

  • 焦油
  • 要壓縮一個文件或文件夾到一個tar文件:

    tar -cvf xxx.tar file 
    

    要壓縮多個文件和/或文件夾到一個tar文件:

    tar -cvf xxx.tar file1 file2 folder1 folder2 ... 
    
  • TAR.BZ2
  • 要將一個文件或文件夾壓縮到TAR.BZ2文件:

    tar -cvjf xxx.tar.bz2 file 
    

    要壓縮多個文件和/或文件夾的文件TAR.BZ2:

    tar -cvjf xxx.tar.bz2 file1 file2 folder1 folder2 ... 
    
  • .tar.gz的
  • 要壓縮一個文件或文件夾的tar.gz文件:

    tar -cvzf xxx.tar.gz file 
    

    要壓縮多個文件和/或文件夾的tar.gz文件:

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

    II。如何通過SSH提取文件

    要提取的文件會更容易,因爲你不必擔心文件夾:

    1. 郵編

    要提取zip文件:

    unzip file.zip 
    
  • BZ2
  • 要提取BZ2文件:

    bunzip2 file.bz2 
    
  • GZ
  • 要提取的gz文件:

    gzip -d file.gz 
    
  • 對焦
  • 提取tar文件:

    tar -xvf file.tar 
    
  • TAR.BZ2
  • 要提取TAR.BZ2文件:

    tar -xvjf file.tar.bz2 
    
  • .tar.gz的
  • 要提取tar.gz文件:

    tar -xvzf file.tar.gz 
    

    順便說一下,您需要用真實文件名替換壓縮文件的上述「文件」。

    加成:

    此外遠程服務器,上述命令行,也可用於一個Mac OS計算機與終端應用程序。

    相關問題