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增量备份
配置服务器端,例如IP:111.111.111.111
1
| address = 111.111.111.111
|
1
| hosts allow=222.222.222.222
|
1
| path = /home/wwwroot
|
1
| chmod 600 /etc/rsyncd/rsyncd.secrets
|
1
| /wp-content/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf
|
配置备份客户端,例如IP:222.222.222.222
1
| chmod 600 /root/pass
|
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介绍
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 |
---------------
No comments:
Post a Comment