需求:使用sftp命令定时拉取文件
- 原始命令
1. sftp -oIdentityFile=/student/keys/id_rsa -oPort=8111 xxx.com
2. cd /school/download/
3. ls
4. get xxx.csv
- 创建脚本down.sh,获取前一天的文件
#!/bin/bash
echo "Starting to sftp..."
# 使用sftp命令连接到远程服务器并执行操作
sftp -b - -oIdentityFile=/student/keys/id_rsa -oPort=8111 xxx.com << EOF
cd /school/download/
# 匹配以昨天的日期开头的所有文件
mget $(date -d "yesterday" +%Y%m%d)*.csv
bye
EOF
echo "$(date -d "yesterday" +%Y%m%d):download success ..." >> /home/sftp_download.log
- 添加定时任务
# 确保它有执行权限
chmod +x /path/to/down.sh
# 编辑cron任务
crontab -e
# 添加定时任务
0 1 * * * /path/to/down.sh
# 示意
* * * * * command-to-be-executed
* - - - -
| | | | |
| | | | +---- Day of the week (0 - 7) [Both 0 and 7 mean Sunday, or use names]
| | | +------ Month (1 - 12)
| | +-------- Day of the month (1 - 31)
| +---------- Hour (0 - 23)
+------------ Minute (0 - 59)
- 可能遇到的问题
-bash: ./down.sh:/bin/bash^M
解决:执行 sed -i 's/\r$//' down.sh