• 欢迎访问DBA的辛酸事儿,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站
  • 欢迎大家关注博主公众号:DBA的辛酸事儿
  • 博文中若有错误的地方,请大家指正,大家的指正是我前进的动力

详解rsync服务以及搭建备份服务器

Linux SEian.G 11个月前 (10-27) 281次浏览 已收录 0个评论
文章目录[隐藏]

一、rsync介绍

官方链接资料:http://www.samba.org/ftp/rsync/rsync.html

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

  • rsync功能
  1. 作为命令,实现本地-远程文件同步
  2. 作为服务,实现本地-远程文件同步
  • rsync特点
  1. 可以镜像保存整个目录树和文件系统
  2. 可以保留原有的权限(permission,mode),owner,group,时间(修改时间,modify time),软硬链接,文件acl,文件属性(attributes)信息等
  3. 传输效率高,使用同步算法,只比较变化的
  4. 支持匿名传输,方便网站镜像;也可以做验证,加强安全
  • rsync同类服务
  1. sync 同步:刷新文件系统缓存,强制将修改过的数据块写入磁盘,并且更新超级块。
  2. async 异步:将数据先放到缓冲区,再周期性(一般是30s)的去同步到磁盘。
  3. rsync 远程同步:remote synchronous

二、rsync用途

工作中需要定时/实时数据备份。本地不同的机器目录、不同的机房之间的数据备份。这些都可以用rsync完成。

三、rsync工作模式

1)本地方式

rsync就是一个命令

命令操作:

  • rsync命令
  1. 把数据从一个地方复制到另一个的的地方(仅在一台机器增量),相当于cp。
  2. 通过加参数实现删除的功能,相当于rm命令。
  3. 查看属性信息功能,相当于ls。

2)远程方式

借助类似ssh隧道传输数据,适合不同机器之间的复制。

异地拷贝,相当于scp

Pull:rsync [OPTION…] [USER@]HOST:SRC… [DEST]

说明:rsync 参数 以什么身份从相应主机拉取数据 拉取数据保存本地的路径

示例:

[root@wjq ~]## rsync -avz root@10.105.242.174:/tmp/1.txt /opt/
root@10.105.242.174's password: 
receiving incremental file list
1.txt

sent 43 bytes  received 106 bytes  33.11 bytes/sec
total size is 24  speedup is 0.16

Push:rsync [OPTION…] SRC… [USER@]HOST:DEST

说明:rsync 参数 本地数据 以什么身份的本地主机数据进行推送 数据保存的位置

示例:

[root@wjq ~] rsync -avz /etc/hosts root@10.105.242.174:/opt/
The authenticity of host '10.105.242.174 (10.105.242.174)' can't be established.
ECDSAkeyfingerprintisSHA256:pSmZZNpT7WLg8LxBk9gFez5RNq3gaxYgpo/Kd9sv1Do.ECDSAkeyfingerprintisMD5:ce:42:93:22:32:b3:9c:4a:71:81:b9:f6:50:e5:bb:6b.Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.105.242.174' (ECDSA) to the list of known hosts.
root@10.105.242.174's password: 
sending incremental file list
hosts

sent 218 bytes  received 35 bytes  38.92 bytes/sec
total size is 332  speedup is 1.31

3)守护进程方式

Pull:rsync [OPTION…] [USER@]HOST::SRC… [DEST]

说明:rsync 参数 认证用户从相应主机拉取数据 拉取数据保存本地的路径

Push:rsync [OPTION…] SRC… [USER@]HOST::DEST

说明:rsync 参数 认证用户将本地主机数据进行推送 数据保存的位置

四、rsync常用选项

-a 包含-rtplgoD

-r 同步目录时要加上,类似cp时的-r选项

-v 同步时显示一些信息,让我们知道同步的过程

-l 保留软连接

-L 加上该选项后,同步软链接时会把源文件给同步

-p 保持文件的权限属性

-o 保持文件的属主

-g 保持文件的属组

-D 保持设备文件信息

-t 保持文件的时间属性

–delete 删除DEST中SRC没有的文件

–exclude 过滤指定文件,如–exclude “logs”会把文件名包含logs的文件或者目录过滤掉,不同步

-P 显示同步过程,比如速率,比-v更加详细

-u 加上该选项后,如果DEST中的文件比SRC新,则不同步

-z 传输时压缩

企业常用参数组合:-avz或者-vzrtopg

五、rsync守护进程模式部署

1、实验环境

10.105.12.132     wjq              客户端

10.105.242.174   wjqbackup  服务端

2、服务端配置

(1)查看rsync版本

