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

相关推荐
蝉明✘7 分钟前
HAproxy负载均衡
运维·负载均衡
格发许可优化管理系统25 分钟前
GTSuite许可证性能优化建议
大数据·运维·数据库·安全·性能优化·数据分析
cyber_两只龙宝30 分钟前
RHCE综合项目:分布式LNMP私有博客服务部署
linux·运维·服务器·分布式·虚拟机·dns·nfs
字节高级特工40 分钟前
【Linux篇】补充:消息队列和systemV信号量
linux·运维·服务器·c语言·数据库
程序员JerrySUN1 小时前
关注 Yocto项目实战教程
运维·数据库·嵌入式硬件·缓存
IvanCodes1 小时前
一、初识 Linux 与基本命令
大数据·linux·运维
wanhengidc2 小时前
服务器分布式的作用都有什么?
运维·服务器·分布式
Arvin6272 小时前
Linux 完整删除 Systemd 服务的步骤
linux·服务器
老实巴交的麻匪3 小时前
Logs 可观测性 | Grafana Loki 架构窥探与实践
运维·云原生·容器
MarkGosling3 小时前
【开源项目】轻量加速利器 HubProxy 自建 Docker、GitHub 下载加速服务
运维·git·docker·容器·开源·github·个人开发