【问题标题】:Supplying dynamic pattern (YYYYMMDD) as ftp mget pattern提供动态模式 (YYYYMMDD) 作为 ftp mget 模式
【发布时间】:2019-07-03 17:13:47
【问题描述】:

我正在编写一个脚本,它应该像这样使用mget 从 FTP 站点获取今天的文件(大约十几个)

ftp -n XX.XX.XX.XX <<END_SCRIPT
mget *20190703*
quit
END_SCRIPT

理想情况下,我会做类似mget 'date +%Y%m%d'(用撇号代替文字反引号)之类的事情,但这是不可能的。我会很感激任何指针

【问题讨论】:

  • 为什么你认为不可能?
  • here-doc 是一个(默认情况下双引号)带引号的字符串,所以您应该能够使用mget *$(date +%Y%m%d)* 嵌入动态日期,是吗?

标签: bash ftp mget


【解决方案1】:

下面的代码段应该可以工作:请检查。

event_date=`date +%Y%m%d`
ftp -n -i XX.XX.XX.XX <<END_SCRIPT
mget *${event_date}*
quit
END_SCRIPT

或者您可以查看以下脚本:我们在生产中使用此脚本

event_date=`date +%Y%m%d`
lftp -p [port number] -u user_name,'password' sftp://ip <<HERE_DOC
cd file_directory
mget *${event_date}*
bye
HERE_DOC

【讨论】:

  • 我收到了 mget file1_20190701.ext? mget file2_20190701.ext? mget file1_20190701.ext? ... 。正如我所见,mget 正在等待提示。
  • 您将获得所有带有 *20190701*pattern 的文件...使用第二个代码段...它不会要求输入密码...在数百个脚本中使用 ....顺便说一句,如果端口是默认的。 ..那么无需提供该数据。
  • 不幸的是,我要复制到的备份设备仅支持 FTP (boo)。我认为这是因为 mget 具有同步功能。
  • 更新添加标志-i 似乎可以解决问题,即ftp -n -i XX.XX.XX.XX
  • @Olumide 真的很奇怪。但是,我想这仍然可以处理。试着写一个循环。
猜你喜欢
  • 2020-08-28
  • 1970-01-01
  • 2020-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-18
  • 2022-06-23
相关资源
最近更新 更多