Linux

用於通過 FTP 監控文件夾更改的 Linux 軟體?

  • February 16, 2015

我有一個 24/7 執行的 linux 機器(Debian)。我想以這樣的方式設置它,它每天一次連接到特定的 FTP 伺服器,並檢查自上次檢查以來是否有任何文件發生更改。如果有,它應該向我發送一封電子郵件,其中包含已更改文件的列表。

檢查不必徹底 - 如果它只是比較文件日期,我會很高興。但它必須是遞歸的。

我怎樣才能做到這一點?我知道我可以使用 cron 來安排程序,但是我用什麼來連接和檢查更改?

ncftp 客戶端有ncftpls工具,它可以做一個遞歸的長列表。

這是使用 Net::FTP 的 Perl 解決方案。下面的腳本應該列印文件伺服器中每個文件的文件名和時間戳。您可以輕鬆擴展它以滿足您的實際需求。

#!/usr/bin/perl

使用嚴格;
使用網路::FTP;
使用 File::Listing qw(parse_dir);
使用 POSIX qw(strftime);

# 配置選項
我的 $FTP_SERVER = 'ftp_host_name';
我的 $FTP_USER = '使用者名';
我的 $FTP_PASS = '密碼';

# 建立FTP連接
我的 $ftp = Net::FTP->new( $FTP_SERVER, Debug => 0 )
或死 "無法連接到 $FTP_SERVER: $@";
$ftp->登錄($FTP_USER, $FTP_PASS)
或死“無法登錄”,$ftp->message;
$ftp->二進制;

# 獲取文件列表
我的 $files = $ftp->dir;
foreach 我的 $entry (parse_dir($files)) {
我的 ($fileName, $type, $size, $mtime, $mode) = @$entry;
下一個除非 $type eq 'f';
我的 $timeStamp = strftime "%Y-%m-%d %H:%M:%S", gmtime($mtime);
print "名稱:$fileName\t 時間戳:$timeStamp\n";
}

$ftp->退出;

引用自:https://serverfault.com/questions/27863