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

标签 perl sftp file-transfer

我正在尝试使用 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 有很多文件,需要很长时间才能执行。

所以我想使用单个命令获取远程文件。有什么想法吗?

最佳答案

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

它返回有关文件的属性列表,包括 mtime。您必须获取提取的每个文件的 mtime,并通过最新文件上的代码做出决定。

关于Perl Net::SFTP::Foreign 从远程服务器获取最新文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58612029/

相关文章:

Android 到 C++ 套接字连接在收到文件后关闭

cordova - 使用 PhoneGap 通过 FileTransfer() 将参数发送到远程服务器?

perl - 两个字符串的笛卡尔积

java - 如何使用java socket实现客户端和服务器之间的文件传输

内联 C 库中的调用函数

java - JSch ChannelSftp.ls - 在 java 中传递匹配模式

php - 通过 PHP (phpseclib) 上传文件到 SFTP 服务器

java - 为什么 Apache VFS (SFTP) 即使在不需要时也会尝试切换到根目录以及如何避免这种情况

perl - MooseX::Declare 和 MooseX::Method::Signatures 生产准备好了吗?

regex - 为什么这个 Perl 正则表达式不起作用?