Rsync 全球产线同步至中国产线

news/2025/1/20 8:05:37/

Rsync 全球产线同步至中国产线

任务描述

全球产线的文件存储在一天之内同步至中国产线

背景

  • 全球产线中 90%以上的文件,中国产线已有,文件名和文件大小但是 时间戳不一样
  • 全球产线中到中国产线的网速只有 700k/s
  • 目前全球产线 中数据 2T
  • 7*24 服务不可中断

解决方案

Rsync 介绍

rsync是一款开源,快速,多功能的可实现增量的本地或远程的数据镜像同步备份的优秀工具。适用于多个平台。从软件名称可以看出来是远程同步的意思(remote sync)。可使本地主机不同分区或目录之间及本地和远程两台主机之间的数据快速同步镜像,远程备份等功能。

在同步备份时,默认情况下,rsync通过其独特的“quick check”算法,仅同步大小或者最后修改时间发生变化的文件或目录(也可根据权限,属主等变化同步,需要制定参数)。甚至是只同步一个文件里变化的内容部分,所以可以实现快速的同步数据的功能。

数据初始化

方案一:全量初始化

因网速限制,传输 2T 的数据需要几十天时间,故否掉$

方案二:更新现有文件元数据

什么样的文件不需要更新
  • default:源目录和目标目录中,跳过文件名,文件大小,文件 更新时间的文件. 执行时间:27 分钟
  • --ignore-times: 源目录和目标目录中,不跳过那些有同样的时间和大小的文件
  • --size-only: 源目录和目标目录中,只跳过大小相同的文件(文件名,文件大小)。执行时间:7 分钟
  • checksum: 根据 checksum 计算文件是否相同。执行时间:3 小时+

综合考虑安全性和速度,default 模式最适合,故需要更新中国产线时间戳与全球一样

故需要把根据现有文件的文件名和文件大小更新为相同时间戳
rsync -a   --size-only --progress  --existing --rsync-path="sudo rsync"   --exclude ".*/" /repo.xxxx/xxxxprod/centos7/ rsync@10.254.162.xxx:/repo.xxx/xxxxprod/centos7/
  • --existing: 仅仅更新那些已经存在于 DST 的文件,而不备份那些新创建的文件
  • -a: archive 模式,即在 DST 的文件保留与 SRC 上的文件的元数据(含时间戳)
  • --progress: 展示传输过程
  • --exclude: 不同步某些文件
  • --rsync-path:指定远程服务器上的rsync命令所在路径信息。(specify the rsync to run on remote machine)

定时任务同步

基本命令

rsync -aHAXxv   --numeric-ids --update --progress   --rsync-path="sudo rsync"   --exclude ".*/" /repo.xxx/xxxxprod/centos7/ rsync@10.254.162.xxx:/repo.xxx/xxxxprod/centos7/
  • H: 保留硬链接
  • A: 保留 ACLs
  • X: 保留外部属性
  • x: 不跨越文件系统的边界(don't cross file-system boundaries)
  • v: 打印详细记录
  • --numeric-ids: 不要按用户/组名映射 uid/gid 值(don't map uid/gid values by user/group name_
  • --update: 如果 DST 的 文件更新,则跳过 (skip files that are newer on the receiver)

性能提升

rsync -aHAXxv   --numeric-ids --update --progress   --rsync-path="sudo rsync"   --exclude ".*/"  -e "ssh -T -c arcfour -o Compression=no -x" /repo.xxx/xxxxprod/centos7/ rsync@10.254.162.254:/repo.xxx/xxxxprod/centos7/
  • e: 指定使用rsh,ssh方式进行数据同步
ssh
  • T: 禁止分配伪终端(turn off pseudo-tty to decrease cpu load on destination.)
  • c arcfour: 用最弱但是最快的加密算法arcfour,需服务器端支持
  • o Compression=no: 关闭SSH压缩(Turn off SSH compression.)
  • x: 禁用X11图形界面转发(turn off X forwarding if it is on by default.)

自动重传

#!/bin/bashwhile [ 1 ]
dorsync -avz --partial source destif [ "$?" = "0" ] ; thenecho "rsync completed normally"exitelseecho "Rsync failure. Backing off and retrying..."sleep 180fi
done

参考教程

  • rsync wiki
  • rsync documents
  • rsync-copying-over-timestamps-only
  • rsync algorithm
  • ssh 中的 -T 参数是干嘛的?
  • The fastest remote directory rsync over ssh archival I can muster (40MB/s over 1gb NICs)
  • Rsync详解

http://www.ppmy.cn/news/721724.html

相关文章

从脉脉宕机15个小时看如何实现高可用性架构

据报道,近日,由于中国联通整治违规互联网接入及大带宽业务,某CDN/IDC服务商业务中断,华为云故障一整天,导致生意帮一整天宕机,脉脉服务器挂了,失联15个小时…… 接着整个经历就非常崩溃了&…

ASP.NET跨平台最佳实践

前言 八年的坚持敌不过领导的固执,最终还是不得不阔别已经成为我第二语言的C#,转战Java阵营。有过短暂的失落和迷茫,但技术转型真的没有想象中那么难。回头审视,其实单从语言本身来看,C#确实比Java更优秀(并…

中国移动短信MISC割接

短信息中心错误与中国移动代码的对应关系。MI::zzzz SMSC返回状态报告的状态值为EXPIRED MJ:zzzz SMSC返回状态报告的状态值为DELETED MK:zzzz SMSC返回状态报告的状态值为UNDELIV ML:zzzz SMSC返回状态报告的状态值为ACCEPTD MM:zzzz SMSC返回状态报告的状态值为UNKNOWN MN:zz…

linux升级一般关注什么,升级到Ubuntu 14.04需要注意的几项事情

期待了好久,Ubuntu 14.04在今天终于发布了,作为一个喜欢尝鲜的Ubuntu粉丝,当然要在第一时间升级了,经过了一下午的努力终于升级完成,下面跟大家分享一下升级Ubuntu到14.04需要注意的几项事情。 首先讲一下升级前最好做…

Amazon 新手要知道 100 个问题

1、 为什么亚马逊账户会关联? 同一个只能在亚马逊上注册一个卖家账户。 不能经营或维护多个卖家账户。所 有卖家的后台操作亚马逊都可以检测到,如果亚马逊的程序算法认为某几个账户 都是同一个人来操作,那么这几个账号就会被亚马逊认定为相…

一个程序员的自我修养

目录 第一章 基础编码规范 1.1 命名规范 1.2 常量定义 1.3 代码格式 1.4 OOP 规约 1.5 集合处理 1.6 并发处理 1.7 控制语句 1.8 注释规约 1.9 其它 第二章 异常与日志规范 2.1 异常处理 2.2 日志规约 第三章 数据库规范 3.1 建表规约 3.2 SQL 语句 3.3 ORM 映…

巧用Python时区,用时间记录点点滴滴

巧用Python时区,用时间记录点点滴滴 基础概念 几个时间概念 首先是几个常见的时间概念 GMT 时间:格林威治时间,基准时间UTC 时间:Coordinated Universal Time,全球协调时间,更精准的基准时间&#xff0…

Docker容器化技术教程,24小时快速入门

Docker介绍 Docker简介和安装Docker是什么为什么使用Docker和普通虚拟机的对比打包、分发、部署小结Docker部署的优势Docker通常用来做什么重要概念:镜像、容器安装Ubuntu安装DockerWindows安装Docker Docker架构镜像加速源Docker命令服务相关命令镜像相关命令容器相…