Perl Net :: SFTP :::从远程服务器获取最新文件

问题描述 投票:0回答:1

我正在尝试使用Perl Net::SFTP::Foreign模块将文件从远程服务器传输到本地服务器。

这是我的代码:

#!/usr/bin/perl

use strict;
use warnings;
use Data::Dumper;
use Net::SFTP::Foreign;

my $host = "host.ip.address.here";
my $user = "username";
my $pass = "password";

my $path      = "/path/to/the/remote/server/directory";
my $local_dir = "/local/dir/path/";

my $sftp = Net::SFTP::Foreign->new(host=>$host , user=>$user , password=>$pass);
$sftp->die_on_error("Unable to establish SFTP connection");
$sftp->setcwd($path) or die "unable to change cwd: " . $sftp->error;

my @file = $sftp->ls($path);
print Dumper(\@file);

$sftp->mget("$path/test*.csv", $local_dir); 

我在远程服务器中有文件列表-

test123.csv
test234.csv
test341.csv
test890.csv
test765.csv
test110.csv

这里是我想从$path目录获取最新文件,该文件基于修改日期。(我找不到解决方法)

是否有任何命令可以实现这一目标?

我发现的其他方法是遍历@files数组,但是如何获取最新文件?而且,我不想循环遍历,因为$path有很多文件,这将花费很多时间来执行。

所以我想使用一个命令来获取远程文件。有什么主意吗?

perl file-transfer
1个回答
0
投票

看看docs的$ sftp-> stat($ path_or_fh)方法>>

它返回有关文件的属性列表,包括mtime。您必须获取要提取的每个文件的mtime,并通过代码对最新文件进行决策。

© www.soinside.com 2019 - 2024. All rights reserved.