0
点赞
收藏
分享

微信扫一扫

ubuntu 20.04 安装rsync 以及rsync命令详细用法及实例

Hyggelook 2023-04-10 阅读 457
rsync运维

rsync介绍

#### 1、rsync是什么

rsync(remote synchronize)是Liunx/Unix下的一个远程数据同步工具。
它可通过LAN/WAN快速同步多台主机间的文件和目录,并适当利用rsync算法(差分编码)以减少数据的传输。

rsync算法并不是每一次都整份传输,而是只传输两个文件的不同部分,因此其传输速度相当快。

除此之外,rsync可拷贝、显示目录属性,以及拷贝文件,并可选择性的压缩以及递归拷贝。

#### 2、rsync的工作原理

a、客户端构造FileList,FileList包含了需要与服务器同步的所有文件信息对name->id
(id用来唯一表示文件例如MD5)

b、客户端将FileList发送到服务器。

c、服务器上rsync处理客户端发过来的FileList,构建新的NewFileList。
 其中根据MD5值比较,删除服务器上已经存在的文件信息对,只保留服务器上不存在或变化的文件。

d、客户端得到服务器发送过来的NewFileList,然后把NewFileList中的文件重新传输到服务器。

#### 3、rsync优点
使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。

1)可以镜像保存整个目录树和文件系统。

2)可以很容易做到保持原来文件的权限、时间、软硬连接等。

3)无需特殊权限即可安装。

4)快速:第一次同步时rsync复制全部内容,但在下一次值传输修改过的内容

5)压缩传输:rysnc在传输的过程中可以实行压缩及解压缩操作,可以使用更少的带宽

6)安全:可以使用scp、ssh等方式来进行文件传输

7)支持匿名传输,以方便进行网站镜像

8)rsync不仅可以远程同步数据(类似于scp),而且可以本地同步数据(类似于cp),做差异同步

9)openssh 8.0已经把scp标记为过时不建议使用了。建议用sftp或者rsync替代scp



*# 需要在Liunx/Unix服务器之间互传海量数据时,建议选择rsync进行传输*

#### 4、rsync认证方式

rsync有两种常用的认证方式,一种是rsync-daemon方式,另外一种是ssh方式。

在平时使用过程,我们使用最多的是rsync-daemon方式。

**注意:在使用rsync时,服务器和客户端都必须安装rsync程序**。

**1.rsync-daemon 认证**

rsync在rsync-daemon认证方式下,默认监听TCP的873端口。

rsync-daemon认证方式是rsync的主要认证方式,这个也是我们经常使用的认证方式。
并且也只有在此种模式下,rsync才可以把密码写入到一个文件中。

注意:
 rsync-daemon认证方式,需要服务器和客户端都安装rsync服务
 并且只需要rsync服务器端启动rsync,同时配置rsync配置文件。
 客户端启动不启动rsync服务,都不影响同步的正常进行。

**2.ssh认证**

rsync在ssh认证方式下,可通过系统用户进行认证,即在rsync上通过ssh隧道进行传输,类似于scp工具。
此时同步操作不在局限于rsync中定义的同步文件夹。

注意:
 ssh认证方式,不需要服务器和客户端配置rsync配置文件
 只需要双方都安装rsync服务,并且也不需要双方启动rsync。

*# 若rsync服务端SSH为标准端口,此时rsync使用方式如下:*

 rsync -avz /root/test root@10.10.10.10:/root/



*# 若rsync服务端SSH为非标准端口,可通过rsync的-e参数进行端口指定。使用方式如下:*

 rsync -avz /root/test -e 'ssh -p1234' root@10.10.10.10:/root/

实例拓扑

一、安装rsync

1.ubuntu 20.04 22.04默认已经安装rsync

但是服务是未启动的状态  修改一下配置文件

sudo vim /etc/default/rsync

如下:RSYNC_ENABLE 改为true
RSYNC_ENABLE=true

如果没有安装  下面命令安装
sudo apt install rsync

ubuntu 20.04 安装rsync 以及rsync命令详细用法及实例_rsync

2.创建配置文件

1.备份一份原文件
sudo cp /etc/rsyncd.conf /etc/rsyncd.conf.bak
2.修改配置文件
sudo vi /etc/rsyncd.conf

 提示一下:# GLOBAL OPTIONS下面为全局配置 # MODULE OPTIONS 下面是模块配置
 
 # 最大连接数
