MAN | HOME
返回列表 发帖

配置rsync做系统自动异地备份

配置rsync做系统自动异地备份

rsync 是一个Unix系统下的文件同步和传输工具。rsync是用 “rsync 算法”提供了一个客户机和远程文件服务器的文件同步的快速方法。

Some features of rsync include
rsync 包括如下的一些特性:
* can update whole directory trees and filesystems
能更新整个目录和树和文件系统;
* optionally preserves symbolic links, hard links, file ownership, permissions, devices and times
有选择性的保持符号链链、硬链接、文件属于、权限、设备以及时间等;
* requires no special privileges to install
对于安装来说,无任何特殊权限要求;
* internal pipelining reduces latency for multiple files
对于多个文件来说,内部流水线减少文件等待的延时;
* can use rsh, ssh or direct sockets as the transport
能用rsh、ssh 或直接端口做为传输入端口;
* supports anonymous rsync which is ideal for mirroring
支持匿名rsync 同步文件,是理想的镜像工具;

转自LAVA ,稍作修改

rsync安装

用的是Centos5.2,安装很简单.一句命令
yum -y install rsync


yum默认的是2.6版本的,先升级一下:

安裝 for CenOS 5 i386 版的 rpmforge-release package


wget http://packages.sw.be/rpmforge-r ... 6-1.el5.rf.i386.rpm
rpm -ivh rpmforge-release-0.3.6-1.el5.rf.i386.rpm
安裝之後,在 /etc/yum.repos.d/ 目錄底下會多了兩個檔案,分別為 mirrors-rpmforge與 rpmforge.repo

執行
yum update rsync

之後,就可以看到有新版的 rsync 可以升級囉!

現在就可以在不破壞相依性的情況下,把 rsync 升級到 3.06 版了。


rsync服务器端配置
服务器端就是需要备份一端,rsync安装之后是不会自动生成conf配置文件的,需要自己创建.


vi /etc/rsyncd.conf



pid file = /var/run/rsyncd.pid
port = 873

#uid = nobody
#gid = nobody
#用nobody可能会遇到不能写入的情况不怕死可以用root
uid = root
gid = root

use chroot = yes
read only = yes

#限制备份服务器
hosts allow= 192.168.15.152     #多个ip请用空格分开
hosts deny=*
max connections = 5
timeout = 300

#设置同步模块
[lampp]
path = /opt/lampp
list=yes
ignore errors
auth users = lava
secrets file = /etc/rsyncd.secrets
comment = backup lampp
exclude = logs/ backup/ tmp/ #不备份的目录

[www]
path = /www/
list=no
ignore errors
auth users = lava
secrets file = /etc/rsyncd.secrets


设置密码文件


echo lava:123456 >>/etc/rsyncd.secrets
chmod 600 /etc/rsyncd.secrets


设置启动


vi /etc/xinetd.d/rsync

disable = yes
改成

disable = no


service xinetd restart


Linux 防火墙是用iptables,所以我们至少在服务器端要让你所定义的rsync 服务器端口通过,客户端上也应该让通过。

iptables -A INPUT -p tcp -m state --state NEW  -m tcp --dport 873 -j ACCEPT
iptables -L

查看一下防火墙是不是打开了 873端口;

客户端设置

echo 123456 >>/etc/rsync.pass

chmod 600 /etc/rsync.pass


再来试试看这个


rsync --list-only lava@www.xxxx.com::lampp  --password-file=/etc/rsync.pass


呵呵,开始同步备份吧

rsync -vzrtopg lava@www.xxxx.com::lampp /opt/lampp --password-file=/etc/rsync.pass


具体参数说明看下面

设置自动执行计划


vi   /opt/backuplampp.sh



#!/bin/bash
/usr/bin/rsync -avzP lava@www.xxxx.com::lampp /opt/lampp --password-file=/etc/rsync.pass > /dev/null 2>&1



chmod +x  /opt/backuplampp.sh

