rsync 远程同步

目录

[一. rsync 的相关知识](#一. rsync 的相关知识)

1.简介

[2. rcync 特性](#2. rcync 特性)

[3. 同步方式](#3. 同步方式)

[4. rsync同步源服务器](#4. rsync同步源服务器)

[5. scp 和 rsync 的区别](#5. scp 和 rsync 的区别)

[二. rsync 的工具使用](#二. rsync 的工具使用)

[1. 常用 rsync 命令](#1. 常用 rsync 命令)

[2. 配置源的两种表达方式](#2. 配置源的两种表达方式)

[三. 配置 rsync 定时下行同步](#三. 配置 rsync 定时下行同步)

[3.1 配置rsync源服务器](#3.1 配置rsync源服务器)

[3.2 发起端](#3.2 发起端)

[3.3 测试数据](#3.3 测试数据)


一. rsync 的相关知识

1.简介

rsync(Remote Sync,远程同步) 是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,并保持链接和权限,且采用优化的同步算法,传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用。

在远程同步任务中,负责发起rsync同步操作的客户机称为发起端,而负责响应来自客户机的rsync同步操作的服务器称为同步源。在同步过程中,同步源负责提供文件的原始位置,发起端应对该位置具有读取权限。

Rsync 是 Linux 系统下的数据镜像备份工具,使用快速增量备份工具 Remote Sync 可以远程同步, 可以在不同主机之间进行同步,可实现全量备份与增量备份,保持链接和权限,且采用优化的同步算法, 传输前执行压缩,因此非常适合用于架构集中式备份或异地备份等应用。同时Rsync支持本地复制,或者与其他 SSH、rsync 主机同步

官方网站:https://rsync.samba.org/

2. rcync 特性

支持拷贝特殊文件,如连接文件、设备等。

可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能。

可以做到保持原文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变 --p。

可以实现增量同步,既只同步发生变化的数据,因此数据传输效率很高(tar-N)。

可以使用rcp、rsh、ssh等方式来配合传输文件(rsync本身不对数据加密)。

可以通过socket(进程方式)传输文件和数据(服务端和客户端)。

支持匿名的活认证(无需系统用户)的进程模式传输,可以实现方便安全的进行数据备份和镜像。

3. 同步方式

(1)完整备份 :每次备份都是从备份源将所有的文件或目录备份到目的地。

(2)差量备份 :备份上次完全备份以后有变化的数据(他针对的上次的完全备份,他备份过程中不清除存档属性)。

(3)增量备份:备份上次备份以后有变化的数据(他才不管是那种类型的备份,有变化的数据就备份,他会清除存档属性)

备份的方式

1、发起端:负责 rsync 同步操作的客户机叫做发起端,通知服务器我要备份你的数据

2、备份源:负责响应来自客户机 rsync 同步操作的服务器叫做备份源,需要备份的服务器

3、服务端:运行 rsyncd 服务,一般来说,需要备份的服务器

4、客户端:存放备份数据

4. rsync同步源服务器

在远程同步任务中,负责发起 rsync 同步操作的客户机称为发起端,而负责响应来自客户机的 rsync 同步操作的服务器称为同步源。

  • 在下行同步(下载)中,同步源负责提供文档的原始位置,发起端应对该位置有读取权限。
  • 在上行同步(上传)中,同步源负责提供文档的目标位置,发起端应对该位置具有写入权限。

5. scp 和 rsync 的区别

  • 功能差距
    • rsync远程拷贝可以附带软链接/硬链接。(参数-l 保留软链接,-H 保留硬链接)
    • scp不支持链接的拷贝。
  • 效率差异
    • 简单的解析scp和rsync,前是复制,后是同步。
      • rsync 和 scp 在文件夹均不存在时,执行时间相差不大,但是文件夹存在的情况下差异很大。原因是 scp 是复制:若目的地文件不存在则新建,若存在则覆盖。而 rsync是同步,比较两边文件是否相同,相同的话,就什么都不做,若存在差异就直接更新。
      • 起到同步的作用时用 rsync 会快一些,起到复制作用时两者均可(目的地无文件)。视情况来选择 rsync 或 scp。

二. rsync 的工具使用

1. 常用 rsync 命令

基本格式:

复制代码
rsync [选项] 原始位置 目标位置

常用选项:

选项 功能
-r 递归模式,包含目录及子目录中的所有文件。
-l 对于符号链接文件仍然复制为符号链接文件。
-v 显示同步过程的详细(verbose)信息。
-z 在传输文件时进行压缩(compress)。
-a 归档模式,保留文件的权限、属性等信息,等同于组合选项"-rlptgop"。
-p 保留文件的权限标记。
-t 保留文件的时间标记。
-g 保留文件的属组标记(仅超级用户使用)。
-o 保留文件的属主标记(仅超级用户使用)。
-H 保留硬连接文件。
-A 保留ACL属性信息。
-D 保留设备文件及其他特殊文件。
--delete 删除目标位置有而原始位置没有的文件。
--checksum 根据校验和(而不是文件大小、修改时间)来决定是否跳过文件。
复制代码
--delete	删除目标位置有而原始位置没有的文件。

2. 配置源的两种表达方式

复制代码
格式一:
用户名@主机地址::共享模块名
rsync -avz backuper@192.168.44.60::wwwroot /opt/


格式二:
rsync://用户名@主机地址/共享模块名
rsync -avz rsync://backuper@192.168.44.60/wwwroot /opt/

三. 配置 rsync 定时下行同步

3.1 配置rsync源服务器

(192.168.44.60)

复制代码
建立/etc/rsyncd.conf 配置文件
vim /etc/rsyncd.conf				#添加以下配置项
uid = root
gid = root
use chroot = yes										#禁锢在源目录
address = 192.168.44.60								    #监听地址
port 873												#监听端口 tcp/udp 873,可通过cat /etc/services | grep rsync查看
log file = /var/log/rsyncd.log							#日志文件位置
pid file = /var/run/rsyncd.pid							#存放进程 ID 的文件位置
hosts allow = 192.168.44.0/24							#允许访问的客户机地址
dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z		#同步时不再压缩的文件类型

[wwwroot]												#共享模块名称
path = /var/www/html									#源目录的实际路径
comment = Document Root of www.pj.com
read only = yes											#是否为只读
auth users = xyl									#授权账户,多个账号以空格分隔
secrets file = /etc/rsyncd_users.db						#存放账户信息的数据文件

纠正一个错误

复制代码
为备份账户创建数据文件
vim /etc/rsyncd_users.db
xyl:123			#无须建立同名系统用户

chmod 600 /etc/rsyncd_users.db
复制代码
保证所有用户对源目录/var/www/html 都有读取权限
mkdir /var/www/html -p
chmod +r /var/www/html/
ls -ld /var/www/html/
复制代码
启动 rsync 服务程序
rsync --daemon				
#启动 rsync 服务,以独立监听服务的方式(守护进程)运行 

netstat -anpt | grep rsync
复制代码
关闭 rsync 服务
kill $(cat /var/run/rsyncd.pid)
rm -rf /var/run/rsyncd.pid

3.2 发起端

(192.168.44.50)

3.3 测试数据

在源服务器写

去发起端查看

复制代码
[root@localhost data]#rsync -avz xyl@192.168.44.60::wwwroot .

免密登录

再次测试

去发起端查看

复制代码
[root@localhost data]#rsync -avz --password-file=/etc/server.pass xyl@192.168.44.60::wwwroot .

测试 --delete 的用法

去服务端删除class2.txt

再同步,查看

复制代码
[root@localhost data]#rsync -avz --delete --password-file=/etc/server.pass xyl@192.168.44.60::wwwroot .

还有另一种方式,用ssh同步内容

复制代码
rsync -az 原始位置 目标位置
          用户名@ip::共享模块名 rsync -avz xyl@192.168.44.60::wwwroot /data 
          rsync://用户名@IP/共享模块名 rsync -avz rsync://xyl@192,168,44.60/wwwroot /data

rsync -avz -e "ssh -p ssh端口号" 原始位置  目标位置

rsync -avz -e "ssh -p 22" root@192.168.44.60"/var/www/html /data
相关推荐
lybugproducer14 小时前
深入 Linux 文件系统:从数据存储到万物皆文件
linux
烦躁的大鼻嘎15 小时前
【Linux】深入Linux多线程架构与高性能编程
linux·运维·服务器·开发语言·c++·ubuntu
羚羊角uou15 小时前
【Linux】system V共享内存
linux·运维·服务器
林克爱塞尔达15 小时前
Linux入门(二)
linux·运维·chrome
破烂儿15 小时前
Ubuntu Server 安装图形界面和通过Window远程桌面连接服务器(Xrdp)
linux·服务器·ubuntu
Hello.Reader15 小时前
Kafka 运维实战基本操作含命令与最佳实践
运维·kafka·linq
存储服务专家StorageExpert15 小时前
手搓一个 DELL EMC Unity存储系统健康检查清单
linux·运维·服务器·存储维护·emc存储
笑口常开xpr16 小时前
Linux 库开发入门:静态库与动态库的 2 种构建方式 + 5 个编译差异 + 3 个加载技巧,新手速看
linux·c语言·动态库·静态库
小虾米vivian16 小时前
达梦:将sql通过shell脚本的方式放在后台执行
服务器·数据库·sql
SonOfWind031116 小时前
CentOS搭建本地源
linux·运维·centos