Total Pageviews

Monday, 2 July 2018

用rsync迁移vps的数据真是爽

按照转载的此文https://briteming.blogspot.com/2018/06/vps.html,从6月21日开始,断断续续搞到6月30日才搞定。主要是因为原文写得不够详细,误导了我。后又搜到:
http://www.chinaz.com/web/2011/0824/206608.shtml,才恍然大悟。

可行的命令:
登陆source server,然后运行:
rsync -avz -e "ssh -p target-server-ssh-port" --numeric-ids --exclude=/etc/fstab --exclude=/etc/network/* --exclude=/proc/* --exclude=/tmp/* --exclude=/sys/* --exclude=/dev/* --exclude=/mnt/* --exclude=/boot/* --exclude=/etc/udev --exclude=/etc/netplan/* --exclude=/etc/sysconfig/network-scripts/* --exclude=/etc/systemd/network/* /* root@target-server-ip:/

这样,就把源vps(旧vps)上的所有的我生成的数据迁移到了目标vps(新vps)上。

用rsync迁移vps”准确的说法是“用rsync迁移vps的数据”,因为目标vps已经存在。
注:目标vps必须跟源vps是一样的系统,版本和位数,方能确保迁移成功。我迁移花了一个小时。
------------

 整个linux系统的备份和还原的方法

在接触Linux的过程中,经常会导致Linux出现各种错误,可恢复的或者是不可恢复的(至少在目前的情况下),所以,对于我而言,Linux的备份和还原就尤为的重要。
1.备份
a)可以直接通过tar对整个文件系统(’/‘)进行备份,但是有几点需要注意:
i. 不能备份以下几个文件(目录)
1. 当前压缩文件
2. /proc文件夹
3. /lost+found文件夹
4. /mnt文件夹
5. /sys文件夹
6. /media文件夹
b)所以,命令为:
tar cvpzf backup.tar.gz –exclude=/proc –exclude=/lost+found –exclude=/backup.tar.gz –exclude=/mnt –exclude=/sys –exclude=/media /
1.注意:p选项代表保存当前权限
2.还原
a) Linux可以再正在远行的系统中还原系统,如果当前启动无法启动,可以通过live cd来启动并执行恢复操作.
b) 操作如下
tar xcpfz backup.tar.gz -C /
c) 需要额外创建目录
i.  mkdir proc
ii.  mkdir lost+found
iii. mkdir mnt
iv. mkdir sys
如果以上有任何错误,欢迎指正.
-----------------

利用RSYNC进行VPS增量备份


利用Linux的Rsync可以非常简单的对VPS进行增量备份操作,今天我就给大家写一个教程供大家使用。
首先需要下载两个压缩包,一个为服务器端,一个为客户端,服务器端为数据源VPS,客户端为备份VPS,注意:仅支持单向同步,即备份功能。

配置服务器端,例如IP:111.111.111.111

下载 rsync-server.zip 文件,解压后,上传到/etc目录,需要设置4个地方:
1.设置 /etc/rsyncd/rsyncd.conf 中的服务器端IP为您VPS的IP
1
address = 111.111.111.111
2.设置 /etc/rsyncd/rsyncd.conf 中允许同步的客户端IP,多IP用空格隔开:
1
hosts allow=222.222.222.222
3.设置 /etc/rsyncd/rsyncd.conf 中的需要同步的目录
1
path = /home/wwwroot
4.设置 /etc/rsyncd/rsyncd.secrets 中用户名及密码,并用命令给予600权限
1
chmod 600 /etc/rsyncd/rsyncd.secrets
5.开启服务器端
1
/wp-content/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf

配置备份客户端,例如IP:222.222.222.222

下载 rsync-root.zip 文件,解压后,上传至/root目录中:
1.设置rsync密码/root/pass文件(无须用户名),与服务器端一致,并给予600权限,命令:
1
chmod 600 /root/pass
2.设置rsync路径/root/rs.sh,与服务器端一致,并给予可执行权限,命令:
1
2
3
4
5
6
rsync -avzP --delete --password-file=/root/pass username@111.111.111.111::profilename /home/backup
#其中username为服务器端/etc/rsyncd/rsyncd.secrets中用户名
#其中111.111.111.111为服务器端IP
#其中profilename为/etc/rsyncd/rsyncd.conf中定义的配置名
#其中/home/backup为需要同步到的客户端路径
chmod +x /root/rs.sh

可以用 crontab 功能,每1小时,或每天同步一次数据:

1
2
3
4
crontab -e 25 */1 * * * /root/rs.sh
//每个小时的第25分钟自动运行一次 
25 04 */1 * * /root/rs.sh 
//每天的25分04时自动运行一次