修改crond服务器的配置文件,让系统每天都自动备份

crontab  -e


加入下面的内容:

# Run daily cron jobs at 4:10 every day  backup linuxsir data:  
0 */2 * * * /opt/backuplampp.sh

注:
第一行是注释,是说明内容,这样能自己记住。
第二行表示在每两小时运行一次备份,运行/opt/backuplampp.sh 下的可执行脚本任务;


配置好后,要重启crond 服务器;


killall crond    注:杀死crond 服务器的进程;
ps aux |grep crond  注:查看一下是否被杀死;
/usr/sbin/crond    注:启动 crond 服务器;
ps aux  |grep crond  注:查看一下是否启动了?
root      3815  0.0  0.0   1860   664 ?        S    14:44   0:00 /usr/sbin/crond
root      3819  0.0  0.0   2188   808 pts/1    S+   14:45   0:00 grep crond


服务器配置参数介绍

comment

给模块指定一个描述,该描述连同模块名在客户连接得到模块列表时显示给客户。默认没有描述定义。

path

指定该模块的供备份的目录树路径,该参数是必须指定的。

use chroot

如果”use chroot”指定为true,那么rsync在传输文件以前首先chroot到path参数所指定的目录下。这样做的原因是实现额外的安全防护,但是缺点是需要以roots权限,并且不能备份指向外部的符号连接所指向的目录文件。默认情况下chroot值为true。

uid

该选项指定当该模块传输文件时守护进程应该具有的uid,配合gid选项使用可以确定哪些可以访问怎么样的文件权限,默认值是”nobody”。

gid

该选项指定当该模块传输文件时守护进程应该具有的gid。默认值为”nobody”。

max connections

指定该模块的最大并发连接数量以保护服务器,超过限制的连接请求将被告知随后再试。默认值是0,也就是没有限制。

list

该选项设定当客户请求可以使用的模块列表时,该模块是否应该被列出。如果设置该选项为false,可以创建隐藏的模块。默认值是true。

read only

该选项设定是否允许客户上载文件。如果为true那么任何上载请求都会失败,如果为false并且服务器目录读写权限允许那么上载是允许的。默认值为true。

exclude

用来指定多个由空格隔开的多个文件或目录(相对路径),并将其添加到exclude列表中。这等同于在客户端命令中使用–exclude来指定模式,一个模块只能指定一个exclude选项。但是需要注意的一点是该选项有一定的安全性问题,客户很有可能绕过exclude列表,如果希望确保特定的文件不能被访问,那就最好结合uid/gid选项一起使用。

exclude from [file]

指定一个包含exclude模式的定义的文件名,服务器从该文件中读取exclude列表定义。

include

用来指定不排除符合要求的文件或目录。这等同于在客户端命令中使用–include来指定模式,结合include和exclude可以定义复杂的exclude/include规则。

include from [file]

指定一个包含include模式的定义的文件名,服务器从该文件中读取include列表定义。

auth users

该选项指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块。这里的用户和系统用户没有任何关系。如果”auth users”被设置,那么客户端发出对该模块的连接请求以后会被rsync请求challenged进行验证身份这里使用的 challenge/response认证协议。用户的名和密码以明文方式存放在”secrets file”选项指定的文件中。默认情况下无需密码就可以连接模块(也就是匿名方式)。

secrets file

该选项指定一个包含定义用户名:密码对的文件。只有在”auth users”被定义时,该文件才有作用。文件每行包含一个username:passwd对。一般来说密码最好不要超过8个字符。没有默认的 secures file名,需要限式指定一个(例如:/etc/rsyncd.passwd)。注意:该文件的权限一定要是600,否则客户端将不能连接服务器

strict modes

该选项指定是否监测密码文件的权限,如果该选项值为true那么密码文件只能被rsync服务器运行身份的用户访问,其他任何用户不可以访问该文件。默认值为true。

hosts allow

