我需要查看文件在过去 30 分钟内是否发生了变化,如果没有变化,则退出脚本。
sftp 服务器上会有一个包含许多文件的目录,但我只需要检查是否有一个文件在 30 分钟内发生变化。此检查的代码如下。
该脚本将每分钟左右作为 cronjob 运行一次。
我有一个简单的 if 语句来查看文件是否发生变化,但无法在 sftp 服务器上运行它。
if [ $(find ./ -type f -mmin 30) ]
我的ubuntu版本是20.04,无法在sftp上运行ssh。
有什么办法吗,这样我可以直接在 sftp 上运行 if 语句?
答案1
if
您不能直接运行或find
通过这样的表达式sftp
。您需要使用sftp
命令并从他们的输出中自己解析信息或使用python
pysftp
自己进行编程。
但是,您可以挂载服务器并在挂载的目录中本地sftp
运行:find
# Install sshfs on your localcomputer if needed
sudo apt install sshfs
# Mount the directory
mkdir sftpmnt
sudo sshfs -o allow_other -p 60022 user@server:/ sftpmnt/
# List all files changed within the last 30 minutes
find sftpmnt -mmin -30 -printf '%T+\t%p\n'
# Or check if any file changed within the last 30 minutes and do_something
if find sftpmnt -mmin -30 -print -quit | grep -q "." ; then
echo "Found new or modified file(s)"
do_something
fi