https://www.dong-blog.fun/post/1987
1. 安装 sshpass
sshpass
是一个可以自动输入密码的工具。如果未安装,运行以下命令安装:
• 对于 Debian/Ubuntu 系统:
bash
apt update && apt install sshpass
• 对于 CentOS/RHEL 系统:
bash
yum install sshpass
2. 编写 rsync
命令
假设您需要将远程服务器的 /root/vanblog
目录同步到本地的 /root/vanblog
目录,命令如下:
bash
/usr/bin/sshpass -p 'your_password' /usr/bin/rsync -avz -e "ssh -i /root/id_rsa" root@11.11.11.11:/root/vanblog /root/vanblog
将 your_password
替换为您的 SSH 密码。
3. 添加 crontab
任务
编辑 crontab
文件:
bash
crontab -e
添加以下行,每天下午 15:00 执行任务:
bash
0 15 * * * /usr/bin/sshpass -p 'your_password' /usr/bin/rsync -avz -e "ssh -i /root/id_rsa" root@11.11.11.11:/root/vanblog /root/vanblog >> /root/rsync.log 2>&1
将 your_password
替换为您的 SSH 密码。
4. 验证任务
查看 crontab
任务:
bash
crontab -l
等待 15:00 后,检查 /root/rsync.log
文件,确认任务是否执行成功。
常见问题
1. cron
服务未找到
如果运行 systemctl status cron
时提示 Unit cron.service could not be found
,检查 crond
服务:
bash
systemctl status crond
如果未运行,启动并启用它:
bash
systemctl start crond
systemctl enable crond
2. 任务未执行
• 检查 cron
服务是否正常运行:
bash
systemctl status crond
• 确保任务路径正确,使用绝对路径。
• 查看日志文件(如 /var/log/cron
或 /var/log/syslog
)排查问题。