如何修改日期&使用perl脚本的ftp目录的时间

时间:2014-05-06 09:46:03

标签: perl ftp perl-module

我正在解释整个过程,以了解我正在做什么以及我的查询是什么。 实际上我写了一个Perl脚本,它将登录到ftp Unix服务器并检查文件是否在特定目录中正常处理。如果文件在这些处理目录中超过10分钟,它将触发对我的团队邮件ID的警报。 此Perl脚本通过在任务计划程序中计划的批处理文件在Windows服务器上运行,并且每5分钟运行一次。 我能够将ftp文件的时间转换为我的Windows服务器时间。到目前为止,每件事情都完美无缺。 现在我有一个新的要求,我应该检查同一个ftp服务器中备份目录的最后修改日期。最初我的想法是列出文件,并可以获得最后收到的文件日期(这与我提到的上述过程类似)。但我的主要限制是备份目录将拥有近1000个文件和列表,并且获取时间不是一个好方法。 请告诉我我可以做些什么来获得修改日期& ftp目录的时间。

以下是我之前用于获取时间和模块的模块。 FTP文件的日期。 使用File :: Listing qw(parse_dir);

3 个答案:

答案 0 :(得分:0)

PERL中的stat DIRHANDLE操作在显示目录的路径名时,会显示有关该项的一系列信息。在数组中是修改时间。

请参阅http://perldoc.perl.org/functions/stat.html

您可能必须使用此方法才能使其正常工作,尤其是当您在目录中观察修改时间的子目录发生更改时。

答案 1 :(得分:-1)

(CC)http://www.perlmonks.org/?node_id=190020

my $file_mdtm = $f->mdtm($file) or die "Can't find $file in $dir\n";

my $five_days = 3600*24*5;    # five days in seconds

  if (time - $file_mdtm >= $five_days)

  {

print "$file is more than 5 days old\n";

  }

答案 2 :(得分:-1)

您可以使用此代码查看任何特定文件夹中文件的详细信息:

use strict;
use warnings;
use Net::FTP;

my ($ftp, $host, $user, $pass, $source_dir);
$host = "your_host_name";
$user = "Your_user_id";
$pass = "Your_password";
$source_dir = "any_source_DIR";
print "Connect in...\n";
$ftp = Net::FTP->new($host, Debug => 0) || die "Couldn't ftp to $host: $@";

print "Logging in...\n";
$ftp->login($user, $pass) || die "Couldn't login to $host: ".$ftp->message;

print "Getting files from \"$source_dir\"\n";
$ftp->cwd($source_dir);

my @files = $ftp->dir();

foreach (@files){
    print "$_ \n";
}