使用 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" [email protected]:/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" [email protected]:/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)排查问题。

相关推荐
搬码临时工1 小时前
电脑同时连接内网和外网的方法,附外网连接局域网的操作设置
运维·服务器·网络
藥瓿亭1 小时前
K8S认证|CKS题库+答案| 3. 默认网络策略
运维·ubuntu·docker·云原生·容器·kubernetes·cks
Gaoithe2 小时前
ubuntu 端口复用
linux·运维·ubuntu
程序猿小D3 小时前
第16节 Node.js 文件系统
linux·服务器·前端·node.js·编辑器·vim
gsls2008083 小时前
ocrapi服务docker镜像使用
运维·docker·容器
文牧之4 小时前
PostgreSQL 的扩展pg_freespacemap
运维·数据库·postgresql
AWS官方合作商4 小时前
基于AWS Serverless架构:零运维构建自动化SEO内容生成系统
运维·serverless·aws
whp4045 小时前
windows server2019 不成功的部署docker经历
运维·docker·容器
IT界小黑的对象5 小时前
virtualBox部署ubuntu22.04虚拟机 NAT+host only 宿主机ping不通虚拟机
linux·运维·服务器
weixin_527550406 小时前
Linux 环境下高效视频切帧的实用指南
linux·运维·音视频