如何 SFTP 发送 1 分钟前创建的文件,Linux?

How to SFTP send files created 1 minute ago, Linux?

如何将文件从 Linux 机器发送到 1 分钟前创建的 sftp 服务器?

我试过使用 find,但我不确定如何将其通过管道传输到 sftp?

我试过类似下面的方法

find | sftp {user}@{host}:{remote_dir} <<< $'put {local_file_path}'

但我不知道如何将一分钟前创建的文件通过管道传输到 sftp 命令中。

我无法安装额外的包,因为 Linux 机器没有连接到互联网。

假设您没有奇怪的文件名:

$ find -mmin -10 | sed 's/^/put /' | sftp -b - sorin@192.168.0.14
sftp> put ./16/test00116.gz
sftp> put ./20200113.gz
sftp> put ./log20200128.gz
  • -b - - 从标准输入读取批处理文件
  • sed 's/^/put /' - 在每个文件前加上 put 命令。

更稳健一点,在尝试放置新文件之前删除上传的文件,并确保 sftp 不会因错误而退出:

$ find -mmin -10 -exec basename -- "{}" \; -print | sed '1~2s/^/-rm /;0~2s/^/-put /' |  sftp -b - sorin@192.168.0.14
sftp> -rm exisingfile20200102.gz
sftp> -put ./2/existingfile20200102.gz
sftp> -rm newfile20200121.gz
Couldn't delete file: No such file or directory
sftp> -put ./21/newfile20200121.gz