使用 crontab 定时同步服务器文件到本地

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)排查问题。

相关推荐
tg_xianheyun1 小时前
CDN节点分布如何影响网页加载速度和用户体验
服务器·cdn加速·全球访问优化
lsh曙光1 小时前
延时at指令和定时cron指令
linux·服务器·网络
布鲁飞丝2 小时前
vivo Pulsar 万亿级消息处理实践()-Ansible运维部署
运维·ansible
XR1234567882 小时前
企业全光网络架构选型技术白皮书:从物理层到运维层的全链路分析
运维·网络·架构
HiDev_2 小时前
【非标自动化】2、认识元器件(直线模组)
运维·自动化
夏殇之殁3 小时前
包中创建自定义列表项。 . 使用自定义列表项进行数据绑定 . 将天气预报数据保存到本地内存表,通过LiveBindings进行显示。 ...
服务器·前端·javascript
龙仔7253 小时前
人大金仓 KingbaseES V8 只读账号创建完整运维笔记
运维·笔记·sql·人大金仓
我不管我就要叫小猪4 小时前
嵌入式Linux----网络通信
linux·运维·服务器
江湖有缘4 小时前
Docker实战 :使用Docker部署OneTerm堡垒机
运维·docker·容器
泡沫冰@4 小时前
ECS 的介绍和使用
linux·服务器·网络