Linux
用於通過 FTP 監控文件夾更改的 Linux 軟體?
我有一個 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->退出;