常见错误解答

  • 服务器端/etc/rsyncd/rsyncd.secrets和备份端/root/pass,均需要600权限
  • 可以手动执行/root/rs.sh,看是否能够同步成功
  • 切记,此同步是数据完全同步,会删除掉备份端有,而服务器端没有的文件
  • 此为增量备份,只同步修改过或没有的文件,原有文件不会下载,很节省时间和流量.
-----------------

搭建rsync备用服务器,及配置文件详解

rsync官方网址:https://rsync.samba.org/

一:rsync介绍

rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份工具。

在守护进程模式(daemon mode)下,rsync默认监听TCP端口873,以原生rsync传输协议或者通过远程shell如RSH或者SSH提供文件。SSH模式下,rsync客户端运行程序必须同时在本地和远程机器上安装。

全量与增量,全量:将全部数据进行传输覆盖,增量:只传输差异部分的数据,rsync通过独特的“quick check”算法,实现增量数据传输

rsync的功能
类似与cp命令    — (本地备份传输数据)
类似于scp命令   — (远程备份传输数据)
类似于rm命令 — (实现无差异同步备份)
类似于ls命令 — (本地文件信息查看)

模拟环境,两台机器:Linux 系统Centos 7
备份服务器ip:172.16.2.4, 客户端服务器(nfs存储共享)ip:172.16.2.3
目的:将nfs服务器/www目录的数据,备份到备份服务器的/backup/web目录。

二:rsync的安装:

服务端(备份服务器)和客户端都要安装。

yum -y install rsync

如果想安装最新版本,则自己wget官网最新版本,然后编译安装。

基本命令语法:

Local:  rsync [OPTION...] SRC... [DEST]
 
Access via remote shell:
  Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
  Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
 
Access via rsync daemon:
  Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
        rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
  Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
        rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

当然如果觉得记得复杂的话,就记住从前往后传即可:rsync 参数 前面(源路径) 后面(目的路径)

注:源路径如果是一个目录的话,带上尾随斜线和不带尾随斜线是不一样的,不带尾随斜线表示的是整个目录包括目录本身,带上尾随斜线表示的是目录中的文件,不包括目录本身。


三:三种传输方式

1:本地模式:类似与cp命令:

将/etc/fstab同步至/tmp目录,如果fstab加斜杠/,则将fstab目录下所有文件同步至/tmp。
以下命令类似功能 cp /etc/fstab /tmp

rsync /etc/fstab /tmp       #在本地同步,将fstab目录同步至/tmp
rsync /etc/fstab/ /tmp      #将fstab目录下所有文件同步至/tmp


2:远程模式:类似于scp命令:

远程分pull下载和push上传两种:

rsync -r /www 172.16.2.4:/backup/web     
# 将本地/www目录上传至远程主机的/backup/web下,
# 远程/backup/web目录和本地/www保持同步
 
rsync -r 172.16.2.4:/backup/web /www      
# 将远程主机的/backup/web目录下载到本地/www下,   
# 本地/www目录和远程/backup/web保持同步


3:守护进程模式(最主要的用法):

注意:如果是下载数据,远端服务器源数据目录权限可以为任意权限

注意:如果是上传数据,远端接收文件的目录权限必须是rsync权限

3.1 服务端配置

创建rsync系统用户

useradd rsync -s /sbin/nologin -M                  
#创建一个rsync的虚拟用户,只被程序使用

修改服务端配置文件

vim /etc/rsyncd.conf

配置如下:
fake super = yes 这个选项版本以前是没有的,在新版本中如果不加上这个参数,会报权限错误 rsync: chgrp “.hosts.G6sZha” (in backup) failed: Operation not permitted (1)

注:配置文件最后要删除掉所有#注释部分的备注信息,否则同步过程有可能会失败

