我正在编写一个perl脚本,它可以使用FTP将本地目录与远程目录同步。它检查每个文件的最后修改日期,并将其与一个远程文件进行比较。我使用以下代码通过FTP获得最后修改时间。
my $f = Net::FTP->new($config->{'host'}, Passive => 1, Debug => 0) || die "Couldn't ftp to $config->{'host'}: $@";
$f->mdtm($file);如果本地机器和远程机器有相同的时间和时区,我需要一个解决办法,如果他们不是!
提前感谢
发布于 2013-09-22 08:11:48
据我所知,仅使用FTP命令不存在了解ftp服务器时区设置的方法.无论如何,如果您有写权限,您可以尝试在远程FTP服务器上创建一个文件,然后在它上执行一个"ls“来查看日期/时间戳,使用新创建的文件的时间戳,您可以计算本地时区和服务器时区之间的差异。
$f->touch('test.time') or die $f->message; #Creates new zero byte file
$f->mdtm('test.time'); #Now you should have the local time of the FTP Server
#Now you can compare with your local time and find the difference ...在尝试使用touch命令创建测试文件之前,请确保测试文件不存在。
发布于 2013-09-24 07:10:39
从(stat file9)获得的修改时间不取决于配置了哪个时区服务器吗?
在两个具有不同时区的服务器中,我几乎同时触摸了一个示例文件。得到的改性时间非常相似。只有最后4位数字是不同的。
Server 1
--------
root@- [~/ftp_kasi]# touch file
root@- [~/ftp_kasi]# perl mdtime.pl
1380005862
root@- [~/ftp_kasi]# date
Tue Sep 24 02:59:19 EDT 2013
root@- [~/ftp_kasi]#
Server 2
--------
root@ffVM32 kasi]# touch file
[root@ffVM32 kasi]# perl mdtime.pl
1380006066
[root@ffVM32 kasi]# date
Tue Sep 24 12:38:45 IST 2013
[root@ffVM32 kasi]# [root@ffVM32 kasi]# cat mdtime.pl
#!/usr/local/cpanel/3rdparty/bin/perl
$file = "file";
#open my $fh,'<',$file or die "Could not open file : $!\n";
#my $mdtime = (stat($fh))[9];
open (FILE, "file");
my $mdtime = (stat(FILE))[9];
print $mdtime."\n";https://stackoverflow.com/questions/18940962
复制相似问题