阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

rsync实现网站镜像和备份

107次阅读
没有评论

共计 2656 个字符,预计需要花费 7 分钟才能阅读完成。

rsync 是类 unix 系统下的数据镜像备份工具,从软件的命名上就可以看出来了 –remote sync。它的特性如下:

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

应用场景:

  1. LVS 负载均衡,需要所有从服务器网站内容相同,镜像
  2. 远程备份等

#### 服务器架构:
rsync 实现网站镜像和备份

B 客户端主动去请求 A 服务端的文件,进行同步文件,谁主动谁是客户端,谁被动谁是服务端。

rsync 实现网站镜像和备份

## 实例分析
这里假设有两台服务器:A 和 B。其中 A 是主 web 服务器(155.28.81.0),B 服务器是从服务器(155.28.82.0)。我们要将 A 服务器的 /home/test/ 备份到 B 服务器的 /home/test/ 目录下。

## 服务器 A 配置
#### 服务器 A 编译安装
rsync 的编译安装非常简单,只需要以下简单的几步:

[root@www ~]# cd /usr/local/src/
[root@www src]# wget  http://rsync.samba.org/ftp/rsync/src/rsync-3.0.9.tar.gz  
[root@www src]# tar zxvf rsync-3.0.9.tar.gz  
[root@www src]# cd rsync-3.0.9
[root@www rsync-3.0.9]# ./configure --prefix=/usr/local/rsync/
[root@www rsync-3.0.9]# make
[root@www rsync-3.0.9]# make install

但是需要注意的是必须在服务器 A 和 B 上都安装 rsync,其中 A 服务器上是以服务端模式 (被动) 运行 rsync,而 B 上则以客户端模式 (主动) 运行 rsync。这样在 web 服务器 A 上运行 rsync 守护进程,在 B 上定时运行客户程序来备份 web 服务器 A 上需要备份的内容。

#### 建立用户与密码认证文件

[root@www rsync-3.0.9]# echo "backup:bk_passwd" > /usr/local/rsync/rsyncd.passwd

请记住,在 server 端建立的密码文件,包含用户名与密码,而在 client 端建立的密码文件只有密码,没有用户名。

#### 设置权限为只读

[root@www rsync-3.0.9]# cd /usr/local/rsync
[root@www rsync]# chmod 600 rsyncd.passwd

否则可能会报错:
@ERROR: auth failed on module ***
rsync error: error starting client-server protocol (code 5) at main.c(1503)

#### 建立 rsync 配置文件

[root@www rsync]# vi /usr/local/rsync/rsyncd.conf
uid = nobody
gid = nobody
use chroot = no
max connections = 4
strict modes = yes
hosts allow = 121.42.46.213    #可以空格,允许多个
port = 873
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log

[test]
path = /home/test
ignore errors
read only = true
list = false
auth users = backup
secrets file = /usr/local/rsync/rsyncd.passwd

#### 以守护进程方式启动 rsync 服务器

[root@www rsync]# rsync --daemon --config=/usr/local/rsync/rsyncd.conf

rsync 默认服务端口为 873,服务器在该端口接收客户的匿名或者认证方式的备份请求。

#### 如果要让服务设置为自启动,可以加入 rc.local

编辑 /etc/rc.d/rc.local,在最后添加:

/usr/local/rsync/bin/rsync --daemon --config=/etc/rsyncd.conf

## 客户端 B 配置

编译安装同上, 一般错误都会发生在服务器 B

#### 建立访问服务端 A 的密码认证文件

[root@www rsync]# echo "bk_passwd" > /usr/local/rsync/rsync.passwd

#### 设置权限为只读

[root@www rsync]# chmod 0600 rsync.passwd

#### 在 rsync 安装之后,运行以下指令同步备份

[root@www rsync]# rsync -vzrtopg --delete --progress --password-file=/usr/local/rsync/rsync.passwd backup@115.28.81.0::test /home/test

其中地址 backup@115.28.81.0::test,backup 为服务器 A 用户,115.28.81.0 为服务器 A IP 地址或者域名,test 为服务器 A 配置模块。

上面这个命令行中 -vzrtopg 里的 v 是 verbose,z 是压缩,r 是 recursive,topg 都是保持文件原有属性如属主、时间的参数,–progress 是指显示出详细的进度情况,–delete 是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致。–password-file=/usr/local/rsync/rsync.passwd 来指定密码文件,这样就可以在脚本中使用而无需交互式地输入验证密码了,这里需要注意的是这份密码文件权限属性要设得只有 root 可读。

这里将备份的内容存放在备份机的 /home/test/ 目录下。

####FAQ:
rsync:mkstemp failed:Permission denied
修改服务端 /usr/local/rsync/rsyncd.conf 配置文件

uid=nobody
gid=nobody

修改为

uid = root
gid = root

不过建议还是一开始就设置为 root,省得遇到一堆问题。

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-11/137658.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计2656字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中