uid = rsync                #用户 远端命令使用rsync访问共享目录
gid = rsync                #用户组
use chroot = no            #安全相关
max connections = 200      #最大连接数
timeout = 300              #超时时间(不进行备份多长时间断开)
pid file = /var/run/rsyncd.pid             #进程对应进程号文件(存放服务运行时进程id号)
lock file = /var/run/rsync.lock            #锁文件
log file = /var/log/rsyncd.log             #日志文件,显示出错信息
fake super = yes            #在新版本中必须加这个
#模块信息:
[backup]
comment = "backup"
path = /backup/web       #模块对应的位置(路径)
ignore errors            #忽略错误程序
read only = false        #是否只读(这里是假,表示能写入)
list = false             #是否可以列表*
hosts allow = 172.16.2.0/24        #准许访问rsync服务器客户范围(白名单)
#hosts deny = 0.0.0.0/32            #禁止访问rsync服务器客户范围(黑名单)
auth users = rsync_backup          #不存在的用户,只用于认证
#设置进行连接认证的密钥文件:
secrets file = /etc/rsync.password    #认证时密钥文件

创建数据备份存储目录

创建备份目录,将backup目录及目录以下文件权限改为rsync

mkdir /backup/web
chown -R rsync.rsync /backup/                   
#一定要将文件属主和属组改成rsync用户

创建认证用户密码文件,修改文件权限

注:密码文件必须是600权限,否则报错

echo "rsync_backup:123456" >/etc/rsync.password
chmod 600 /etc/rsync.password                 
#为了安全起见,把认证用户的密码文件权限改成600

启动rsync守护进程,并查看是否启动

rsync --daemon                #启动守护进程
ps aux |grep rsync            #查看是否启动进程
netstat -lntup |grep rsync    #查看是否监听873端口

查看已经正常启动并监听873端口。

3.2 客户端配置

创建密码文件,客户端密码文件中,只需要密码即可,密码文件的权限是600

echo "123456" >/etc/rsync.password
chmod 600 /etc/rsync.password

3.3 传输测试,相关参数为服务端配置文件设置的

客户端上传至服务端测试:
/www/将本地www文件下所有文件上传至备份服务器172.16.2.4。如果是/www,则是将整个www文件夹备份过去。

rsync_backup为服务器中配置文件的auth users参数,::backup是以后的模块参数及配置文件中的[backup],后面接配置文件中的密码文件路径,免交互,不用输入密码就可传输。

rsync -avz /www/ rsync_backup@172.16.2.4::backup --password-file=/etc/rsync.password

在客户端下载测试:
将备份服务器的backup模块配置的path路径的文件下载至本地www目录下。

rsync -avz rsync_backup@172.16.2.4::backup --password-file=/etc/rsync.password /www

到此配置完成!!!

3.4 添加开机启动守护进程

echo "/usr/bin/rsync --daemon" >> /etc/rc.local



四:rsync命令参数(参考)

参数说明
-v–verbose 详细模式输出
-a–archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-z对备份的文件在传输时进行压缩处理
-v–verbose 详细模式输出
-v–verbose 详细模式输出
-v–verbose 详细模式输出
-P显示进度
-r,–recursive 对子目录以递归模式处理
-l,–links 保留软链结
-p,–perms 保持文件权限
-o,–owner 保持文件属主信息
-g,–group 保持文件属组信息
-D,–devices 保持设备文件信息
-t,–times 保持文件时间信息
-e,–rsh=command 指定使用rsh、ssh方式进行数据同步
-S,–sparse 对稀疏文件进行特殊处理以节省DST的空间
-n,–dry-run 现实哪些文件将被传输
-w,–whole-file 拷贝文件,不进行增量检测
-B,–block-size=SIZE 检验算法使用的块尺寸,默认是700字节。
-x,–one-file-system 不要跨越文件系统边界
-R,-relative 使用相对路径信息
-b,–backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用–suffix选项来指定不同的备份文件前缀。
-u,–update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件,不覆盖更新的文件
-q,–quiet 精简输出模式
-c,–checksum 打开校验开关,强制对文件传输进行校验
–exclude=PATTERN指定排除不需要传输的文件模式
–exclude-from=FILE排除FILE中指定模式的文件
–bwlimit=KBPS限制I/O带宽,KBytes per second
–delete删除那些DST中SRC没有的文件
–password-file=FILE从FILE中得到密码

