rsync工具
这个工具是用来同步数据的,常常用作拷贝数据,支持网络通信也就是支持数据本地和远程之间的拷贝也可以支持本地到本地,支持增量拷贝,该工具用作备份特别好
分为两大种用法:
remote shell 用sshd
Pull 把远程的数据拉到本地
rsync -av192.168.11.190:/tmp/1.txt /tmp/
Push 把本地数据推送到远程
rsync -av /tmp/1.txt192.168.11.190:/tmp/
rsync daemon 服务器模式,启动一个服务,通过一个端口,让客户端去连它
Pull
rsync -av192.168.1.190::aminglinux(需要加上模块名)/123/1.txt /tmp/
Push
rsync -av /tmp/1.txt192.168.1.190::aminglinux(需要加上模块名)/123/
-a==-rlptgoD
r 拷贝包含目录文件
l 拷贝软连接
L 拷贝软链接的源文件
p 使文件的权限保持一致
t 使文件的三个time时间保持一致
g使文件的属组保持一致
o 使文件的属主保持一致
D 设备文件
-v 看到过程信息
--delete 目标机器上的老文件会随着源机器上的老文件的删除而删除,不加这个选项就不会删除
--exclude="文件名" 过滤掉某些文件不去同步它
-P 在同步过程中看到进度
-u=--update 避免把目标机器上的新数据给覆盖掉(目标文件比源文件还新,那就会忽略该文件)
命令格式详解(以本地到本地为例)
-av
把111目录下的文件和目录同步到/tmp/322目录下
rsync -av111/ /tmp/322/
-L
把指定的软连接所指向的文件同步到指定的目录并以软连接名为文件名
Rsync -avL1.l /tmp/322
--delete
如果目标机器和源机器相比有多余的文件,那么就把这些多余的文件删掉
rsync -avl --delete 111/ /tmp/322/
-u
当目标机器上的文件内容更改时,如果不想在同步时被改成和源机器一样,就加上-u选项
--exclude
同步时忽略指定的文件,文件名可以带有通配符(*)
--exclude="文件名"
-P
同步时可以看到进度和速度信息
-z
同步时进行压缩,可以节省带宽提高速度,有需要时可以加上该选项
rsync同步之ssh方式
同步到远程
rsync -avP qiaoqiao/ root@192.168.15.133:/root/haohao/
@ 前边的是目标用户名,后边是IP地址或hostname
@和之前的用户名可以省略,如果省略系统就会默认同步的目标用户与当前源的用户一致
如果22端口不通,ssh还可以通过10022端口
命令需改成 rsync -avP -e "ssh -p 10022" qiaoqiao/192.168.15.133:/root/haohao/
telnet [IP地址] [端口号] 可以测试端口通不通(用yum install -y telnet安装)
rsync同步之后台服务方式
需要写一个配置文件,放在/etc/目录下然后通过命令启动它,就可以监听一个端口,并利用这个端口进行通信
第一步:在新建配置文件/etc/rsyncd.conf(文件名和位置可以自定义,在启动的时候需要去指定配置文件,但是如果就放在etc下文件名就叫rsyncd.conf就会自动加载该配置文件,不需要去指定)
port=873 #指定在哪个端口启动rsync服务,默认是873
log file=/var/log/rsync.log #指定日志文件
pid file=/var/run/rsync.pid #指定pid文件
address=192.168.15.130 #指定启动rsync服务的ip,默认是在所有的ip
[qiao] #自定义的模块名
path=/tmp/rsync #指定数据存放的路径(存在的)
use chroot=yes #是否限定在path所指定的目录,开启后可以实现额外的安全防护,但是不能备份软连接所指向指向外部文件,默认是yes,如果有软链接的话建议设置成no
max connections=4 #指定最大的连接数,默认是0即没有限制
read only=yes #登陆后是不是只读
list=yes #当用户查询服务可用的模块时,该模块是否被列出,yes列出no隐藏
uid=root #以什么身份同步数据
gid=root
auth users=qiao #同步数据时使用哪个用户
secrets file=/etc/qiao.passwd #指定密码文件,该参数和上面的参数不指定则不使用密码验证,该密码文件的权限一定是600(文件中可以有多组用户名密码,用户名必须添加在auth users参数里才能使用)
前边用户名,后边密码
hosts allow=192.168.15.133 #允许连接该模块的客户端,可以是ip、网段,用空格分隔,不指定所有的都可以连
第二步:启动rsync服务
rsync --daemon
再更改配置文件后不需要重启服务,配置文件会即时生效
同步命令:
rsync -avzP --dport [端口号] [用户名]@192.168.15.130::[模块名]/[源文件] [目标
--dport 用来指定端口号,不写默认873端口
在命令后加上--password-file=[密码文件]可以指定密码文件,省去输入密码的步骤,密码文件里只能存一个登陆用户的密码,多个用户就需要在客户机上创建多个密码文件
rsync --dport [端口号] 192.168.15.130::
列出可用的模块名(未被屏蔽的)
编辑回复