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

相关推荐
极地星光2 小时前
版本发布流程手册:Release分支规范与Bug分级标准全解析
运维
三坛海会大神5552 小时前
Linux服务器资源自动监控与报警脚本详解
linux·运维·服务器
CookieCrusher5 小时前
数据泄露危机逼近:五款电脑加密软件为企业筑起安全防线
运维·数据库·windows·安全·文件加密·数据防泄漏·dlp
小薛博客7 小时前
17、DevOps持续集成、持续部署
运维·ci/cd·devops
霍格沃兹软件测试开发8 小时前
Browser Use:打造你的浏览器自动化助手
运维·自动化
fuyongliang1239 小时前
linux Nginx服务配置介绍,和配置流程
运维·服务器·网络
UNbuff_011 小时前
Linux bzip2 命令使用说明
linux·运维·服务器
小马哥编程11 小时前
DNS解析中的服务器协作机制
服务器·git·github
IOT-Power11 小时前
Ubuntu下把 SD 卡格式化为 FAT32
linux·运维·ubuntu
嫩萝卜头儿12 小时前
虚拟地址空间:从概念到内存管理的底层逻辑
linux·服务器·网络