平常经常使用命令参数有rsync -avz

排除同步:–exclude=a (排除a)

rsync -avz --exclude=a /backup/ rsync_backup@172.16.1.41::backup/ --password-file=/etc/rsync.password

排除a 和b

[root@nfs01 backup]# rsync -avz --exclude={a,b} /backup/ rsync_backup@172.16.1.41::backup/ --password-file=/etc/rsync.password

排除连续的a-f

rsync -avz --exclude={a..f} /backup/ rsync_backup@172.16.1.41::backup/ --password-file=/etc/rsync.password

完全同步:无差异同步–delete

rsync -avz --delete /backup/ rsync_backup@172.16.1.41::backup/ --password-file=/etc/rsync.password



五:服务端配置文件属性参数详解(参考)

文件配置在vim /etc/rsyncd.conf,没有的话需自己创建。
参数配置分为全局参数和模块参数
全局参数如下:

常见的全局参数:说明
port# 指定后台程序使用的端口号,默认为873。
uid# 该选项指定当该模块传输文件时守护进程应该具有的uid,配合gid选项使用可以确定哪些可以访问怎么样的文件权限,默认值是” nobody”。
gid# 该选项指定当该模块传输文件时守护进程应该具有的gid。默认值为” nobody”。
max connections# 指定该模块的最大并发连接数量以保护服务器,超过限制的连接请求将被告知随后再试。 默认值是0,也就是没有限制。
lock file# 指定支持max connections参数的锁文件,默认值是/var/run/rsyncd.lock。
motd file# ” motd file”参数用来指定一个消息文件,当客户连接服务器时该文件的内容显示给客户, 默认是没有motd文件的。
log file# ” log file”指定rsync的日志文件,而不将日志发送给syslog。
pid file# 指定rsync的pid文件,通常指定为“/var/run/rsyncd.pid”,存放进程ID的文件位置。
hosts allow =# 单个IP地址或网络地址 ,允许访问的客户机地址

模块参数[modul]如下:

常见的模块参数:主要是定义服务器哪个要被同步输出,其格式必须为“ [ 共享模块名 ]” 形式,这个名字就是在 RSYNC 客户端看到的名字,服务器真正同步的数据是通过 PATH 来指定的。
Comment# 给模块指定一个描述,该描述连同模块名在客户连接得到模块列表时显示给客户。 默认没有描述定义。
Path# 指定该模块的供备份的目录树路径,该参数是必须指定的。
read only# yes为只允许下载,no为可以下载和上传文件到服务器
exclude# 用来指定多个由空格隔开的多个文件或目录(相对路径),将其添加到exclude列表中。 这等同于在客户端命令中使用―exclude或—-filter来指定某些文件或目录不下载或上传。
exclude from# 指定一个包含exclude模式的定义的文件名,服务器从该文件中读取exclude列表定义, 每个文件或目录需要占用一行
include# 用来指定不排除符合要求的文件或目录。这等同于在客户端命令中使用–include来指定模式,结合include和exclude可以定义复杂的exclude/include规则。
include from# 指定一个包含include模式的定义的文件名,服务器从该文件中读取include列表定义。
auth users# 该选项指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块, 这里的用户和系统用户没有任何关系。 如果” auth users”被设置,那么客户端发出对该模块的连接请求以后会被rsync请求challenged进行验证身份这里使用的challenge/response认证协议。用户的名和密码以明文方式存放在” secrets file”选项指定的文件中。默认情况下无需密码就可以连接模块(也就是匿名方式)。
secrets file# 该选项指定一个包含定义用户名:密码对的文件。 只有在” auth users”被定义时,该文件才有作用。文件每行包含一个username:passwd对。一般来说密码最好不要超过8个字符。没有默认的secures file名,注意:该文件的权限一定要是600,否则客户端将不能连接服务器。
hosts allow# 指定哪些IP的客户允许连接该模块。定义可以是以下形式: 单个IP地址,例如:192.167.0.1,多个IP或网段需要用空格隔开,整个网段,例如:192.168.0.0/24,也可以是192.168.0.0/255.255.255.0,“*”则表示所有,默认是允许所有主机连接。
hosts deny# 指定不允许连接rsync服务器的机器,可以使用hosts allow的定义方式来进行定义。 默认是没有hosts deny定义。
list# 该选项设定当客户请求可以使用的模块列表时,该模块是否应该被列出。 如果设置该选项为false,可以创建隐藏的模块。默认值是true。
timeout# 通过该选项可以覆盖客户指定的IP超时时间。通过该选项可以确保rsync服务器不会永远等待一个崩溃的客户端。超时单位为秒钟,0表示没有超时定义,这也是默认值。对于匿名rsync服务器来说,一个理想的数字是600。
ignore errors# 忽略I/P不正确 .
ignore nonreadable# 忽略对用户没有可读的文件
---------------------------


