rsync常用的三种用法

用法1:本地用法
类似于cp、dd命令,实现备份文件的复制(备份)

# rsync /etc/passwd /home/passwd.bak
# rsync -b --suffix=.bak2 --backup-dir=/tmp/ /etc/passwd /home/passwd.bak
--suffix=xxx        指定旧备份文件的后缀名
--backup-dir=xxxx   指定将旧备份文件移动到哪个位置下
1
2
3
4
用法2:远程shell
利用ssh实现数据的远程传输,类似于 scp
拉取:rsync -v -e "ssh -p 22" root@192.168.31.201:/home/passwd /tmp/
推送:rsync -v /root/c.sh root@192.168.31.201:/home/
说明

rsync默认也是基于ssh来实现的,如果目标主机的ssh端口不是22,那么在用rsync的必须用-e选项
rsync通常都需要首先做密钥分发
rsync在远程传输文件的时候,仅仅会传输新文件
在进行文件传输过程中,必须使用对方主机上的一个用户,还必须知道其密码,而且该用户还要有权限
用法3:守护进程模式
rsync的配置文件: /etc/rsyncd.conf(默认不存在)

案例:
将192.168.31.200和192.168.31.202上的数据备份到192.168.31.201上,要求:
1)备份到201的/data/backup
2)201上的rsync以ruser身份运行
准备工作:关闭防火墙,关闭selinux

第一步:配置192.168.31.201(用于接收各主机节点传递过来的备份)
创建目录
# mkdir -pv /data/backup
1
创建用于运行rsync进程的用户ruser
# useradd  -r  -s /sbin/nologin -u 361 ruser
1
修改目录的属主和属组
# chown -R 361.361 /data
1
修改(创建)rsync的配置文件:/etc/rsyncd.conf
# vim /etc/rsyncd.conf 
pid file=/var/lock/subsys/rsync.pid
lock file=/var/lock/subsys/rsync.lock
uid=361
gid=361
log file=/var/log/rsync.log
timeout=100

[dir1]
path=/data/backup
max connections=100
use chroot=yes
read only=no
list=yes
auth users=suser
secrets file=/etc/rsync.pwd
hosts allow=192.168.31.0/24
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
创建虚拟用户文件,并创建虚拟用户
# echo "suser:123" >>/etc/rsync.pwd
1
修改虚拟用户文件的权限为600
# chmod 600  /etc/rsync.pwd
1
启动rsync服务
# rsync --daemon --config=/etc/rsyncd.conf
1
检查是否启动成功
# ss -tnl | grep 873
1
【至此,rsyncd就配置完成了,然后就可以在其他节点向rsync传递数据了】

第二步:在192.168.31.200和192.168.31.202上对192.168.31.201做拉取和推送操作
准备工作:在201的/data/backup目录下创建一个文件touch rsync.txt

执行推送和拉取 ,测试一下
拉取:# rsync -avz suser@192.168.31.201::dir1 ./
在任一客户端节点执行拉取操作,没有报错并且rsync.txt被拉取到当前位置,说明rsync配置没问题。
推送:# rsync -avz /etc/passwd suser@192.168.31.201::dir1
在任一客户端节点执行推送操作,没有报错并且在服务端/data/backup目录下有 passwd文件说明推送也能正常完成。
在客户端创建密码文件(方便实现自动化)
# echo "123" >>/etc/rsync_tuser.passwd
1
修改密码文件的权限为600
# chmod 600 /etc/rsync_tuser.passwd
1
再次执行推送/拉取,用密码文件实现认证
# rsync -avz suser@192.168.31.201::dir2 ./ --password-file=/etc/rsync_tuser.passwd
1
补充:选项--exclude=filename
例子:

排除单个文件:–exclude=5.txt
排除多个文件:–exclude={5.txt, 7.txt}
基于通配符做排除:–exclude=*txt
传输失败的原因传输失败的原因

用户名或者密码写错了
密码文件指定错了
虚拟用户密码文件权限不是600
模块对应的文件的属主不是rsync daemon的运行者身份
————————————————
版权声明:本文为CSDN博主「cx_baby」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/cx55887/article/details/82943760

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值