rsync工具
简介
rsync,顾名思义remote sync(synchronize,使同步),是一款远程同步(镜像备份)工具,可以本地拷贝、把本地文件同步到远程,把远程文件拷贝到本地;可以镜像保存整个目录树和文件系统、可以做到保持原来文件的权限、时间、软硬链接等等。
rsync的安装
这里做实验用的是两台centos7的虚拟机,其中192.168.47.144做服务端,192.168.47.150做客户端
服务端
- 安装
yum -y install rsync.x86_64
yum -y install xinetd
Xinetd:即extended internet daemon,是新一代的网络守护进程服务程序,又叫超级Internet服务器,常用来管理多种轻量级Internet服务。Xinetd提供类似于inetd+tcp_wrapper的功能,但是更加强大和安全。
- 修改xinetd配置文件,配置文件位置为
/etc/xinetd.d/rsync
,内容为
service rsync#在xinetd.d目录中,每一个服务都有一个相应的配置文档,rsync为服务名
{
disable = no#是指开放远方telnet,假如需要禁止则将该配置改为:disable=yes
socket_type = stream#说明Socket连接类型是stream,也就是TCP
wait = no#指不等待到启动完成
user = root#是指以root用户启动服务进程
server = /usr/bin/rsync#是指服务进程是/usr/bin/rsync
server_args = --daemon#守护进程
port = 873#工作端口
log_on_failure = USERID#是用于做一些出错日志
}
- 修改rsync的配置文件,在最后加上
[test]#模块名,一个模块定义是以方括弧中的模块名开始,直到下一个模块定义开始或者文件结束。 path = /test#指定该模块的供备份的目录树路径,该参数是必须指定的。 uid = root#该选项指定当该模块传输文件时守护进程应该具有的uid,配合gid选项使用可以确定哪些可以访问怎么样的文件权限,默认值是"nobody"。 gid = root#该选项指定当该模块传输文件时守护进程应该具有的gid。默认值为"nobody"。 max connections = 2#指定该模块的最大并发连接数量以保护服务器,超过限制的连接请求将被告知随后再试。默认值是0,也就是没有限制。 timeout = 300#通过该选项可以覆盖客户指定的IP超时时间。通过该选项可以确保rsync服务器不会永远等待一个崩溃的客户端。超时单位为秒钟,0表示没有超时定义,这也是默认值。对于匿名rsync服务器来说,一个理想的数字是600。 read only = false#该选项设定是否允许客户上载文件。如果为true那么任何上载请求都会失败,如果为false并且服务器目录读写权限允许那么上载是允许的。默认值为true。 auth users = root#该选项指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块。 secrets file = /etc/rsync.passwd#该选项指定一个包含定义用户名:密码对的文件。只有在"auth users"被定义时,该文件才有作用。文件每行包含一个username:passwd对。 strict modes = yes#该选项指定是否监测密码文件的权限,如果该选项值为true那么密码文件只能被rsync服务器运行身份的用户访问,其他任何用户不可以访问该文件。默认值为true。 use chroot = yes#如果"use chroot"指定为true,那么rsync在传输文件以前首先chroot到path参数所指定的目录下。这样做的原因是实现额外的安全防护,但是缺点是需要root权限,并且不能备份指向外部的符号连接所指向的目录文件。默认情况下chroot值为true。
- 准备密码文件
nano /etc/rsync.passwd
(这里的密码文件名要和前面的配置文件里面的一样)
- 给密码文件权限
chmod 600 /etc/rsync.passwd
客户端
- 安装
yum -y install rsync.x86_64
rsync的使用
服务端
- 启动服务
systemctl start xinetd.service
- 查看一下端口状态
ss -tanl | grep 873
- 准备实验用的文件(其实不用也行,下面就直接利用本地拷贝的文件来进行试验了)
mkdir /test
touch /test/haha
nano /test/haha
客户端
查看服务端有哪些可用的数据源
rsync --list-only root@192.168.47.144::
本地拷贝
利用rsync把本地的文件从一个目录拷贝到另一个目录
mkdir /backup
touch test.txt
ls
rsync test.txt /backup
ls /backup
同步本地文件到远程
rsync test.txt root@192.168.47.144::test
接着输入之前设置的密码就行,之后就会发现服务端(远程)的相应目录(之间配置文件里面所设置的)下出现同步的文件
注意:如果是rsync test.txt root@192.168.47.144::test就是拷贝到目标的test配置目录下,如果是rsync test.txt root@192.168.47.144:/test 就是拷贝到服务端的/test(通过ssh查找,没有用rsync)
把远程文件拷贝到本地
rsync -r root@192.168.47.144::test /backup