2017-08-10 166 views
1

我搜索了很多,GOOGLE了很多太多,但我沒有發現任何東西得到文件夾的大小...bash腳本:通過FTP

我在Linux上使用bash的...

我有從ftp服務器下載某個文件夾(我知道ftp已被棄用,現在不能使用ftps或sftp btw我在本地網絡中)。

我想對下載的文件夾進行一種完整性檢查,其中有很多子文件夾和文件,所以我選擇比較文件夾大小作爲測試。

我正在通過wget下載,但我的問題是......如何在下載它之前檢查文件夾大小,以便我可以將大小存儲在文件中,然後與下載的大小進行比較?在FTP,所以......

我試圖用一個簡單的捲曲父目錄,但沒有大小的信息有...

感謝您的幫助!

+0

日Thnx到維塔利!最後做了 mkdir/root/fs curlftpfs ftp:// USER:PASSWORD @ HOST // root/fs du -ksh/root/fs/FOLDER | awk'BEGIN {FS =「」} {print $ 1}' –

回答

1

您無法通過協議FTP檢查文件夾大小。嘗試通過curlftpfs連接主服務器上的遠程文件夾(如果可能的話)。

+0

是否可以在腳本中使用它?需要自動執行該操作。無需互動 –

+0

偉大的,解決ty –

0

wget將一次遞歸地下載一個目錄內容。無法使用ftp確定整個目錄的大小。儘管可以使用ssh。

我建議你的機器上,並獲得訪問後安裝SSH服務器,可以使用下面的命令來獲得所需的目錄的大小:

du -h desired_directory | tail -n 1 

我不雖然建議使用這種方法,它更可靠地獲取遠程內容的散列校驗和並將它們與您下載的內容進行比較。它更加可靠,並且已經被許多下載客戶端用來檢查文件的完整性。

+0

需要是自動的,這就是問題,並且該服務器上更多的ssh是不可能的因爲它有一個奇怪的方式通過ssh連接,它是在雲環境 –

+0

它實際上可以使用諸如「期望」之類的東西來自動執行ssh和ftp會話。您的意思是「雲環境」和「奇怪的方式」是什麼意思? – Samy

+0

我的意思是在那個雲環境中你可以訪問一個前端ssh服務器,然後它將你重定向到你想要的特定環境(手動選擇)。 –

0

它基本上取決於你的ftp客戶端和你的ftp服務器可以做什麼。對於一些我知道,默認ls做這項工作,他們甚至有一個size命令:

ftp> help size 
size   show size of remote file 
ftp> size foo 
213 305 
ftp> ls foo 
200 PORT command successful. 
150 Opening ASCII mode data connection for file list 
-rw-r--r-- 1 foo bar  305 Aug 1 2013 foo 
226 Transfer complete.