当前位置: 首页 > article >正文

Linux定时任务实战:利用rsync实现跨服务器文件自动同步

1. 为什么选择rsync替代scp进行文件同步在企业服务器运维中文件同步是再常见不过的需求。比如需要把A服务器的日志文件同步到B服务器做集中分析或者把生产环境的配置文件分发到多台服务器。很多人的第一反应是用scp命令这确实能解决问题但我用血泪教训告诉你rsync才是更专业的选择。去年我们有个项目用scp同步日志结果出了个大事故。开发同事误删了生产服务器上3天的日志而备份服务器因为scp是全量覆盖同步导致备份也被清空。如果当时用rsync的**--backup**参数就能自动保留旧版本文件。这个教训让我彻底转向rsync现在连家里的NAS备份都用它。rsync相比scp有三大杀手锏增量同步只传输变化的部分对10GB的日志文件可能只需传几MB断点续传网络中断后下次同步会从中断处继续灵活备份可以保留历史版本避免误删灾难实测同步1GB的日志目录scp耗时1分12秒每次全量传输rsync首次1分05秒基本持平rsync后续平均3秒仅传输变化部分2. 环境准备与基础配置2.1 安装rsync大多数Linux发行版已经预装rsync如果没有可以通过包管理器安装# CentOS/RHEL sudo yum install rsync # Ubuntu/Debian sudo apt-get install rsync建议检查下版本老版本可能缺少某些实用参数rsync --version # 推荐3.1.0以上版本2.2 SSH免密登录配置虽然rsync支持多种传输协议但SSH依然是最安全可靠的选择。和scp一样我们需要先配置SSH密钥登录# 生成ED25519密钥比RSA更安全 ssh-keygen -t ed25519 -C rsyncserverA # 将公钥复制到目标服务器 ssh-copy-id -i ~/.ssh/id_ed25519.pub userserverB测试免密登录是否成功ssh userserverB echo 连接成功3. rsync核心参数详解3.1 基础同步命令一个最基础的同步命令长这样rsync -avz /path/to/source userserverB:/path/to/destination分解说明-a归档模式保留文件属性权限、时间戳等-v显示详细传输信息-z压缩传输节省带宽但实际生产环境我推荐用这个加强版rsync -avzh --progress --stats --delete \ --exclude*.tmp \ --backup --backup-dir/path/to/backups \ /var/log/app/ userserverB:/backup/logs/新增参数解析--progress显示实时传输进度--stats同步结束后显示统计信息--delete删除目标端多余文件保持严格一致--exclude排除特定文件--backup覆盖前备份旧文件3.2 带宽控制与限速在业务高峰期同步大文件时可能需要限制带宽占用rsync -avz --bwlimit1000 /source userserverB:/dest这里的1000单位是KB/s即限制为1MB/s。我通常会在crontab的夜间任务去掉这个限制白天则根据业务情况设置为500-2000不等。4. 实战日志文件同步方案4.1 同步脚本编写创建/usr/local/bin/sync_logs.sh#!/bin/bash # 定义变量 SOURCE_DIR/var/log/nginx/ DEST_USERbackup DEST_SERVER192.168.1.100 DEST_DIR/backup/nginx/ LOG_FILE/var/log/rsync_nginx.log # 检查目录是否存在 [ ! -d $SOURCE_DIR ] exit 1 # 执行同步 rsync -avzh --delete --progress \ --excludeaccess.log.*.gz \ --log-file$LOG_FILE \ $SOURCE_DIR $DEST_USER$DEST_SERVER:$DEST_DIR # 错误处理 if [ $? -eq 0 ]; then echo [$(date)] 同步成功 $LOG_FILE else echo [$(date)] 同步失败错误码 $? $LOG_FILE # 可以添加邮件报警等逻辑 fi给脚本执行权限chmod x /usr/local/bin/sync_logs.sh4.2 定时任务配置编辑当前用户的crontabcrontab -e添加以下内容每天凌晨2点同步# 每天2点同步nginx日志 0 2 * * * /usr/local/bin/sync_logs.sh /dev/null 21如果想更精细控制可以# 工作日每小时同步但限制带宽 0 9-18 * * 1-5 /usr/local/bin/sync_logs.sh --bwlimit5005. 高级技巧与故障排查5.1 保持文件一致性校验担心文件传输出错可以用校验模式rsync -avzc --checksum /source userserverB:/dest-c参数会让rsync基于文件内容校验而不是简单的修改时间和大小。虽然会消耗更多CPU资源但对关键数据很值得。5.2 常见错误处理问题1rsync: connection unexpectedly closed这通常是权限问题检查目标目录是否可写SSH密钥是否正确磁盘空间是否充足问题2rsync error: some files could not be transferred尝试添加--ignore-errors参数或者检查--exclude规则是否过于严格。5.3 性能优化建议对于超大型文件同步TB级别这些参数能显著提升效率rsync -avz --no-whole-file --inplace --partial /source userserverB:/dest解释--no-whole-file强制增量传输--inplace直接修改目标文件而非创建临时文件--partial保留部分传输的文件6. 安全加固方案6.1 限制SSH访问在目标服务器的/etc/ssh/sshd_config中添加Match User backup AllowTcpForwarding no X11Forwarding no PermitTTY no ForceCommand /usr/bin/rsync --server --daemon .然后重启SSH服务sudo systemctl restart sshd6.2 使用rsync守护模式对于频繁同步的场景可以配置rsync守护进程在目标服务器创建/etc/rsyncd.conf[backup] path /backup comment Backup Area read only no list yes uid backup gid backup auth users backup secrets file /etc/rsyncd.secrets创建密码文件echo backup:complexpassword | sudo tee /etc/rsyncd.secrets sudo chmod 600 /etc/rsyncd.secrets启动服务sudo systemctl start rsync现在可以从源服务器这样连接rsync -avz /source rsync://backupserverB/backup7. 监控与报警机制7.1 日志分析rsync的--log-file参数已经记录了详细操作我们可以用logrotate管理日志创建/etc/logrotate.d/rsync/var/log/rsync_*.log { daily missingok rotate 30 compress delaycompress notifempty create 640 root adm }7.2 失败报警改进之前的脚本添加邮件报警#!/bin/bash # ...原有变量定义... # 执行同步 if ! rsync -avzh --delete --progress \ --excludeaccess.log.*.gz \ --log-file$LOG_FILE \ $SOURCE_DIR $DEST_USER$DEST_SERVER:$DEST_DIR then echo [$(date)] 同步失败错误码 $? $LOG_FILE # 发送邮件报警 echo Rsync同步失败请检查日志 $LOG_FILE | \ mail -s Rsync报警 - $(hostname) adminexample.com exit 1 fi需要确保系统已配置好mailx等邮件工具。对于更复杂的监控可以集成到Zabbix或Prometheus中。

