rsync定时同步脚本关键在于精准控制同步行为:必须用/data/(末尾斜杠)同步内容而非目录本身,首次启用--delete前务必加-n模拟验证,强制使用-a保留元数据,显式声明path并重定向2>&1日志,远程同步统一走ssh通道、禁用daemon模式,且绝对路径代替~。

rsync 定时同步脚本怎么写才不丢文件
关键不是“写完就行”,而是让 rsync 真正只传变化、不漏删、不误删。最容易出问题的是路径末尾斜杠和 --delete 的启用时机。
-
/data/(带斜杠)表示同步data目录下的内容;/data(不带斜杠)会把data这个目录本身也同步过去,目标变成/backup/data/ - 首次运行务必加
-n(dry-run):比如rsync -avn --delete /src/ /dst/,先看它打算删什么、传什么,确认无误再拿掉-n -
--delete会让目标严格镜像源——源里删了的文件,目标也会被删。如果源目录偶尔手动清理过,这个行为是预期的;但如果只是想“备份新增+修改”,就别加它 - 加
-a是底线:rsync -a自动包含-rlptgoD,保留权限、所有者、时间戳、软链接等,否则备份回来可能无法执行或属主错乱
cron 执行 rsync 脚本为什么总失败
不是脚本写错了,大概率是 cron 环境太干净——没加载你的 $PATH,找不到 rsync,也连不上 SSH。
- cron 默认 PATH 通常只有
/usr/bin:/bin,而rsync或ssh可能在/usr/local/bin或/usr/bin。脚本开头显式声明更稳:PATH=/usr/local/bin:/usr/bin:/bin - 如果同步目标是远程服务器,且依赖 SSH 免密登录,确保 cron 是用你本人用户跑的(
crontab -e),且私钥没密码、权限是600(chmod 600 ~/.ssh/id_rsa) - 日志一定要重定向 stderr:
rsync ... >> /var/log/backup.log 2>&1,否则错误信息全丢进黑洞,根本看不到 “Permission denied” 或 “No route to host” - 避免用
~表示家目录——cron 不展开波浪号,一律写绝对路径,比如/home/user/docs/
远程同步必须走 SSH,别开 rsync daemon
除非你有强管控需求,否则用 SSH 通道最省事、最安全,不用额外开监听端口、配认证、防爆破。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 命令形如:
rsync -avz -e "ssh -p 2222" /local/ user@host:/remote/,其中-p 2222是可选的非标 SSH 端口 - 如果远程服务器 SSH 服务不在默认 22 端口,
-e参数必须带上,不能只靠~/.ssh/config—— cron 不读那个配置 - 不要在远程机器上起
rsync --daemon,既增加攻击面,又得维护单独的配置文件(rsyncd.conf)和用户权限,纯属多此一举 - 验证 SSH 连通性:手动执行一遍脚本里的 rsync 命令,比空等 cron 报错快得多
ntp 时间同步脚本要不要加 sudo
要看你调用的是哪个命令——ntpdate 必须 root 权限,chronyc makestep 也一样,但 systemd-timesyncd 的触发不需要 sudo。
- 如果你用
ntpdate,脚本里必须用sudo ntpdate -s time1.aliyun.com,且确保该用户有 NOPASSWD 权限(visudo里加youruser ALL=(ALL) NOPASSWD: /usr/sbin/ntpdate) - 更推荐用
chrony:装好后直接chronyc makestep即可强制校时,无需 sudo(前提是 chronyd 服务已启动) - 硬件时钟同步别漏:
hwclock --systohc要跟在时间校准之后,否则重启后时间又漂移 - 时间同步频率别设太密,比如每分钟一次(
* * * * *)容易被 NTP 服务器限流或拒绝,2 小时一次(0 */2 * * *)足够稳定
实际部署时,最常被跳过的一步是:手动执行脚本并检查日志。很多人直接扔进 cron,等几天发现备份没更新、时间没变,才回头查——其实头一分钟就能看到 command not found 或 Permission denied (publickey)。










