2013-08-02 107 views
0

下面的命令對我的作品很大的單個文件的本地目錄:同步通過ssh

scp [email protected]:foobar.txt /some/local/directory 

我想要做的就是做遞歸(即所有子目錄/服務器上的指定路徑的子文件) ,合併文件夾並覆蓋本地已存在的文件,最後只下載服務器上小於特定值(例如10 MB)的文件。

我該怎麼做?

回答

1

使用rsync。

你的命令很可能是這樣的:

rsync -az --max-size=10m [email protected]:foobar.txt /some/local/directory 

-a(歸檔模式 - 同步是遞歸的,所有權轉移,屬性,除其他事項外符號連接) -z(壓縮傳輸)

--max-size(僅複製文件達到一定大小)

還有很多可能適合的標誌。檢查文檔的更多細節 - http://linux.die.net/man/1/rsync

0

第一個選項:使用rsync

第二個選項,並且它不會是一個襯墊,但在三條,四線來完成:

創建使用ssh在遠程系統上的tar歸檔。 將遠程系統中的tar複製到scp。 在本地解壓歸檔。

如果歸檔文件的創建變得有點複雜,使用find和/或tar幾個選項還是比較實用的,以創建一個腳本這將做局部,用scp上傳在服務器上涉及,才把用ssh遠程執行。

+0

這確實是一個不錯的選擇,但它沒有考慮到我想擺脫大文件的事實。有任何想法嗎? – user2295350

+0

要爲當前目錄中小於4k的文件(可以放在一個文件中,傳輸到遠程主機並使用ssh在那裏執行)tar文件:tar cf a.tar $ {find。 -type f -size -4096c}' – piokuc