0°

rsync命令

异地备份系统的备份指令
rsync

Rsync的四种工作模式:
1.列表模式
和 ls -l 相似,负责列出源的内容。不仅可以看本地还可以看远端
2.shell模式,也称为本地模式
和cp相似,本地拷贝文件


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
1rsync [option] SRC DEST
2        -v:显示详细过程
3        -q:静默模式
4        -c:强制对传输的文件进行校验
5        -r:递归复制
6        -p:保存文件的权限
7        -t:保留文件的时间戳
8        -l:保留文件的符号链接
9        -g:保留文件的属组
10        -o:保留文件的属主
11        -D:保留设备文件
12        -A:保留ACL访问控制列表
13        -a:等同于-rlptgo
14        -e SSH:远程复制时使用ssh协议做承载
15            通常用法为 -e ‘ssh -p ssh端口号‘
16        -z:对文件压缩后传输
17
18        rsync命令在使用中,如果源参数的末尾有斜线,就会复制指定目录内的内容,而不复制目录。
19        如果没有斜线,则会复制目录本身。
20

3.远程shell模式,可以通过rcp,ssh等通道传输和rcp相似,不过可以实现增量备份,并且能够通过安全的ssh方式进行数据传输采用ssh还需要指定ssh的端口远程shell模式分俩种情况

拉取pull :rsync [option] SRC [[email protected]]HOST:DEST (拉取的话,远端主机上一定要安装rsync,不然会失败)

推送push :rsync [option] SRC [[email protected]]HOST:DEST
[[email protected]]HOST 为rsync同步时远程的连接用户和主机地址

4.服务器模式
在这种模式下,rsync守护进程在一台服务器上永久运行,接收文件传输请求。可以把文件发送给守护进程,也可以向它请求文件。
服务器模式非常适合创建中心备份服务器或项目存储库。
rsync的服务模式,部署时分为rsync的服务器端和客户端,rsync的服务端和客户端是一个软件包,服务端和客户端使用同一个rsync软件包来实现远程镜像和定期同步更新。

rsync服务端可同时备份多个客户端的数据,多个服务端可备份一个客户端的数据。
rsync默认端口是873,服务端在该端口接收客户端的匿名或者认证方式的备份请求。

rsync服务端在使用前需要进行必要的配置,配置文件为/etc/rsyncd.conf,该文件默认没有,需要自己手动创建。
配置分全局配置端和模块配置段


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
1    rsync服务端配置文件解释:
2
3        uid=rsync          #指定的模块传输文件时使用的用户身份
4        gid=rsync          #指定的模块传输文件时使用的用户组身份
5        port=873           #默认端口
6        use chroot=no      #是否禁锢用户家目录
7        max connections=xxx #最大并发数,默认为0不限制
8        timeout =xxx        #会话超时时间
9        pid file=/var/run/rsyncd.pid #进程启动后,进程号存放路径
10        lock file=/var/run/rsyncd.lock #服务启动,停止会用到的锁文件
11        log file=/var/log/rsyncd.log   #日志文件存放路径
12        Log fromat = %h %o %f %l %b      # 指定日志记录的格式
13        motd file = /etc/rsyncd.motd     # 登陆消息提示文件,可以不配置。默认为空。
14        [test]         # 模块名称,名称可以任意写,不过一般是以路径命名,最好见名意
15        Comment = test # 模块信息描述,该描述连同模块名在客户连接得到模块列表时显示给客户。默认没有描述定义
16        path=/test/    # 指定供备份的目录路径,必须指定该参数。该目录路径是rsync服务端的一个路径,提供给客户端上传或下载
17        ignore errors   # 忽略错误
18        read only = false  # 设定是否允许客户上载文件。若为 true 任何上载请求均会失败,若为 false 且客户端拥有服务器目录读写权限则可以上载。默认值为 true 。
19        write only 设定是否允许客户下载文件。若为 true 任何下载请求均会失败,默认值为 false 。
20        list = false       # 设定当客户请求可以使用的模块列表时,是否列出该模块。若为 false,则创建隐藏的模块。默认值为 true
21        hosts allow=192.168.137.0/24  # 白名单或网段需要以空格隔开。默认是允许所有主机连接。
22        hosts deny=*   # 黑名单
23        Dont commpress # 指定不进行压缩处理即可传输的文件,默认值是 *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz
24        auth users = rsync_backup  # 该选项指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块。这里的用户不一定是客户端存在的用户。如果"auth users"被设置,那么客户端发出对该模块的连接请求时,需要对用户身份进行验证。用户的名和密码以明文方式存放在"secrets file"选项指定的文件中。默认情况下无需密码就可以连接模块 ( 也就是匿名方式 )。
25        secrets file = /etc/rsync.password # 虚拟用户的密码文件,里面记录的格式为:用户名:密码
26        exclude = common/   # 用来指定多个由空格隔开的多个文件或目录 ( 相对路径 ),并将其添加到 exclude 列表中。这等同于在客户端命令中使用 --exclude 参数。一个模块只能指定一个 exclude 选项。但是需要注意的一点是该选项有一定的安全性问题,客户端很有可能绕过 exclude 列表,如果希望确保特定的文件不能被访问,那就最好结合 uid/gid 选项一起使用。
27        pre-xfer exec, post-xfer exec  # 设置可在文件传输前/后执行的命令。若在文件传输前执行的命令失败,则取消本次传输操作。
28
29    Rsync服务端的启动:
30        rsync --daemon   #以守护进程方式启动
31        #echo "/usr/bin/rsync --daemon &" >> /etc/rc.local   开机自动运行服务
32
33        手动启动rsync的常见参数:
34            --daemon 以守护进程的方式启动
35            --address 绑定指定IP提供服务,既服务器时多网卡或虚IP模式
36            --config=xxx 更改配置文件路径,不使用默认的/etc/rsyncd.conf
37            --port=xx    更改端口
38

rsync客户端配置:
客户端仅需安装rsync软件,然后创建一个本地密码文件,对应服务端配置文件里的每个模块下面的虚拟用户的密码,以实现免密码同步(只写密码不写用户名)

服务器模式下同步数据的格式:
拉取:rsync [option] [[email protected]]HOST::SRC DEST
推送:rsync [option] SRC rsync://[[email protected]]HOST[:PORT]/DEST


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
1 rsync服务器模式配置范例:
2    服务器端:
3      创建rsyncd配置文件;
4        vim /etc/rsyncd.conf
5            uid=rsync
6            gid=rsync
7            use chroot=no
8            port=873
9            list=/mysqlbak
10            max connections=10
11            timeout=300
12            Log fromat=%h %o %f %l %d
13            log file=/var/log/rsyncd.log
14            pid file=/var/run/rsyncd.pid
15
16            [mysqlbak]
17                path=/mysqlbak
18                read only=false
19                list=false
20                hosts allow=182.61.49.21
21                hosts deny=*
22                auth users=rsync
23
24       创建虚拟用户:
25                useradd rsync -s /sbin/nologin -M (创建一个没有家目录没法登陆的用户)
26                mkdir /mysqlbak                   #创建备份目录
27                chown -R rsync.rsync /mysqlbak
28
29       启动服务端进程:
30            rsync --daemon
31
32       创建服务端的虚拟用户密码文件:
33            vim /etc/rsync.password
34              rsync:[email protected]
35
36       改变密码文件权限只有root用户能读写:
37            chmod 600 /etc/rsync.password
38
39    客户端配置:
40        vim /etc/rsync.password  创建客户端密码文件
41             [email protected]
42
43        chmod 600 /etc/rsync.password  改变密码文件权限只有root用户能读写
44
「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!