inotify+rsync实现实时监控备份

inotify 仅支持 2.6.13 以上内核开,当然现在基本上都是2.6.13以上的,除非真的很旧的系统。不放心的可以自已uname -r查看你的内核。也可在查看ll /proc/sys/fs/inotify/ (系统不同,路径也不同)是否有三个文件,如果有表明内核支持 inotify。

inotify 可以监控文件,也可以监控目录。当监控目录时,它可以同时监控目录及目录中的各子目录及文件的。所以用rsync + inotify的方法监控web服务器或者nfs存储服务器,inotify只要发现有变化,通过rsync将文件同步至备份服务器。但缺点是rsync同步时同步整个目录(遍历效率低)。因此还有另外一种rsync+sersync架构。

sersync是基于inotify开发的工具,rsync+sersync可具体监控到每个文件夹的某个文件的名字,所以rsync同步时,只需要同步改变的某个文件,无需同步整个目录。

当同步的目录数据量不大时,建议使用rsync+inotify 当同步的目录数据量很大时(几百G甚至1T以上)文件很多时,建议使用rsync+sersync.

测试环境介绍:2台机器,系统Linux(centos 7)
nfs存储共享服务器ip:172.16.2.3 (已安装nfs,rsync)
rsync备份服务器ip :172.16.2.4(已安装rsync)
要求:inotify+rsync监控nfs服务器 /www目录,有更新或修改文件后,同步至rsync备份服务器/backup/web目录。

一 :inotify的安装与使用

1:在nfs服务器上yum直接按照 inotify-tools

没有没有安装epel-release第三方源,是没法直接yum安装的。
没有安装的直接先yum install -y epel-release即可。
然后yum 安装inotify-tools。

yum install -y inotify-tools

2:测试inotify是否启动

监控/www目录创建选项,并以年月日时分显示所创建的文件。

打开另外会话窗口2,在会话2中依次创建bbb.txt,ccc.txt, ddd.txt文件。
在原会话窗口1可看到已成功监控到创建了文件。

inotifywait -mrq --timefmt '%Y-%m-%d %H:%M' --format '%T %w%f' -e create /www

inotify之inotifywait命令详解
参数详解:

-r:递归查询目录
-q:打印监控时间信息
-m:始终保持时间监听状态
--excludei: 排除文件或目录时,不区分大小写。
--timefmt: 指定时间输出的格式
--format: 打印使用指定的输出类似格式字符串
a、 %w:显示被监控文件的文件名;
b、 %f:如果发生某事件的对象是目录,则显示被监控目录的名字;默认显示为空串;
c、 %T:使用--timefmt 选项中自定义的时间格式;
d、 %e 表示发生的事件
e、 %Xe 事件以“X”分隔
-e:指定需要监控的事件
access: 文件或目录被读取
modify: 文件或目录内容被修改
attrib: 文件或目录属性被改变
close: 文件或目录封闭,无论读/写模式
open:文件或目录被打开
move_to:文件或目录被移动到另外一个目录
move:文件或目录被移动另一个目录或从另一个目录移动到当前目录
create:文件或目录被创建在当前目录
delete:文件或目录被删除
unmount:文件系统被卸载
 
常用组合:close_write,modify,delete,create,attrib

二:编写监控脚本

1:输入脚本内容:

vim inotify.sh

最基本的脚本内容用无限循环即可,当/www目录发现有增删改时,实行将/www所以文件同步至备份服务器。最基础的脚本,后续可自行优化,分别对文件夹文件的增、删、改对不同的条件执行即可。

