rsync功能介绍
rsync是Linux系统下的数据镜像备份工具,通过rsync可以将本地系统数据通过网络备份到任何远程主机上。
rsync有如下特性:
-
可以镜像保存整个目录树和文件系统
-
可以增量同步数据,文件传输效率高,因而同步时间很短。
-
可以保持原有文件的权限、时间等属性。
-
加密传输数据,保证了数据的安全性。
rsync有两种应用模式
- client/server模式
- client/client模式。
rsync官方地址:https://rsync.samba.org/
rsync监听端口:873
安装:yum install -y rsync
rsync使用
-a 归档模式传输,等于-tropgDl -t -r -o -g -D -l
-r 递归复制目录树
-v 详细模式输出,打印速率,文件数量等
rsync -v ./2.txt [email protected]:/opt/
-z 传输时进行压缩以提高效率
$ rsync -vz ./2.txt [email protected]:/opt/
-t 保持文件时间信息
rsync -vzrt ./a/b/c/2.txt [email protected]:/opt/
-o 保持文件属主信息
-g 保持文件属组信息
rsync -vzrtgo ./a/b/c/2.txt [email protected]:/opt/
-p 保持文件权限
rsync -vzrtgop ./a/b/c/2.txt [email protected]:/opt/
-l 保留软连接
rsync -vzrtgopl ./* [email protected]:/opt/
-p 显示同步的过程及传输时的进度等信息
rsync -vzrtgoplP ./* [email protected]:/opt/
-D 保持设备文件信息
rsync -vzrtgDopl /dev/tty1 [email protected]:/opt/
-L 把软连接拷贝成文件
-e 使用的信道协议,指定替代rsh的shell程序
--append 指定文件接着上次传输中断处继续传输
--append-verify 使用参数续传(在断点续传之后,验证一下文件,如果不同,修复文件)
--exclude=PATTERN 指定排除不需要传输的文件
rsync -avzP --append-verify --exclude=2.txt ./* [email protected]:/opt/
--exclude-from=file 按照文件指定内容排除
rsync -avzP --append-verify --exclude-from=/tmp/exclude.txt ./* [email protected]:/opt/
--bwlimit=100 限速传输(单位:mb)
rsync -avzP --append-verify --bwlimit=10 ./* [email protected]:/opt/
--delete 让目标目录和源目录数据保持一致
--password-file=xxx 使用密码文件
--port 指定端口传输
rsync的client/server模式
client/server模式下,是在server端启动一个服务端口,然后客户端来连接这个端口,进行数据的同步和传输。
服务端设置
rsync服务端的配置文件为/etc/rsyncd.conf
该文件需要手动创建
# /etc/rsyncd.conf
uid = nobody # 用户id
gid = nobody # 用户组id
use chroot = no # 安全相关
port = 873 # 指定端口
max connections = 10 # 最大连接数
pid file = /var/run/rsyncd.pid # pid文件
lock file = /var/run/rsync.lock # 锁文件
log file = /var/log/rsyncd.log # 日志文件
[abc] # 模块的名称,在客户端拉取的时候使用
path = /data # 备份的目标地址
comment = abc file # 备注
ignore errors # 忽略错误程序
read only = true # 只读,yes表示只允许下载,no表示可上传可下载
list = false # 设置是否可以被查看到,为false则表示隐藏,为true则表示可被查看
uid = root # 设置当为守护进程时的id
gid = root # 组id
auth users = hxg # 用户
secrets file = /etc/server.pass # 密码文件
其中选项的解释
全局的
-
uid 此选项指定当该模块传输文件时守护进程应该具有的用户ID,默认值是“nobody”。
-
gid 此选项指定当该模块传输文件时守护进程应该具有的用户组ID。默认值为“nobody”。
-
max connections 此选项指定模块的最大并发连接数量,以保护服务器,超过限制的连接请求,将被暂时限制。默认值是0,也就是没有限制。
-
pid file 此选项用来指定rsync守护进程对应的PID文件路径。
-
lock file 此选择指定支持max connections的锁文件,默认值是/var/run/rsyncd.lock。
-
log file 此选项指定了rsync的日志输出文件路径。
-
hosts allow 单个IP地址或网络地址,允许访问的客户机地址
模块的
-
[abc] 表示定义一个模块的开始,ixdba就是对应的模块名称。
-
path 此选项用来指定需要备份的文件或目录,必填项,这里指定的目录为/webdata。
-
exclude 用来指定多个由空格隔开的多个文件或目录(相对路径),将其添加到exclude列表中。这等同于在客户端命令中使用―exclude或----filter来指定某些文件或目录不下载或上传(既不可访问)
-
list 此选项设定当客户请求可以使用的模块列表时,该模块是否被列出。默认值是true,如果需要建立隐藏的模块。可以设置为false。
-
auth users 此选项用来定义可以连接该模块的用户名,多个用户用空格或逗号分隔开。需要注意的是这里的用户和Linux系统用户没有任何关系。这里指定的用户是backup。
-
secrets file 此选项指定一个包含
用户名:密码
格式的文件,用户名就是auth users
选项定义的用户,密码可以随便指定,只要和客户端的secrets file对应起来就行。 -
hosts allow 指定哪些IP的客户允许连接该模块。定义可以是以下形式:
单个IP地址,例如:
192.167.0.1
,多个IP或网段需要用空格隔开。整个网段,例如:
192.168.0.0/24
,也可以书写为192.168.0.0/255.255.255.0
*
则表示所有,默认是允许所有主机连接。 -
hosts deny 指定不允许连接rsync服务器的机器,可以使用hosts allow的定义方式来进行定义。默认是没有hosts deny定义
-
timeout 通过该选项可以覆盖客户指定的IP超时时间。
通过该选项可以确保rsync服务器不会永远等待一个崩溃的客户端。超时单位为秒钟,0表示没有超时定义,这也是默认值。对于匿名rsync服务器来说,一般会定义为600.
只有在auth users被定义时,该文件才起作用。系统默认没有这个文件,自己手动创建一个即可。
将服务端设置成守护进程模式
有两种方法
利用--daemon
直接执行
$ whereis rsync
rsync: /usr/bin/rsync /usr/share/man/man1/rsync.1.gz
$ /usr/bin/rsync --daemon
$ ps -ef|grep rsync
root 20278 1 0 16:29 ? 00:00:00 /usr/local/bin/rsync --daemon
利用systemctl执行
创建密码文件
echo "hxg:123456" > /etc/server.pass
给密码文件授权(必须授权为600)
chomd 600 /etc/server.pass
启动服务
systemctl start rsyncd
客户端
常见拷贝组合
显示拷贝过程的
加了L,将软连接拷贝成文件
rsync -vzrtopgL --delete [email protected]::abc /data --password-file=/etc/server.pass
rsync -avzpPL [email protected]::abc /data --password-file=/etc/server.pass
忽略软连接
rsync -vzrtopg --delete [email protected]::abc /data --password-file=/etc/server.pass
不拷贝软连接 推荐
拷贝软连接
rsync -vzrtopgl --delete [email protected]::abc /data --password-file=/etc/server.pass
rsync -avzpP [email protected]::abc /data --password-file=/etc/server.pass
需要拷贝软连接 推荐
不显示过程 去掉v
和P
就可以了
也可以手动输密码
rsync -avzpP [email protected]::abc /data
或者使用环境变量
添加环境变量
定义环境变量
export RSYNC_PASSWORD=123456
同步
rsync -avzpP /data [email protected]::abc
持续同步数据,只需要写入crontab任务
执行crontab -e
文件在/var/spool/cron/root
写入
*/1 * * * * rsync -azpL --delete [email protected]::abc /data --password-file=/etc/server.pass &> /dev/null
rsync的client/client模式
rsync -azpL --delete Python-3.6.5.tgz [email protected]:/mnt
(推送模式)
rsync -azpL --delete [email protected]:/mnt/Python-3.6.5.tgz /app/
(拉取模式)
默认情况下rsync走的是ssh协议,22端口,如果ssh是非默认的22端口,那么可以添加“-e“选项:
rsync -azpL --delete --progress -e 'ssh -p 9090' Python-3.6.5.tgz [email protected]:/mnt
(推送模式)
rsync -azpL --delete --progress -e 'ssh -p 9090' [email protected]:/mnt/Python-3.6.5.tgz /app/
(拉取模式)
其中,9090是sshd服务的端口。
标签:文件,rsync,--,file,172.16,镜像,工具,root From: https://www.cnblogs.com/guangdelw/p/16989927.html