rsync的使用和配置

rsync的使用和配置

rsync简介

  rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。它使用所谓的“Rsync演算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。所以通常可以作为备份工具来使用。

基本特点:

  • 可以镜像保存整个目录树和文件系统;
  • 可以很容易做到保持原来文件的权限、时间、软硬链接等;
  • 无须特殊权限即可安装;
  • 优化的流程,文件传输效率高;
  • 可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接;
  • 支持匿名传输。

命令语法:
rsync的命令格式可以为以下六种:
 rsync [OPTION]… SRC DEST
 rsync [OPTION]… SRC [USER@]HOST:DEST
 rsync [OPTION]… [USER@]HOST:SRC DEST
 rsync [OPTION]… [USER@]HOST::SRC DEST
 rsync [OPTION]… SRC [USER@]HOST::DEST
 rsync [OPTION]… rsync://[USER@]HOST[:PORT]/SRC [DEST]

对应于以上六种命令格式,我们可以总结rsync有2种不同的工作模式:

  • shell模式:使用远程shell程序(如ssh或rsh)进行连接。当源路径或目的路径的主机名后面包含一个冒号分隔符时使用这种模式,rsync安装完成后就可以直接使用了,无所谓启动。
  • daemon模式:使用TCP直接连接rsync daemon。当源路径或目的路径的主机名后面包含两个冒号,或使用rsync://URL时使用这种模式,无需远程shell,但必须在一台机器上启动rsync daemon,默认端口873,这里可以通过rsync –daemon使用独立进程的方式,或者通过xinetd超级进程来管理rsync后台进程。
      当rsync作为daemon运行时,它需要一个用户身份。如果你希望启用chroot,则必须以root的身份来运行daemon,监听端口,或设定文件属主;如果不启用chroot,也可以不使用root用户来运行daemon,但该用户必须对相应的模块拥有读写数据、日志和lock file的权限。当rsync以daemon模式运行时,它还需要一个配置文件——rsyncd.conf。修改这个配置后不必重启rsync daemon,因为每一次的client连接都会去重新读取该文件。
rsync的相关参数

-v  详细模式输出
-a  归档模式,递归的方式传输文件,并保持文件的属性,equals -rlptgoD
-r  递归拷贝目录
-l  保留软链接
-p  保留原有权限
-t  保留原有时间(修改)
-g  保留属组权限
-o  保留属主权限
-D  等于–devices –specials 表示支持b,c,s,p类型的文件
-R  保留相对路径
-H  保留硬链接
-A  保留ACL策略
-e  指定要执行的远程shell命令
-E  保留可执行权限
-X  保留扩展属性信息

  rsync当做命令使用很简单,跟其余命令差不多,只是在同步文件的时候需要注意的是目录的后面加不加 / 同步会不一样,加上会同步该目录下的文件或目录,不加会直接将该目录整个同步。比如:

#这条命令是将本机/service/scripts/下的文件或者目录同步到192.168.30.60的/mnt/下面
[root@vm99-lz-65-test-3059 ~]# rsync -avz /service/scripts/ root@192.168.30.60:/mnt/
#这条命令是将本机的scripts目录整个同步到192.168.30.60的/mnt/下面
[root@vm99-lz-65-test-3059 ~]# rsync -avz /service/scripts root@192.168.30.60:/mnt/

  rsync命令使用比较简单,就不细讲,下面讲一下rsync的daemon模式,这个模式下可以实现免密码同步文件。说是免密码,其实还需要密码,不过将密码文件存放在本地,需要的时候rsync就去读取。

rsync的daemon模式配置和使用
1、服务端配置

  创建一个用户,不需要登录权限和家目录

[root@vm99-lz-65-test-3059 ~]# useradd -M -s /sbin/nologin rsync

  创建一个同步的目录,并授予权限

[root@vm99-lz-65-test-3059 ~]# mkdir /backup
[root@vm99-lz-65-test-3059 ~]# chown -R rsync:rsync /backup

  创建rsync的配置文件,这个配置文件是没有的,需要自行创建

[root@vm99-lz-65-test-3059 ~]# vim /etc/rsyncd.conf
uid = rsync             #用户
gid = rsync             #用户组
use chroot = no         #禁用chroot
max connections = 2000  #最大连接数2000
timeout = 600           #超时时间
pid file = /var/run/rsyncd.pid    #pid文件的路径
lock file = /var/run/rsync.lock   #锁文件
log file = /var/log/rsyncd.log    #日志文件的路径
ignore errors                     #忽略错误
read only = false                 #关闭只读模式
list = false                      #关闭只查看列表 
hosts allow = 192.168.30.0/24     #白名单,还有黑名单hosts deny
auth users = rsync_backup           #匿名用户名
secrets file = /etc/rsync.password  #用户名:密码(权限600)
#####################################
#如果有多个目录需要同步,在下面添加模块即可
[backup]                             #模块名
comment = by number 19 create        #注释
path = /backup                      #模块的目录路径

  创建密码文件并修改权限

[root@vm99-lz-65-test-3059 ~]# echo "rsync_backup:rsync" >/etc/rsync.password
[root@vm99-lz-65-test-3059 ~]# chmod 600 /etc/rsync.password

  接下来就启动daemon模式,使用netstat查看873端口是否打开判断daemon是否打开成功

[root@vm99-lz-65-test-3059 ~]# rsync --daemon
[root@vm99-lz-65-test-3059 ~]# netstat -lntup|grep 873
tcp        0      0 0.0.0.0:873                 0.0.0.0:*                   LISTEN      1447/rsync          
tcp        0      0 :::873                      :::*                        LISTEN      1447/rsync
2、客户端设置

  创建密码文件并授权

[root@vm99-lz-65-test-3059 ~]# echo "rsync">/etc/rsync.password
[root@vm99-lz-65-test-3059 ~]# chmod 600 /etc/rsync.password
3、测试
[root@vm96-yw-65-test-3060 ~]# ll
总用量 24
-rw-------. 1 root root  1142 9月   1 2017 anaconda-ks.cfg
-rw-r--r--. 1 root root 13231 9月   1 2017 install.log
-rw-r--r--. 1 root root  3674 9月   1 2017 install.log.syslog
[root@vm96-yw-65-test-3060 ~]# rsync -avz anaconda-ks.cfg rsync_backup@192.168.30.59::backup --password-file=/etc/rsync.password
sending incremental file list
anaconda-ks.cfg

sent 782 bytes  received 27 bytes  1618.00 bytes/sec
total size is 1142  speedup is 1.41

  去服务端查看/backup目录下是否有该文件,如果有,表示成功,没有的话,看看各种文件的权限,排一下错。

[root@vm99-lz-65-test-3059 backup]# ll
总用量 4
-rw------- 1 rsync rsync 1142 91 2017 anaconda-ks.cfg
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值