rsync作用
实现文件的备份
备份位置可以是当前主机,也可以是远程主机
备份过程可以是完全备份,也可以是增量备份
rsync基本操作
安装rsync
yum install rsync
rsync常用选项
-a #归档模式,表示递归方式传输文件,并保持所有属性;通-rlptgoD
-r #同步目录时要加上,类似cp时加R
-v #同步时显示一些信息,让我们知道同步国创
-l #保留软链接
-L #同步软链接时会把源文件给同步
-p #保持文件权限属性
-o #保持文件的属主
-g #保持文件的属组
-D #保持设备文件信息
-t #保持文件的时间属性
-P #显示同步过程,比如速率,比-v更加详细
-u #增量同步,如果DEST中的文件比SRC新,则不同步
-z #测试时压缩
--delte #删除DEST中SRC没有的文件
--exclude #过滤指定文件,如--exclude “logs”会把文件log过滤掉,不同步
--bwlimit=1000 #限制传输速度
rsync使用
本地备份
rsync -av /etc/passwd /passwd #将/etc/passwd文件备份到根目录/passwd里面
备份到远程服务器
rsync -avr /var/www/html root@172.16.0.10:/backup
#ssh被修改端口的情况下进行远程备份
rsync -avr -e "ssh -p 2222" /var/www/html root@172.16.0.10:/backup/
删除目标位置有文件而原始位置没有的文件
#将A机器/var/www/html文件夹中的文件备份到B机器/backup目录下,并删除/backup中不属于/var/www/html的文件
rsync -av --delete /var/www/html root@172.16.0.10:/backup
过滤指定文件不同步
rsync -av --exclude="*.txt" /xx/ root@172.16.0.17:/xx
断点续传
#使用scp传文件的话如果出错就得重新来过, 用rsync可以实现断点上传的功能
#如果中途出错, 再次运行同样的命令上传就可以了.
rsync -avP --rsh=ssh test 172.16.0.17:/
rsync后台服务
服务端编辑配置文件
vim /etc/rsyncd.conf #需要自己创建文件
#全局参数
uid = user #指定rsync进程以什么身份在后台运行,必须是系统用户,填nobody表示匿名
gid = user #指定rsync进程以什么组身份在后台运行,填nobody表示匿名
port = 873 #用于通信的TCP端口,默认是873
fake super = yes #服务端操作系统的用户可以不用root
use chroot = no #安全防护,默认为true,如果有软链接文件建议设置为false
timeout = 600 #超时时间
ignore errors #忽略错误信息
list = false #当用户查询该服务器上可用模块时,该模块是否被列出,设置true列出,设置为false隐藏
log file = /var/log/rsyncd.log #rsync服务运行日志文件
lock file = /var/run/rsync.lock #锁文件的存放位置
pid file=/var/run/rsyncd.pid #指定pid文件
#同步模块参数
[docs] #模块名称,自定义的名称
comment = Hello world #模块说明文字
path = /docs #同步的目录名,必须是uid参数指定的用户和gid参数指定的组
read only = false #read only=ture|false如果为true,则不能上传到该模块指定目录
auth users = user #允许登录的客户端认证用户,用逗号分隔,必须是/etc/rsync.passwd文件配置的用户,密码文件的权限一定要是600
secrets file = /etc/rsync.passwd #指定rsync客户端用户认证的密码文件
max connections =200 #指定最大连接数,默认为0表示没有限制
#hosts allow=172.16.0.1 #表示被允许连接该模块的主机,可以是IP或者网段,如果是多个,中间用格隔开
#hosts deny = 0.0.0.0/0 #禁止主机
创建用户
useradd user
服务端创建rsync登录用户文件
touch /etc/rsyncd.passwd
echo "user:123456" >>/etc/rsyncd.passwd #user是用户名,123456是密码
chmod 600 /etc/rsync.passwd #密码文件权限必须是600
服务端创建同步文件夹
mkdir /docs
chown -R user:user /docs
客户端上传文件到服务器
创建上传测试文件
mkdir sec && cd sec
head -c 100000000 /dev/zero > testa
head -c 100000000 /dev/zero > testb
上传文件到服务器上
echo "123456">>/etc/rsync.passwd
rsync -avz --password-file=/etc/rsync.passwd /sec/ user@172.16.0.17::docs
服务端查看上传是否成功
[root@localhost /]# ll -a docs/
总用量 195324
drwxrwxrwx. 2 user user 32 10月 7 03:51 .
dr-xr-xr-x. 36 root root 4096 10月 7 03:50 ..
-rw-------. 1 user user 100000000 10月 7 03:51 testa
-rw-------. 1 user user 100000000 10月 7 03:51 testb