Ftp
FTP:獲取伺服器中的最新文件
這真的是真的很蛋疼。我有一個 ftp 伺服器正在執行,它不定期地生成最新的文件。該文件儲存為:
Home
->T22:30:10
->new.txt
,最新的將是(一個新文件夾)
Home
->T23:10:25
->new.txt
(注意這是一個最新的新文件夾)我需要在 Linux 機器上實現一些東西(它可以是任何東西,C 程式碼,bash 腳本等)來拉取最新的文件。
我研究了兩種選擇:
**選項 1.**使用 libcurl,傳遞目錄列表,然後選擇最新文件。這真是讓人頭疼又費時,我仍然找不到簡單的方法來做到這一點。
**選項2.**使用lftp,在初始化時,刪除伺服器中的所有文件,這樣每次我呼叫lftp下載東西時,它都是最新的。(這種方法只是理想化,我在現實生活中沒有嘗試過)。
有沒有更簡單的選擇?
一種通常方便的方法是掛載文件,然後像訪問普通本地文件一樣訪問它們。對於通過 FTP 訪問的伺服器,可以使用CurlFtpFS。
mkdir theserver curlftpfs theserver.example.com theserver
您需要將使用者名和密碼傳遞給 curlftpfs,無論是在命令行上(這是不安全的,因為您機器上的其他使用者可以看到它們)或在文件中
~/.netrc
(強烈推薦)。這是一個範例 netrc 行:machine theserver.example.com login remoteusername password swordfish
現在您已經將 FTP 伺服器作為目錄安裝在您的機器上,您可以使用常用命令
ls
,cp
如文件名實際上包含時間之前的日期):set -- theserver/remote/path/T* eval "last=\${$#}" cp -p -- "$last/new.txt" "/some/where/local/${last##*/}.txt"
或者複製最新的文件,假設所涉及的文件名不包含不可列印的字元或換行符:
cd theserver/remote/path last=$(ls -t -- T*/new.txt | head -n 1) cp -p -- "$last" "/some/where/local/${last%/*}.txt"