【问题标题】:How to get the latest file from sftp folder [duplicate]如何从 sftp 文件夹中获取最新文件 [重复]
【发布时间】:2018-04-06 01:55:37
【问题描述】:

我们有 sftp 文件夹,我们使用 'sftp user@server' 登录。 sftp 文件夹有很多我们需要获取/下载最新文件的文件。

我有一个问题,如果我们可以从 sftp 文件夹中获取最新的文件名,有什么方法吗? 然后使用 get/mget 下载它。

我没有到 user@server 的 ssh 连接,只有我可以做 sftp。所有这些过程都需要自动化,因此无需手动检查。

sftp 文件夹有这样的东西:

sftp> ls -lrt

-rw-------   1 0        0            8744 Apr  4 11:03 A.txt
-rw-------   1 0        0           13282 Apr  4 11:51 B.txt
-rw-------   1 0        0          201329 Apr  5  9:54 C.txt
-rw-------   1 0        0             391 Apr  5 10:17 D.txt

任何建议表示赞赏。

谢谢

【问题讨论】:

  • 这是为了保持同步远程目录中文件的本地版本吗?如果是这样,您也许可以在您的sftp 连接中使用get -a *。如果没有,我不知道是否会有解决方案,而无需与编写远程内容的任何人预先商定命名约定,以便您可以执行get *_newget *_20180304* 或what-have-you 之类的操作。
  • 通过获取最新文件,存在文件正在写入过程中的重大风险。你有没有想过你将如何检测和处理它?
  • PFB SERVER='test.com' USER='test' PATH='/path/Test' FILE_PATTERN=test_files DESTINATION_PATH='/test/test_path' sftp -b

标签: linux file ssh sftp scp


【解决方案1】:

你可以这样做。将 localhost 替换为您的远程 ip。

sftp -b <(echo "ls -1rt") localhost | tail -1 | xargs -i bash -c 'sftp -b <(echo "get {}") localhost'

【讨论】:

  • 这对我有用:echo "ls -1rt" | sftp localhost | tail -1 | xargs -I {} echo "get {}" | sftp localhost
  • 还有一个问题,如果我将本地主机设置为全局变量并在上面的命令 sftp 命令中使用它,例如 $user@$localhost,如果我给出名称和本地服务器,它就不起作用- username@Server_host ,使用 $ 时全局变量没有被识别的任何原因?
  • @Cyrus 的命令也适用于我的变量。
  • 嗨@Cyrus,PFB SERVER='test.com' USER='test' PATH='/path/Test' FILE_PATTERN=test_files DESTINATION_PATH='/test/test_path' sftp -b
  • 嗨@Cyrus,PFB SERVER='test.com' USER='test' PATH='/path/Test' FILE_PATTERN=test_files DESTINATION_PATH='/test/test_path' sftp -b
猜你喜欢
  • 1970-01-01
  • 2017-01-12
  • 1970-01-01
  • 1970-01-01
  • 2018-07-11
  • 2023-02-22
  • 1970-01-01
  • 2018-07-08
相关资源
最近更新 更多