Ftp

FTP:獲取伺服器中的最新文件

  • March 26, 2015

這真的是真的很蛋疼。我有一個 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 伺服器作為目錄安裝在您的機器上,您可以使用常用命令lscp如文件名實際上包含時間之前的日期):

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"

引用自:https://unix.stackexchange.com/questions/192452