福田做网站优化乐云seo,手机网站开发入门,农业建设信息网站,首页风格目录 rsync 传输备份工作原理详解一、核心算法:差异传输二、传输流程三、关键技术四、与cp/scp复制的本质区别rsync的使用基本语法常用选项常用组合案例1. **本地目录同步**2. **远程同步(SSH协议)**3. **删除目标端多余文件**4. **排除特定文件**5. **限速传输(避免占用带… 目录 rsync 传输备份工作原理详解一、核心算法:差异传输二、传输流程三、关键技术四、与cp/scp复制的本质区别 rsync的使用基本语法常用选项常用组合案例1. **本地目录同步**2. **远程同步(SSH协议)**3. **删除目标端多余文件**4. **排除特定文件**5. **限速传输(避免占用带宽)**6. **仅同步修改时间不同的文件** 关键注意事项 rsync 同步方式1. 完整备份 (Full Backup)2. 差量备份 (Differential Backup)3. 增量备份 (Incremental Backup)常见问题 rsync实现远程增量备份的方案 rsync + inotify 实时同步案例1. 安装 inotify-tools2. 实时同步脚本 (rsync_inotify.sh)3. 启动脚本(后台运行)4. 系统服务配置(可选) rsync 传输备份工作原理详解
rsync是一个快速和非常方便的文件复制工具。 它能本地复制,远程复制,或者远程守护进程方式复制 ,它提供了大量的参数来控制其行为的各个方面,并且允许非常灵活的方式来实现文件的传输复制。
rsync监听端口:873。 其核心工作原理可以分为以下几个关键方面:
一、核心算法:差异传输 分块校验机制: rsync 将文件分割成固定大小的块(默认约700字节)对每个块计算两个校验值: 弱校验(rolling checksum):32位的快速校验强校验(MD5):128位的精确校验 差异检测过程: 发送方计算源文件的校验值接收方计算目标文件的校验值双方比较校验值,仅传输不匹配的块 二、传输流程
扫描:扫描需要传输的文件列表。
检查:对比源和目标文件的时间戳和大小。
分块:将文件分割成固定大小的数据块。
校验:通过滚动校验算法计算数据块的特征值。
传输:仅传输变化的数据块。
重组:在目标端重组完整文件。三、关键技术 双通道设计: 控制通道:传输命令和元数据数据通道:实际文件数据传输 滚动校验算法: /* 简化版滚动校验计算 */
uint16_t weak_checksum(char *buf, int len) {uint16_t s1 = 0, s2 = 0;for (int i = 0; i len; i++) {s1 += buf[i];s2 += s1;}return (s2 16) | s1;
}这种算法可以高效计算滑动窗口的校验值 三次文件处理: 文件列表生成差异比较文件更新 四、与cp/scp复制的本质区别
操作cp/scprsync文件比较无校验和比较传输单位整个文件文件块网络使用高优化CPU使用低较高适合场景简单复制重复同步rsync的使用
基本语法
rsync [选项] 源文件 目标文件常用选项
选项作用解释-a (–archive)归档模式,保留所有文件属性(权限、时间、所有者等),等同于 -rlptgoD-v (–verbose)显示详细传输过程-z (–compress)压缩传输,节省带宽(适合远程同步)-h (–human-readable)以易读格式(KB/MB/GB)显示文件大小-n (–dry-run)模拟运行,只显示会做什么但不实际执行-e指定远程 shell 命令 (如 -e "ssh -p 2222",默认为ssh)-P组合选项,等同于 --partial --progress(显示进度 + 支持断点续传)--exclude排除特定文件或目录--include包含特定文件或目录--delete删除目标目录中存在但源目录中不存在的文件(保持严格同步)常用组合案例
1. 本地目录同步
rsync -av /source/ /destination/作用:将 /source/ 下的内容同步到 /destination/(保留所有属性)注意:源路径末尾的 / 表示同步目录内容(不含目录本身),不加 / 会同步目录本身。2. 远程同步(SSH协议)
rsync -avzP -e "ssh -p 22" /local/path/ user@remote:/remote/path/-e "ssh -p 22":指定 SSH 端口(默认 22 可省略)-z:压缩传输加速3. 删除目标端多余文件
rsync -av --delete /source/ /destination/危险操作:确保目标路径正确,否则可能误删数据!4. 排除特定文件
rsync -av --exclude='*.tmp' --exclude='logs/' /source/ /destination/--exclude:排除匹配的文件或目录(支持通配符)*:匹配零个或多个字符,例如,*.txt 匹配所有以 .txt 结尾的文件。?:匹配一个字符,例如,file?.txt 匹配 file1.txt、file2.txt 等。[abc]:匹配方括号内的任意字符,例如,file[1-3].txt 匹配 file1.txt、file2.txt、file3.txt。5. 限速传输(避免占用带宽)
rsync -avz --bwlimit=