shell脚本将文件夹中新增的文件定时sftp到指定路径
时间: 2023-12-27 16:03:07 浏览: 100
可以使用shell脚本结合cron定时任务来实现定时sftp文件夹中新增的文件到指定路径。以下是一个简单的示例脚本:
```bash
#!/bin/bash
# 目标sftp服务器信息
HOST="sftp.example.com"
PORT=22
USERNAME="username"
PASSWORD="password"
DEST_FOLDER="/path/to/destination/folder"
# 待监控的本地文件夹
SOURCE_FOLDER="/path/to/source/folder"
# 获取最后一次监控的时间
LAST_RUN=$(cat /tmp/sftp_last_run)
if [ -z "$LAST_RUN" ]; then
LAST_RUN=0
fi
# 查找新增的文件
FILES=$(find $SOURCE_FOLDER -type f -newermt @$LAST_RUN)
# 上传新增的文件
for FILE in $FILES; do
echo "Uploading $FILE..."
sftp -P $PORT $USERNAME@$HOST:$DEST_FOLDER <<< "put $FILE"
done
# 保存最后一次监控的时间
date +%s > /tmp/sftp_last_run
```
将上述脚本保存为 `sftp.sh`,然后使用 `cron` 定时任务来定时执行该脚本即可。例如,将任务设置为每小时执行一次,可以将以下内容添加到 `crontab` 中:
```
0 * * * * /bin/bash /path/to/sftp.sh
```
注意,为了确保脚本正常运行,需要确保以下几点:
- 目标sftp服务器信息正确,并且能够通过用户名和密码进行认证。
- 待监控的本地文件夹存在,并且具有读取和执行权限。
- 目标文件夹在sftp服务器上存在,并且具有写入权限。
- cron服务已经启动,并且能够正常执行定时任务。
阅读全文