相关文章:

Linux定时任务实战:利用rsync实现跨服务器文件自动同步

1. 为什么选择rsync替代scp进行文件同步? 在企业服务器运维中,文件同步是再常见不过的需求。比如需要把A服务器的日志文件同步到B服务器做集中分析,或者把生产环境的配置文件分发到多台服务器。很多人的第一反应是用scp命令,这确实…...

使用Xshell连接浦语灵笔2.5-7B服务器的安全实践

使用Xshell连接浦语灵笔2.5-7B服务器的安全实践 1. 为什么安全连接大模型服务器如此重要 当你在服务器上部署浦语灵笔2.5-7B这样的多模态大模型时,它不只是一个简单的程序——它能理解图像、分析视频、处理音频,甚至能根据你的指令生成网页和图文内容。…...

别再手写await timeout!Python 3.15内置asyncio.timeout()正式替代loop.call_later,3行代码解决超时竞态问题

第一章:Python 3.15 异步 I/O 模型优化案例Python 3.15 对 asyncio 核心调度器进行了深度重构,引入了基于事件驱动的协作式任务批处理机制(Co-Batched Scheduling),显著降低了高并发场景下的上下文切换开销与事件循环唤…...

告别机械音!QWEN-AUDIO智能语音合成系统实测:真人般的情感语音这样生成

告别机械音!QWEN-AUDIO智能语音合成系统实测:真人般的情感语音这样生成 你是否厌倦了那些冰冷、生硬、一听就是机器人的语音合成效果?无论是视频配音、有声书制作,还是智能客服,机械音总是让人出戏,缺乏感…...

从零设计PromQL:手把手教你用Prometheus监控Spring Boot微服务

从零设计PromQL:手把手教你用Prometheus监控Spring Boot微服务 在当今云原生和微服务架构盛行的时代,监控系统已经从"可有可无"变成了"必不可少"的基础设施。作为Java开发者,我们经常需要面对这样的困境:虽然…...

消息撤回难题终结:RevokeMsgPatcher的4种创新应用

