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的运行者身份 ———————————————— 版权声明:本文为博主「cx_baby」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog..net/cx55887/article/details/82943760