#!/bin/bash
/usr/bin/inotifywait -mrq '%w%f' -e close_write,modify,delete,create /www \
| while read line
do
rsync -avz /www/ rsync_backup@172.16.2.4::backup/ --password-file=/etc/rsync.password >/dev/null 2>&1
done
exit 0

2:执行脚本并测试

chmod +x inotify.sh    #对脚本添加执行权限
sh inotify.sh &        #运行脚本监控/www

sh inotify.sh & 脚本后面加上& 为后台执行,结束用pkill或者kill直接杀死即可,
ps -ef|grep inotify查看脚本是否运行。

在nfs服务器目录/www创建{1..6}.txt,6个文件。

并在rsync服务器查看是否有文件同步过来。

touch /www/{1..6}.txt    #在NFS服务器上上创建文件进行测试   
ll /backup/web           #rsync备份服务上查看是否备份成功  

查看备份服务器目录文件已经同步过来,已同步成功…

3:脚本设置开机启动

最后将脚本加入rc.local 文件,开机启动即可。

echo "/bin/bash inotify.sh &" >> /etc/rc.local   #设置开机启动

三:修改inotify默认参数(可选)

inotify默认内核参数值太小,分别就是
查看系统默认参数值

sysctl -a | grep max_queued_events
结果是:fs.inotify.max_queued_events = 16384
sysctl -a | grep max_user_watches
结果是:fs.inotify.max_user_watches = 8192
sysctl -a | grep max_user_instances
结果是:fs.inotify.max_user_instances = 128

修改参数命令

sysctl -w fs.inotify.max_queued_events="99999999"
sysctl -w fs.inotify.max_user_watches="99999999"
sysctl -w fs.inotify.max_user_instances="65535"

并在sysctl.conf文件添加以下内容

vi /etc/sysctl.conf
fs.inotify.max_queued_events=99999999
fs.inotify.max_user_watches=99999999
fs.inotify.max_user_instances=65535

保存退出完成。

参数说明:
max_queued_events:
inotify队列最大长度,如果值太小,会出现”** Event Queue Overflow **”错误,导致监控文件不准确

max_user_watches:
设置inotifywait或inotifywatch命令可以监视的文件数量(单进程)

max_user_instances:
每个用户创建inotify实例最大值
【inotify在实际生产环境中,对于50-200KB的文件,inotify的最发并发量为200-300,如果客户端写入速度大于这个量,将会造成短暂的延迟】

---------------

rsync+sersync实现实时监控备份同步

rsync+sersync简介

sersync是基于inotify开发的,类似于inotify-tools的工具。所以同样内核需先支持inotify,才能搭建。

sersync可以记录下被监听目录中发生变化的(包括增加、删除、修改)具体某一个文件或者某一个目录的名字,然后使用rsync同步的时候,只同步发生变化的文件或者目录。

相对于inotify-tools遍历更快,在同步大量数据时更有优势,搭建更快,无需额外编写脚本。

搭建环境:2台Linux(centos 7)
nfs备份共享服务器(源服务器)ip:172.16.2.3(已安装rsync)
rsync备份服务器(目标服务器)ip:172.16.2.4(已搭建完成rsync配置)
目的:通过sersync对nfs服务器的/www目录进行监控,如有改动,则自动备份同步至rsync备份服务器的/backup/web目录。

sersync的安装

sersync是国人开发的,没法直接yum安装。没有官网,不用去找(有的话也是第三方自己弄的)。
直接在github上开源发布,有托管在google code上。所以安装需要自己下载安装,

google code地址:https://code.google.com/archive/p/sersync/
github地址:https://github.com/wsgzao/sersync

国内如果访问不了,可能要科学上网。不过国内也有很多资源自己找来下载。目前最新版为2011年更新的2.5.4版本,已停止更新。

在nfs服务器上ip:172.16.2.3下载,直接在google code下载,或者其他地方下载下来上传至服务器

1:下载至本地

wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/sersync/sersync2.5.4_64bit_binary_stable_final.tar.gz

2:解压得到文件夹并移动改名

tar -zxvf sersync2.5.4_64bit_binary_stable_final.tar.gz