消息撤回难题终结:RevokeMsgPatcher的4种创新应用 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也没用了) 项目地址: https://gitcode.com/Gi…...

2026最权威AI论文工具榜单:这些被高校和导师悄悄推荐的软件你还不知道?

AI论文工具正在重塑学术写作的效率与质量。依托权威检测平台数据、高校教师实测反馈及海量用户使用评价,2026年最值得信赖的AI论文辅助软件已全面升级,功能覆盖选题、查重、润色、格式化等全流程,成为高校师生提升论文质量的秘密武器。本文将…...

Tesseract.js终极指南:如何在浏览器和Node.js中实现多语言OCR识别

Tesseract.js终极指南:如何在浏览器和Node.js中实现多语言OCR识别 【免费下载链接】tesseract.js Pure Javascript OCR for more than 100 Languages 📖🎉🖥 项目地址: https://gitcode.com/gh_mirrors/te/tesseract.js Te…...

Qwen3-TTS-12Hz-1.7B-CustomVoice技术亮点:离散多码本LM架构突破传统TTS瓶颈

Qwen3-TTS-12Hz-1.7B-CustomVoice技术亮点:离散多码本LM架构突破传统TTS瓶颈 1. 引言:语音合成的技术革命 语音合成技术正在经历一场深刻的变革。传统的文本转语音系统往往面临着一个根本性难题:如何在保持语音质量的同时,实现快…...

手把手用Arduino+超声波传感器DIY智能水位报警器(附完整代码)

手把手用Arduino超声波传感器DIY智能水位报警器(附完整代码) 在智能家居和工业自动化领域,水位监测一直是个经典而实用的课题。想象一下:深夜水管爆裂时自动触发警报的安心,鱼缸水量不足时自动补水的便捷,或…...

如何用G-Helper重新定义你的华硕笔记本使用体验

如何用G-Helper重新定义你的华硕笔记本使用体验 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops. Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and other models 项目地址: https://gitcod…...

开源工具Bypass Paywalls Clean全场景解决方案指南

开源工具Bypass Paywalls Clean全场景解决方案指南 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 在数字内容爆炸的时代,如何合法合规地访问优质付费内容成为知识工作者的…...

uS82嵌入式控制板:面向教育与原型开发的信号输入输出一体化方案

1. 项目概述uS82 是一款面向教育与原型开发的多功能嵌入式控制板,配套提供专用 Arduino 兼容库us82.h。该库并非通用外设驱动抽象层,而是针对 uS82 硬件拓扑进行深度定制的控制封装,其设计目标明确:降低硬件操作门槛、屏蔽底层寄存…...

三步掌握QQNT防撤回:从安装到高级应用完全指南

三步掌握QQNT防撤回:从安装到高级应用完全指南 【免费下载链接】LiteLoaderQQNT-Anti-Recall LiteLoaderQQNT 插件 - QQNT 简易防撤回 项目地址: https://gitcode.com/gh_mirrors/li/LiteLoaderQQNT-Anti-Recall QQNT防撤回插件是一款专为QQNT设计的消息保护…...

Tesseract.js技术指南:从原理到实践的JavaScript OCR解决方案

Tesseract.js技术指南:从原理到实践的JavaScript OCR解决方案 【免费下载链接】tesseract.js Pure Javascript OCR for more than 100 Languages 📖🎉🖥 项目地址: https://gitcode.com/gh_mirrors/te/tesseract.js 价值定…...

Cookie Monster深度解析:如何通过智能数据分析将Cookie Clicker效率提升300%

Cookie Monster深度解析:如何通过智能数据分析将Cookie Clicker效率提升300% 【免费下载链接】CookieMonster Addon for Cookie Clicker that offers a wide range of tools and statistics to enhance the game 项目地址: https://gitcode.com/gh_mirrors/coo/Co…...

离线DP算法与Carsim联合仿真验证:基于模块化建模的节能速度规划系统

离线DP节能速度规划Carsim联合仿真验证软件使用:Matlab/Simulink2021aCarsim2019(必须一样的版本远程调试需格外200) 适用场景:采用模块化建模方法,搭建联合仿真模型,其中包含单独的基于DP动态规划节能速度…...

WinHex-21.6-SR3-x86-x64 全解析:专业计算机取证与数据恢复软件深度指南

WinHex-21.6-SR3-x86-x64 全解析:专业计算机取证与数据恢复软件深度指南 前言 在数字时代,数据已成为企业和个人的核心资产。无论是意外删除、系统崩溃、硬件故障还是恶意攻击,数据丢失都可能造成严重的损失。同时,在网络安全和…...

