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

相关推荐
宸津-代码粉碎机6 小时前
FastUtil+AI多Agent实战:Java AI项目性能终极加速方案
java·服务器·开发语言·python·安全·php
angushine6 小时前
Docker部署镜像管理
运维·docker·容器
潘正翔6 小时前
jenkins构建cicd流水线
运维·服务器·ci/cd·容器·自动化·jenkins·cicd
可莉丝婷6 小时前
光模块产线自动化设备品牌推荐:艾利特选型指南
运维·自动化
型者无疆7 小时前
关于Fcitx5在ubuntu26.04中的位置问题
运维·服务器
mengge.cloud7 小时前
Linux三剑客 grep sed awk 小白基础教程
linux·运维·服务器·网络
Brilliantwxx8 小时前
【Linux】 进程(4)七大进程状态深度解析
linux·运维·算法
HiDev_8 小时前
【非标自动化】2、认识元器件(气源处理组件)
运维·自动化
HiDev_8 小时前
【非标自动化】2、认识元器件(远程I/O)
运维·自动化
国际云,接待8 小时前
df 显示磁盘还有空间却无法写文件:Linux inode 耗尽排查与治理
linux·运维·服务器