[root@wjqbackup ~]# rsync --version
rsync  version 3.1.2  protocol version 31
Copyright (C) 1996-2015 by Andrew Tridgell, Wayne Davison, and others.
Web site: http://rsync.samba.org/
Capabilities:
    64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
    socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
    append, ACLs, xattrs, iconv, symtimes, prealloc

rsync comes with ABSOLUTELY NO WARRANTY.  This is free software, and you
are welcome to redistribute it under certain conditions.  See the GNU
General Public Licence for details.

(2)备份rsync配置文件

[root@wjqbackup ~]# cp /etc/rsyncd.conf{,.ori}

[root@wjqbackup ~]# ll /etc/rsyncd.conf*
-rw-r--r--. 1 root root 458 Apr 11  2018 /etc/rsyncd.conf
-rw-r--r--  1 root root 458 Oct 27 16:59 /etc/rsyncd.conf.ori

(3)修改配置文件

[root@wjqbackup ~]# vim /etc/rsyncd.conf
port = 873                                  #指定在哪个端口启动rsyncd服务,默认是873端口。
uid = rsync                                 #管理备份目录的用户
gid = rsync                                 #管理备份目录的用户组
use chroot = no                             #安全功能,数据是否锁定到备份目录    
fake super = yes                            #相当于root权限
max connections = 200                       #并发连接,同时多少客户端访问
timeout = 600                               #超时时间,显示空闲连接存活时间
pid file = /var/run/rsyncd.pid              #保存进程pid号码信息
lock file = /var/run/rsync.lock             #锁文件
log file = /var/log/rsyncd.log              #rsync程序日志文件
ignore errors                               #在备份传输数据时,一些不严重问题先进行忽略
read only = false                           #备份目录设置为可读可写
list = false                                #表示当用户查询该服务器上的可用模块时,该模块是否被列出,设定为true则列出,false则隐藏。
hosts allow = 10.105.12.132 172.16.1.0/24   #设置允许哪些主机或网段可以向备份服务器存储数据(白名单),多个ip以空格隔开
hosts deny = 0.0.0.0/32                     #设置禁止哪些主机或网段可以向备份服务器存储数据(黑名单)
auth users = rsync_backup                   #认证用户,远程虚拟连接用户
secrets file = /etc/rsync.password          #认证用户密码文件,格式:用户名:密码,权限必须600

[backup]                                    #[模块名]远程访问使用模块名访问,里面的内容自定义
comment = wjq backup                        #说明注释
path = /backup/                             #服务端用户备份的目录,用户和组,rsync.rsync

查看更多配置信息:

man rsync 查命令的参数

man rsyncd.conf 查配置参数

(4)创建用户和备份目录

[root@wjqbackup ~]# useradd rsync
[root@wjqbackup ~]# id rsync 
uid=1001(rsync) gid=1001(rsync) groups=1001(rsync)

[root@wjqbackup ~]# mkdir -p /backup

[root@wjqbackup ~]# ls -ld /backup/
drwxr-xr-x 2 root root 4096 Oct 27 17:04 /backup/

[root@wjqbackup ~]# chown -R rsync.rsync /backup/

[root@wjqbackup ~]# ls -ld /backup/              
drwxr-xr-x 2 rsync rsync 4096 Oct 27 17:04 /backup/

(5)启动和检查