Audio Pixel Studio多场景落地:跨境电商多语言产品介绍语音生成

Audio Pixel Studio多场景落地:跨境电商多语言产品介绍语音生成 1. 跨境电商语音营销的痛点与机遇 跨境电商卖家面临一个共同挑战:如何高效制作多语言产品介绍音频。传统解决方案存在几个明显问题: 成本高昂:雇佣专业配音员录制…...

BERT文本分割模型Node.js后端调用实战

BERT文本分割模型Node.js后端调用实战 1. 引言 如果你正在开发一个需要处理大量文本的应用,比如自动生成文章摘要、智能提取关键信息,或者对用户输入的长文本进行智能分段,那么你很可能需要用到文本分割技术。传统基于规则的分割方法往往不…...

从点灯到组网:用IAR for 8051和Z-Stack协议栈快速上手CC2530开发

从点灯到组网:用IAR for 8051和Z-Stack协议栈快速上手CC2530开发 当你第一次在CC2530开发板上点亮LED时,那种成就感就像电子工程师的"Hello World"。但真正的挑战在于如何让这些LED通过无线网络相互通信——这正是ZigBee技术的魅力所在。本文…...

华硕笔记本控制工具GHelper:轻量级性能优化解决方案

华硕笔记本控制工具GHelper:轻量级性能优化解决方案 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops. Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and other models 项目地址:…...

避开这3个坑!用Dify搭建私有AI助手的最佳实践指南

避开这3个坑!用Dify搭建私有AI助手的最佳实践指南 当企业需要构建专属AI助手时,数据隐私和定制化需求往往成为核心考量。Dify作为开源AI应用开发框架,正成为越来越多开发者的首选。但在实际部署过程中,90%的失败案例都源于相同的三…...

阈值回归模型全解析:从原理到R实现(附四种类型对比)

阈值回归模型全解析:从原理到R实现(附四种类型对比) 在数据分析实践中,我们常常遇到变量间关系并非简单线性,而是在某个临界点发生显著变化的情况。比如药物剂量超过某个阈值时疗效突然提升,或者温度达到特…...

5个步骤掌握卫星遥感海岸线监测:从数据获取到变化分析的全流程指南

5个步骤掌握卫星遥感海岸线监测:从数据获取到变化分析的全流程指南 【免费下载链接】CoastSat 项目地址: https://gitcode.com/gh_mirrors/co/CoastSat 海岸带作为地球表层系统最活跃的界面之一,其动态变化直接反映气候变化与人类活动的综合影响…...

猫抓扩展的资源嗅探技术实现深度解析

猫抓扩展的资源嗅探技术实现深度解析 【免费下载链接】cat-catch 猫抓 chrome资源嗅探扩展 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 问题导入:资源嗅探面临的三大技术挑战 在Web内容日益丰富的今天,用户对媒体资源的获取需…...

Android音频开发避坑指南:如何解决loadHwModule加载失败的6种常见问题

Android音频开发实战:全面解析loadHwModule加载失败的深度排查方案 在Android音频系统开发中,loadHwModule是连接应用层与硬件抽象层(HAL)的关键桥梁。当这个环节出现故障时,音频功能将完全失效。本文将系统性地剖析六…...

告别重复文件困扰:DupeGuru高效文件管理指南

告别重复文件困扰:DupeGuru高效文件管理指南 【免费下载链接】dupeguru Find duplicate files 项目地址: https://gitcode.com/gh_mirrors/du/dupeguru 问题引入:你的存储空间是否正被无形吞噬? 你是否曾遇到过电脑空间莫名告急&…...

GLM-OCR模型在MATLAB生态中的调用与数据交换

GLM-OCR模型在MATLAB生态中的调用与数据交换 1. 引言 在图像处理和计算机视觉的研究与工程实践中,光学字符识别(OCR)是一个高频且关键的需求。无论是分析实验数据图表、处理扫描文档,还是从工业相机图像中提取文本信息&#xff…...

Spring Boot 3.0 + Mockito 5.0实战:手把手教你写高覆盖率的Java单元测试

Spring Boot 3.0 Mockito 5.0实战:手把手教你写高覆盖率的Java单元测试 单元测试是现代软件开发中不可或缺的一环,它不仅能帮助开发者快速定位问题,还能在代码重构时提供安全保障。对于Java开发者来说,Spring Boot和Mockito的组合…...