该选项指定哪些IP的客户允许连接该模块。客户模式定义可以是以下形式:单个IP地址,例如:192.167.0.1

hosts deny

指定不允许连接rsync服务器的机器,可以使用hosts allow的定义方式来进行定义。默认是没有hosts deny定义。

ignore errors

指定rsyncd在判断是否运行传输时的删除操作时忽略server上的IO错误,一般来说rsync在出现IO错误时将将跳过–delete操作,以防止因为暂时的资源不足或其它IO错误导致的严重问题。

lock file

指定支持max connections参数的锁文件,默认值是/var/run/rsyncd.lock。

timeout

通过该选项可以覆盖客户指定的IP超时时间。通过该选项可以确保rsync服务器不会永远等待一个崩溃的客户端。超时单位为秒钟,0表示没有超时定义,这也是默认值。对于匿名rsync服务器来说,一个理想的数字是600。

dont compress

用来指定那些不进行压缩处理再传输的文件,默认值是*.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz


执行选项说明


-v, –verbose 详细模式输出

-q, –quiet 精简输出模式

-c, –checksum 打开校验开关,强制对文件传输进行校验

-a, –archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD

-r, –recursive 对子目录以递归模式处理

-R, –relative 使用相对路径信息

-b, –backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用–suffix选项来指定不同的备份文件前缀。

–backup-dir 将备份文件(如~filename)存放在在目录下。

-suffix=SUFFIX 定义备份文件前缀

-u, –update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件。(不覆盖更新的文件)

-l, –links 保留软链结

-L, –copy-links 想对待常规文件一样处理软链结

–copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链结

–safe-links 忽略指向SRC路径目录树以外的链结

-H, –hard-links 保留硬链结

-p, –perms 保持文件权限

-o, –owner 保持文件属主信息

-g, –group 保持文件属组信息

-D, –devices 保持设备文件信息

-t, –times 保持文件时间信息

-S, –sparse 对稀疏文件进行特殊处理以节省DST的空间

-n, –dry-run现实哪些文件将被传输

-W, –whole-file 拷贝文件,不进行增量检测

-x, –one-file-system 不要跨越文件系统边界

-B, –block-size=SIZE 检验算法使用的块尺寸,默认是700字节

-e, –rsh=COMMAND 指定替代rsh的shell程序

–rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息

-C, –cvs-exclude 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件

–existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件

–delete 删除那些DST中SRC没有的文件

–delete-excluded 同样删除接收端那些被该选项指定排除的文件

–delete-after 传输结束以后再删除

–ignore-errors 及时出现IO错误也进行删除

–max-delete=NUM 最多删除NUM个文件

–partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输

–force 强制删除目录,即使不为空

–numeric-ids 不将数字的用户和组ID匹配为用户名和组名

–timeout=TIME IP超时时间,单位为秒

-I, –ignore-times 不跳过那些有同样的时间和长度的文件

–size-only 当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间

–modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认为0

-T –temp-dir=DIR 在DIR中创建临时文件

–compare-dest=DIR 同样比较DIR中的文件来决定是否需要备份

-P 等同于 –partial

–progress 显示备份过程

-z, –compress 对备份的文件在传输时进行压缩处理

–exclude=PATTERN 指定排除不需要传输的文件模式

–include=PATTERN 指定不排除而需要传输的文件模式

–exclude-from=FILE 排除FILE中指定模式的文件

–include-from=FILE 不排除FILE指定模式匹配的文件

–version 打印版本信息

–address 绑定到特定的地址

–config=FILE 指定其他的配置文件,不使用默认的rsyncd.conf文件

–port=PORT 指定其他的rsync服务端口

–blocking-io 对远程shell使用阻塞IO

–stats 给出某些文件的传输状态

–progress 在传输时现实传输过程

–log-format=formAT 指定日志文件格式

–password-file=FILE 从FILE中得到密码

–bwlimit=KBPS 限制I/O带宽,KBytes per second

-h, –help 显示帮助信息

返回列表