如何 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
如何将文件从 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