[root@wjqbackup ~]# systemctl status rsyncd
● rsyncd.service - fast remote file copy program daemon
   Loaded: loaded (/usr/lib/systemd/system/rsyncd.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

[root@wjqbackup ~]# systemctl start rsyncd 

[root@wjqbackup ~]# systemctl enable rsyncd         #设置开机自启动
Created symlink from /etc/systemd/system/multi-user.target.wants/rsyncd.service to /usr/lib/systemd/system/rsyncd.service.

[root@wjqbackup ~]# systemctl status rsyncd
● rsyncd.service - fast remote file copy program daemon
   Loaded: loaded (/usr/lib/systemd/system/rsyncd.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2019-10-27 17:05:02 CST; 1min 6s ago
 Main PID: 4726 (rsync)
   CGroup: /system.slice/rsyncd.service
           └─4726 /usr/bin/rsync --daemon --no-detach

Oct 27 17:05:02 wjqbackup systemd[1]: Started fast remote file copy program daemon.
Oct 27 17:05:02 wjqbackup systemd[1]: Starting fast remote file copy program daemon...

查看进程和后端

[root@wjqbackup ~]# ps -ef | grep sync | grep -v grep
root      4726     1  0 17:05 ?        00:00:00 /usr/bin/rsync --daemon --no-detach

[root@wjqbackup ~]# netstat -lntup | grep 873
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      4726/rsync          
tcp6       0      0 :::873                  :::*                    LISTEN      4726/rsync          

[root@wjqbackup ~]# lsof -i:873 
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
rsync   4726 root    3u  IPv4  28037      0t0  TCP *:rsync (LISTEN)
rsync   4726 root    5u  IPv6  28038      0t0  TCP *:rsync (LISTEN)

(6)配置密码文件

[root@wjqbackup ~]# echo "rsync_backup:xxxxxx" > /etc/rsync.password             
[root@wjqbackup ~]# chmod 600 /etc/rsync.password
[root@wjqbackup ~]# cat /etc/rsync.password
rsync_backup:wjqbackup

[root@wjqbackup ~]# ls -l /etc/rsync.password
-rw------- 1 root root 23 Oct 27 17:09 /etc/rsync.password

到此,服务端配置完成!

3、客户端配置

配置认证密码文件

[root@wjq ~]# echo "xxxxxxx" > /etc/rsync.password      
[root@wjq ~]# chmod 600 /etc/rsync.password
[root@wjq ~]# cat /etc/rsync.password

4、配置测试

(1)客户端推送数据到服务器端

[root@wjq ~]# rsync -avz /tmp/*.sql rsync_backup@10.105.242.174::backup --password-file=/etc/rsync.password           
sending incremental file list
grants.sql
user.sql
user_info.sql

sent 2474 bytes  received 65 bytes  5078.00 bytes/sec
total size is 10346  speedup is 4.07

验证服务器端

[root@wjqbackup ~]# ll /backup/
total 16
-rw-r--r-- 1 rsync rsync 1338 Oct 26 23:07 grants.sql
-rw-r--r-- 1 rsync rsync 5636 Oct 26 22:44 user_info.sql
-rw-r--r-- 1 rsync rsync 3372 Oct 26 23:14 user.sql

(2)从服务器端拉取数据到客户端

[root@wjq ~]# mkdir /test
[root@wjq ~]# rsync -avz rsync_backup@10.105.242.174::backup/ /test --password-file=/etc/rsync.password             
receiving incremental file list
./
grants.sql
user.sql
user_info.sql

sent 87 bytes  received 2535 bytes  5244.00 bytes/sec
total size is 10346  speedup is 3.95

[root@wjq ~]# ll /test/
total 16
-rw-r--r-- 1 root root 1338 Oct 26 23:07 grants.sql
-rw-r--r-- 1 root root 5636 Oct 26 22:44 user_info.sql
-rw-r--r-- 1 root root 3372 Oct 26 23:14 user.sql

(3)增量测试

[root@wjq ~]# touch /tmp/test.sql

[root@wjq ~]# ll /tmp/*.sql
-rw-r--r-- 1 root root 1338 Oct 26 23:07 /tmp/grants.sql
-rw-r--r-- 1 root root    0 Oct 27 17:29 /tmp/test.sql
-rw-r--r-- 1 root root 5636 Oct 26 22:44 /tmp/user_info.sql
-rw-r--r-- 1 root root 3372 Oct 26 23:14 /tmp/user.sql

[root@wjq ~]# rsync -avz /tmp/*.sql rsync_backup@10.105.242.174::backup --password-file=/etc/rsync.password
sending incremental file list
test.sql

sent 120 bytes  received 27 bytes  294.00 bytes/sec
total size is 10346  speedup is 70.38

拓展:还有个问题我们我们不止一个客户需要上传文件。如何让不同用户上传到不同的模块呢?

# 只需要在/etc/rsyncd.conf配置文件中,添加如下的模板即可:

[data]
comment = wjq data
path = /data

[root@wjqbackup ~]# mkdir -p /data
[root@wjqbackup ~]# chown -R rsync.rsync /data/

[root@wjqbackup ~]# ls -ld /data/
drwxr-xr-x 2 rsync rsync 4096 Oct 27 17:04 /data/

客户端主机名:wjqtest

[root@wjqtest ~]# rsync -avz /tmp/*.sql rsync_backup@10.105.242.174::data --password-file=/etc/rsync.password

参考连接

http://www.samba.org/ftp/rsync/rsync.html

https://my.oschina.net/ccLlinux/blog/1859116

https://www.jianshu.com/p/691be0b9eda9

https://www.jianshu.com/p/0223ed4f847f

详解rsync服务以及搭建备份服务器


如果您觉得本站对你有帮助,那么可以收藏和推荐本站,帮助本站更好地发展,在此谢过各位网友的支持。
转载请注明原文链接:详解rsync服务以及搭建备份服务器
喜欢 (3)
SEian.G
关于作者:
用心去记录工作,用心去感受生活,用心去学着成长;座右铭:苦练七十二变,笑对八十一难
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址