max connections = 10
# pid文件的存放位置
pidfile = /var/run/rsyncd.pid
# 支持max connections参数的锁文件
lock file = /var/lock/rsyncd.lock
# rsync启动时欢迎信息页面文件位置(文件内容自定义),非必须
# motd file = /etc/rsyncd.motd
# 用户认证配置文件,里面保存用户名称和密码,后面会创建这个文件。这个文件也可以不要,但是安全性上可能会有些问题。
secrets file = /etc/rsyncd.secrets
# 日志文件位置,启动rsync后自动产生这个文件,无需提前创建
log file = /var/log/rsync.log
# 记录传输文件日志
transfer logging = yes
# 日志文件格式
log format = %t %a %m %f %b
# 剔除某些文件或目录,不同步
# exclude = lost+found/
# 超时时间
timeout = 300
# 某些情况下避免中文乱码
# charset = GB18030
# 默认为yes,修改为no时增加对目录文件软连接的备份,允许 chroot,提升安全性,客户端连接模块,首先 chroot 到模块 path 参数指定的目录下,chroot 为 yes 时必须使用 root 权限,且不能备份 path 路径外的链接文件
use chroot = yes
# 设置不需要压缩的文件
dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
# 设置rsync运行权限为root
uid = root
# 设置rsync运行权限为root
gid = root

# 模块名
[myback] 
# 注释
comment = Mini Docker
# rsync服务端数据目录路径
path = /home/myback
# 白名单,允许的主机列表
hosts allow = 10.10.201.0/24
# 黑名单,禁止的主机列表
hosts deny = *
# 设置rsync服务端文件是否只读
read only = no
# 是否显示rsync服务端资源列表
list = yes
# 模块验证的用户名称,可使用空格或者逗号隔开多个用户名,必须和 rsyncd.secrets中的用户名对应
auth users = zhangsan
# 忽略错误
# ignore errors

3.启动服务

sudo /etc/init.d/rsync start

二、常用RSYNC使用场景实例






三、配置文件说明

# sample rsyncd.conf configuration file

# GLOBAL OPTIONS

#motd file=/etc/motd #登录欢迎信息
#log file=/var/log/rsyncd #日志文件
# for pid file, do not use /var/run/rsync.pid if
# you are going to run rsync out of the init.d script.
pid file=/var/run/rsyncd.pid

#指定rsync发送日志消息给syslog时的消息级别,常见的消息级别是:uth, authpriv, cron, daemon, ftp, kern, lpr, mail, news, security, sys-log, user, uucp, local0, local1, local2, local3,local4, local5, local6和local7。默认值是daemon。
#syslog facility=daemon

#自定义tcp选项,默认是关闭的
#socket options=

#以下是模块信息,我们可以创建多个模块
# MODULE OPTIONS

[ftp]

        comment = public archive #模块描述
        path = /var/www/pub #需要同步的路径
        use chroot = yes #默认是yes|true,如果为true,那么在rsync在传输文件以前首先chroot到path参数指定的目录下。这样做的原因是实现额外的安全防护,但是缺点是需要root权限,并且不能备份指向外部的符号连接指向的目录文件。
#       max connections=10 #最大连接数
        lock file = /var/lock/rsyncd #指定支持max connections参数的锁文件。
# the default for read only is yes...
        read only = yes #只读选项
        list = yes #客户请求时可用模块时是否列出该模块
        uid = nobody #设定该模块传输文件时守护进程应该具有的uid
        gid = nogroup #设定该模块传输文件时守护进程应具有的gid,此项与uid配合可以确定文件的访问权限
#       exclude = #用来指定多个由空格隔开的多个模式列表,并将其添加到exclude列表中。这等同于在客户端命令中使用--exclude来指定模式,不过配置文件中指定的exlude模式不会传递给客户端,而仅仅应用于服务器。一个模块只能指定一个exlude选项,但是可以在模式前面使用"-"和"+"来指定是exclude还是include    #这个我的理解是排除目录中不需同步的文件
#       exclude from = #可以指定一个包含exclude模式定义的文件名
#       include = #与exclude相似
#       include from = #可以指定一个包含include模式定义的文件名
#       auth users = #该选项指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块。这里的用户和系统用户没有任何关系。如果"auth users"被设置,那么客户端发出对该模块的连接请求以后会被rsync请求challenged进行验证身份这里使用的 challenge/response认证协议。用户的名和密码以明文方式存放在"secrets file"选项指定的文件中。默认情况下无需密码就可以连接模块(也就是匿名方式)
#       secrets file = /etc/rsyncd.secrets #该文件每行包含一个username:password对,以明文方式存储,只有在auth users被定义时,此选项才生效。同时我们需要将此文件权限设置为0600
        strict modes = yes #该选项指定是否监测密码文件的权限,如果该选项值为true那么密码文件只能被rsync服务器运行身份的用户访问,其他任何用户不可以访问该文件。默认值为true
#       hosts allow = #允许的主机
#       hosts deny = #拒绝访问的主机
        ignore errors = no #设定rsync服务器在运行delete操作时是否忽略I/O错误
        ignore nonreadable = yes #设定rysnc服务器忽略那些没有访问文件权限的用户
        transfer logging = no #使rsync服务器使用ftp格式的文件来记录下载和上载操作在自己单独的日志中
#       log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes. #设定日志格式
        timeout = 600 #超时设置(秒)
        refuse options = checksum dry-run #定义一些不允许客户对该模块使用的命令选项列表
        dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz #告诉rysnc那些文件在传输前不用压缩,默认已设定压缩包不再进行压缩




举报

相关推荐

0 条评论