rsync
Posted hsgoose
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rsync相关的知识,希望对你有一定的参考价值。
1、什么是rsync?
rsync,Rsync英文全称为Remote synchronization 缩写rsync
是开源、高速的、可实现本地以及远程,全量以及增量的数据复制(拷贝)工具。
Rsync有3种传输数据模式,具体介绍如下。
- 1.本地(Local)数据传输模式
Rsync的本地数据传输模式,很类似于cp本地复制命令,可以实现文件、目录的移动备份等功能,所不同的是Rsync有增量复制的功能。
- 2.远程Shell数据传输模式
远程Shell数据传输模式一般是借助通道(如SSH)在两台服务器之间进行复制数据,这两台服务器之间是对等的,没有客户端与服务端之分,整个过程类似于scp远程复制命令,所不同的是Rsync有增量复制的功能,但缺少scp的加密复制的功能。(默认其实是加密的 因为使用了 -e ssh)
- 3.守护进程(Daemon)传输模式
守护进程传输模式是在客户端与服务端之间进行数据复制的,通常需要服务端部署守护进程服务,然后在客户端执行命令,实现数据的拉取和推送复制。以上几种Rsync的工作方式,可以通过man rsync帮助或者查看官方手册获得。下面分别对上面3种模式进行详细说明,帮助初学者掌握Rsync软件工具的应用。
关于2,0版本和3.0版本
在CentOS5系统上,Rsync软件版本默认为2.x,同步增量复制数据原理是把所有的文件比对一遍,然后再进行数据同步。在CentOS6和CentOS7系统上,Rysnc软件版本默认为3.x,增量复制数据的原理是一边比对差异,一边对差异的数据部分进行复制。从增量复制数据的效率上而言,Rsync 3.x版本比Rsync 2.x更有优势一些。
2、rsync的1V4
- 本地备份数据 cp
[root@nfs01 backup]# cp /etc/hosts /tmp
[root@nfs01 backup]# ll /tmp/hosts
-rw-r--r-- 1 root root 371 May 6 16:11 /tmp/hosts
[root@nfs01 backup]# rsync /etc/hosts /tmp/host_rsync
[root@nfs01 backup]# ll /tmp/host_rsync
-rw-r--r-- 1 root root 371 May 6 16:12 /tmp/host_rsync
-
b 远程备份数据 scp
scp -rp /etc/hosts root@172.16.1.41:/backup
root@172.16.1.41‘s password:
hosts 100% 371 42.8KB/s 00:00
-r --- 递归复制传输数据
-p --- 保持文件属性信息不变
[root@nfs01 ~]# rsync -rp /etc/hosts 172.16.1.41:/backup/hosts_rsync
root@172.16.1.41‘s password: -
c 替代删除命令
rm命令
[root@nfs01 ~]# rsync -rp --delete /null/ 172.16.1.41:/backup
root@172.16.1.41‘s password:
--delete 实现无差异同步数据
面试题: 有一个存储数据信息的目录, 目录中数据存储了50G数据, 如何将目录中的数据快速删除
rm /目录/* -rf
- d 替代查看文件命令 ls
[root@backup ~]# ls /etc/hosts
/etc/hosts
[root@backup ~]# rsync /etc/hosts
-rw-r--r-- 371 2019/05/06 11:55:22 hosts
3、3种传输数据模式
-
1.本地(local) 相当于cp命令 但cp是全量 rsync是增量
rsync [OPTION...] SRC... [DEST]
-
2.远程Shell模式
借助类似ssh隧道传输数据,适合不同的机器之间复制。
异地拷贝,相当于scp,区别scp是远程全量拷贝)
pull,拉:从远端拉取到本地。
语法:
rsync [OPTION...] [USER@]HOST:SRC... [DEST]
rsync命令 参数选项 [认证用户]@[主机地址]:[源路径] 本地路径
push,推:从本地推到远端。
语法:
rsync [OPTION...] SRC... [USER@]HOST:[DEST]
rsync命令 参数选项 本地路径 [认证用户]@[主机地址]:[目标路径]
示例
推
rsync -avz /opt/ root@192.168.100.17:/opt/
-
3.rsync守护进程模式
该复制使用系统用户进行存在安全隐患,而使用普通用户进行又会导致权限不足
因而使用守护进程模式 定义一个虚拟用户
步骤:
-
下载安装软件
-
编写配置文件
-
创建rsync服务的虚拟用户 创建备份目录并修改属主属组信息
-
创建备份服务认证密码文件
-
启动备份服务
1.安装
yum install -y rsync
2.配置配置文件
##全局模块
uid = rsync #访问/backup的用户
gid = rsync #访问/backup的用户组
port = 873 #监听端口
fake super = yes #3.12版本以后 无需让rsync以root身份就可以存储
use chroot = no #关闭假根目录 就是限制不能出指定的目录
max connections = 200 #并发连接数
timeout = 300 #超时时间
ignore errors #忽略错误
read only = false #可读写
list = false #不能(列表,就是列出模块)
hosts allow =172.16.1.0/24 #内网网段。
hosts deny = 0.0.0.0/32 #什么网段不让连。
auth users = rsync_backup #认证虚拟用户(客户端连接使用的用户)。
secrets file = /etc/rsync.password #认证虚拟用户密码文件。
##局部模块
[backup] #模块标签
comment = "backup dir by oldboy" #注释
path = /backup #备份的路径
说明:
- 1.fake super
rsync在进行推送到服务端时 ,需要将文件所属进行修改 ,默认文件权限为原本文件权限 但是chgrp命令只有root可以使用 因此使用伪权限 或者在客户端推送的时候,将权限改为服务端rsync指定的用户
- 2.list = false
如过不为false 客户端可以看到模块 容易导致危险
[root@rsync ~]# rsync -avz /etc/passwd rsync_backup@192.168.100.13:: backup "backup dir by oldboy"
- 3.黑白名单
hosts allow =172.16.1.0/24 #内网网段。
hosts deny = 0.0.0.0/32 #什么网段不让连。
默认情况下 白名单高于黑名单 (即为白名单允许 黑名单禁止 结果为允许)
3.创建rsync服务的虚拟用户与备份目录
[root@rsync ~]# useradd -M -s /sbin/nologin rsync
[root@rsync ~]# mkdir /backup
[root@rsync ~]# chown -R rsync.rsync /backup
4.创建备份服务认证密码文件
[root@rsync ~]#
echo "rsync_backup:1" > /etc/rsync.password
chmod 600 /etc/rsync.password ##一定且必须为600 否则会认证失败
扩:
文件不能有空格 查看空格命令
cat -A 或vim 里 set list
5.启动服务
systemctl start rsyncd
systemctl enabled rsyncd
测试
[root@rsync ~]# rsync -avz /etc/passwd rsync_backup@192.168.100.13::backup
提示:
在使用rsync命令对目录数据进行本地或远程复制时,目录名称后面是否加“/”,产生的复制效果是不一样的。 目录后面不加“/”,会将/oldboy_dir目录及目录下面的文件内容一并复制到tmp目录中;如果目录后面加“/”, 会将/oldboy_dir目录下面的文件内容复制到tmp目录中,但oldboy_dir目录本身没有被复制.
参数:
-a #归档模式传输,等于tropgDl
-v #详细模式输出,打印速率,文件数量等
-z #传输时进行压缩以提高效率
#以上为常用参数 包括如下的限速
-r #递归传输目录及子目录,即目录下得所有目录都同样传输。
-t #保持文件时间信息
-o #保持文件属主信息
-p #保持文件权限
-g #保持文件属组信息
-l #保留软连接
-P #显示同步的过程及传输时的进度等信息
-D #保持设备文件信息
-L #保留软连接指向的目标文件
-e #使用的信道协议,指定替代irsh的shell程序
--exclude=PATTERN #指定排除不需要传输的文件模式 可绝对 可相对
--exclude-from=file #文件名所在的目录文件(即要排除的文件名写到一个文件里)
--bwlimit=100 #限速传输(默认传输为全速 会拉满带宽,导致业务中断 单位M)
--partial #断点续传
--delete #让目标目录和源目录数据保持一致
强制数据一致性
--delete用法
对于同一个文件或者文件夹 上传文件与服务段对比 多增少删
[root@clinet~]# rsync -avz /opt rsync_backup@192.168.100.13::backup --delete
免密方法:
方法1:认证密码文件
[root@clinet~]# echo "1" > /etc/rsync.password
[root@clinet~]# chmod 600 /etc/rsync.password ##非必需 只是为了保证安全
[root@clinet~]# rsync -avz /opt rsync_backup@192.168.100.13::backup --password-file=/etc/rsync.password
方法2:
[root@clinet~]# echo ‘ export RSYNC_PASSWORD=1‘ >>/etc/bashrc
[root@clinet~]# tail -1 /etc/bashrc
export RSYNC_PASSWORD=1
[root@clinet~]# . /etc/bashrc
[root@clinet~]# echo $RSYNC_PASSWORD
1
4.rsync工作原理
以上是关于rsync的主要内容,如果未能解决你的问题,请参考以下文章