rsync介绍
rsync 是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。并且可以不进行改变原有数据的属性信息、实现数据的备份迁移特性。Rsync软件适用于unlx、linux、windows等多种操作系统平台。可以实现本地或者异地备份
rsync包含的功能
1、rsync包含cp功能
命令 参数 源文件 目标文件
[root@backup caojiaoyue]# ls /tmp/
[root@backup caojiaoyue]# rsync -r /caojiaoyue/ /tmp/
[root@backup caojiaoyue]# ls /tmp/
cao jiao yue
[root@backup caojiaoyue]# ls
cao jiao yue
[root@backup caojiaoyue]#
2、rsync包含rm功能
要实现rm功能其实涉及到一个无差异同步。其原理是创建一个空目录。然后把这个空目录去同步要删除的目录。注意如果删除但个文件就实现不了。只能删除单个文件的内容
[root@backup /]# ls /caojiaoyue/
1 2 3
[root@backup /]# ls kowenj
[root@backup /]# rsync -r --delete kowenj/ /caojiaoyue
[root@backup /]# ls /caojiaoyue/
[root@backup /]#
注意源必须要是空目录必须加上/
错误写法rsync -r --delete 源目录 目标目录 这样是会把源目录复制到目标目录的
正确写法rsync -r --delete 源目录/ 目标目录
一般情况还是用rm吧
3、rsync包含ls功能
[root@backup /]# rsync /etc/
drwxr-xr-x 4096 2017/05/05 09:19:13 .
-rw------- 0 2017/05/03 08:30:18 .pwd.lock
-rw-r--r-- 12288 2017/05/04 12:22:51 .rsyncd.conf.swp
-rw-r--r-- 4439 2016/04/12 15:56:23 DIR_COL
4、rsync包含scp功能
scp传输法
[root@backup /]# scp /caojiaoyue/* 10.0.0.31:/root/
[email protected]'s password: 注意这里提示输入的密码是接收这些文件机器root用户的密码
ca 100% 0 0.0KB/s 00:00
ca1 100% 0 0.0KB/s 00:00
ca2 100% 0 0.0KB/s 00:00
[root@backup /]#
但是scp是全量传输,也就是不管对方机器上有没有你传输的文件。你都会传过去。万一有文件名字是一样的。但是内容不一样的话。就会覆盖掉。
rsync传输法
[root@caojiaoyue ~]# rsync -r -e "ssh -p 22" /root/caojiao 10.0.0.11:/tmp
The authenticity of host '10.0.0.11 (10.0.0.11)' can't be established.
RSA key fingerprint is 01:9a:da:25:04:f2:79:cb:d5:0d:f2:31:6b:8a:fa:f8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.0.11' (RSA) to the list of known hosts.
[email protected]'s password:
[root@caojiaoyue ~]#
命令 参数 源文件 IP:目标文件
注意rsync传输文件是增量的,也就是说 目标机器和源机器上共有的不会发。只发没有的。从而大大提高了效率
有没有想过你可以传输文件给别的机器。那么你也可以从别的机器拿数据啊。官方解释为拉和推(pull 和 push)
其实可以这样理解 如果目标文件在你的机器上那么就是从别人的机器上拿过来啊。如果目标文件在别人机器上那么肯定就是从你机器上发过去啊
从别人机器 上拿文件
命令 参数 IP目标文件 源文件
发送给别人机器上
命令 参数 源文件 IP目标文件
5、rsync守护进程方式传输(工作中常用的。通过守护进程方式实现实时备份等等)
第一步配置rsync服务端的配置文件
注意机器上以前没有做过守护进程方式的传输。默认是没有配置文件的需要你去创建在编辑的
rsync的配置文件是/etc/rsyncd.conf 注意名字一样。如果不是这个名字的话那么rsync是不知道你配置的那个文件是他的配置文件
vim /etc/rsyncd.conf
uid = rsync 执行用户的uid
gid = rsync 执行用户的gid
use chroot = no
max connections = 200 最大连接数
timeout = 300 超过时间如果客户端300秒没有发送文件的话就会自动断开
pid file = /var/run/rsyncd.pid 存储这个服务的进程号文件
lock file = /var/run/rsync.lock 锁文件 一个客户端没有传送另外一台传输不了。为了避免负载
log file = /var/log/rsyncd.log 服务的日志文件
ignore errors 忽略错误
read only = false 是否为只读文件。当然不是啊 所以false (trep)
list = false 模块列表是否可以让客户端看
hosts allow =172.16.1.0/24 可以传输的ip段
hosts deny = 0.0.0.0/32 不可以传输的IP段
auth users = rsync_backup 传输时候用的认证用户(理解为账号吧)
secrets file = /etc/rsync.password 传输时候用的认证密码
[backup] 模块名字
comment = "backup dir by oldboy"
path =/backup 存储的地址
配置文件里面文件地址等可以自己改
第二步我们刚刚配置文件不是指定了运行这个程序的用户吗。如果有就不用创建了。没有就创建吧(为了安全一般用不可以登陆的)
useradd -s /sbin/nologin -M rsync 创建一个不可以登陆的用户
id rsync 查看下
第三步创建一个存储的目录应为我们配置文件里已经写了为/backup就创建他吧
mkdir /backup
注意的是我们不是用rsync这个用户创建的目录。但是我们是用这个用户来运行,为了不发生权限问题我们把这个文件的拥有者和属组改成rsync
chown -R rsync.rsync /backup 递归改因为这当你创建这个文件后他会生成一个的隐藏文件。比如点和点点
第四步创建一个存储密码的文件。因为我们配置文件已经指定了/etc/rsync.password所以我们就用它吧
echo rsync_backup:123456 >>/etc/rsync.password
rsync_backup是用户(即账号)123456就是密码。如果有多个用户或者密码的话换行写不要用逗号。但是前提是多个用户,要在配置文件里先申明
第五步密码文件创建好了。默认文件的权限是644 那么就是谁都可以看这个文件。这样的密码岂不是明文的。所以我们要把文件改成600或者400。只要拥有者有看的权限就好了。注意这个文件的拥有者不要是rsync了。如果改了的话。那传输也是会不成功的。这个文件的拥有者必须是root
第六步启动rsync这个守护进程
rsync --daemon
就可以实现客户端传输文件了
守护进程客户端传输文件
rsync 参数 源文件 用户@IP::目标文件
命令 参数 源文件 用户@IP::目标文件
和scp不同的收目标文件和IP用两个::分割
注意:守护进程方式不支持服务端向没有配置的客户端拿东西。因为客户端什么都没有配置。比如说账号密码等。非要拿的话,就变成了scp模式了
还可以不输入密码模式传输,
原理是你把密码,放在一个文件中然后指定密码所在
命令 参数 源文件 用户@IP::目标文件 --passwrod-frel=存储密码的文件地址
注意存储密码的文件要改成000或者400或者600否则会报密码文件不能被其他用户访问的错
srync参数
--delete 实现无差异数据同步
----bwlimit=RATE实现数据传输过程中限速
-v详细模式输出,
-a归档模式,表示以递归方式传输文件。并保持所有文件属性,等于rtopgDl(有星的都包涵)
-r 对子目录以递归模式,即目录的所有文件都同样传输,注意是小写r **
-t 保持文件时间信息 **
-o保持文件属主信息 **
-P显示同步的过程及传输的进度等信息
-p保持文件权限 **
-g保持文件属组信息 **
-D保持设备文件信息 **
-l保留设备软链接 **
-e使用的信道协议,例如指定ssh -e “ssh -p 22”
--exclude=PATTERN 指定排除不需要传输的文件信息类似于tar的排除
-exclude-from=file 文件名所在的目录文件,既可以实现排除多个文件类似于tar的排除多个