移动到/usr/local并改名sersync(自行选择目录)

mv GNU-Linux-x86  /usr/local/sersync

3:进入目录并修改xml配置文件

进入

cd  /usr/local/sersync          #进入sersync安装目录
cp confxml.xml confxml.xml-bak  #备份原文件
vi confxml.xml                  #编辑,修改下面的代码

配置内容修改几个地方:相关信息在自己rsync备份服务器的配置文件/etc/rsyncd.conf可见。

原配置文件如下:

#服务器ip,文件路径及模块名设置
<localpath watch="/opt/tongbu">                       
#这里填写nfs存储服务器(源服务器)要同步的文件夹路径。
 
<remote ip="127.0.0.1" name="tongbu1"/>               
#这里填写rsync备份服务器(目标服务器)的IP地址和模块名,可配置多个服务器
<!--<remote ip="192.168.8.39" name="tongbu"/>-->
<!--<remote ip="192.168.8.40" name="tongbu"/>-->
</localpath>
 
#认证部分(rsync密码认证)
<rsync>
<auth start="false" users="root" passwordfile="/etc/rsync.pas"/>   
#启用密码认证,配置auth users+密码文件路径,rsync备份服务器的认证信息。
</rsync>
 
#修改同步失败日志位置,并且每60分钟对失败的log进行重新同步(可选配置,非必需)
<failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once-->

修改后的相关配置如下:

<sersync>
    <localpath watch="/www">
        <remote ip="172.16.2.4" name="backup"/>
    </localpath>
    <rsync>
        <commonParams params="-artuz"/>
        <auth start="true" users="rsync_backup" passwordfile="/etc/rsync.password"/>
        <userDefinedPort start="false" port="874"/><!-- port=874 -->
        <timeout start="false" time="100"/><!-- timeout=100 -->
        <ssh start="false"/>
    </rsync>
    <failLog path="/var/log/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once-->

注意:希望各位英语水平都比我好,我把true写成ture后,直接卡死,找半天错误才找,千万不能写错。

4:开启sersync守护进程同步数据并测试程序

开启sersync进程:

/usr/local/sersync/sersync2  -d -r -o /usr/local/sersync/confxml.xml

参数用法:
-d:启用守护进程模式
-r:在监控前,将监控目录与远程主机用rsync命令推送一遍
-n: 指定开启守护线程的数量,默认为10个
-o:指定配置文件,默认使用confxml.xml文件

开启成功,不成功则卡死.

在nfs服务器/www目录创建6个文件

touch {1..6}.txt

在rsync备份服务器/back/web查看是否同步过来

ll /backup/web

同步成功,配置完成!!

5:配置sersync环境变量并开机启动

配置环境变量

echo"PATH=$PATH:/usr/local/sersync/">>/etc/profile
source /etc/profile

配置环境变量,配置好后,在命令行可直接输入命令:

sersync2  -d -r -o /usr/local/sersync/confxml.xml

将命令添加到/etc/rc.local,实现开机启动:

echo '/usr/local/sersync/sersync2 -d -r -o /usr/local/sersync/conf/confxml.xml' >> /etc/rc.local

注:如果开机启动无效,是sersync2没有执行权限,给/usr/local/sersync/sersync2赋予执行权限即可

以上全部配置完成!!

6:多实例情况(参考)

配置文化多个localpath无效的,需要配置多配置confxml.xml文件。
如在rsync备份服务器中,配置文件/etc/rsyncd.conf有多个模块,则需要重新创建confxml.xml。

1、配置多个confxml.xml文件(比如:www、bbs、blog….等等)
www_confxml.xml bbs_confxml.xml blog_confxml.xml(按照单个实例配置即可)
2、最后根据不同的需求同步对应的实例文件

/usr/local/sersync/sersync2  -d -o /usr/local/sersync/www_confxml.xml
/usr/local/sersync/sersync2  -d -o /usr/local/sersync/bbs_confxml.xml
/usr/local/sersync/sersync2  -d -o /usr/local/sersync/blog_confxml.xml

---------------

相关帖子:
https://briteming.blogspot.com/2012/04/rsync-ssh-server.html
https://briteming.blogspot.com/2011/11/rsync.html

No comments:

Post a Comment