http://www.boobooke.com/v/bbk1753/
http://v.ku6.com/show/tOVZLGPij8Vt2W-3JIZyrQ...html?nr=1&loc=tashangchuan
3.1 创建备份用户
因为备份用户的密码需要明文写在配置文件中,因此最好为该业务创建单独的用户,以保证安装和不影响其他业务;以下以创建用户backup,密码passwd为例;也可以直接用已有用户;
root登录主服务器,添加用户backup
# useradd –d /home/backup –m backup
设置其密码为passwd
# passwd backup
分别两次键入密码passwd
3.2 主服务器配置rsync
在主服务器上需要以守护进程方式来启动rsync服务器,需开启rsync守护进程;
#ps –ef|grep rsync 查看是否rsync已开启
编辑/etc/services,
#vi /etc/services
加入如下内容
rsync 873/tcp
【注】:指定rsync的服务端口是873(有的服务器已经默认配置了该项,不需要再次加入)。
编辑/etc/inetd.conf
#vi /etc/inetd.conf
加入rsync stream tcp nowait root /usr/bin/rsync rsync --daemon
【注】:/usr/bin/rsync为rsync的实际安装路径,可以通过#rpm –ql rsync查找到;
rsync服务器的配置文件为/etc/rsyncd.conf
# vi /etc/rsyncd.conf
编辑如下内容:
uid = backup ——备份用户
read only = true ——是否只读,只读的话,只将主服
务器备份到备份服务器
use chroot = true ——设置成true,降低安全风险
transfer logging = true ——传输日志是否打印
log format = %h %o %f %l %b ——日志格式,%h显示下面备份服务器的
hostname,需要将其ip在/etc/hosts中配置ip与host对应关系
log file = /var/log/rsyncd.log ——日志文件
pid file = /var/run/rsyncd.pid ——pid文件路径
hosts allow = 10.0.64.137 ——备份服务器ip,只允许该服务器备份
slp refresh = 300
[testDir] ——模板名,可以配置多个模板,需包含其内
部配置
path = /test ——备份路径
comment = testDir ——模板描述
auth users = backup ——授权备份用户
secrets file = /etc/rsyncd.secrets ——备份用户密码存储文件
编辑备份用户密码
vi /etc/rsyncd.secrets
加入如下内容
backup:passwd
【注】::前面为用户名,后面为其密码
3.3 主服务器配置启动rsync守护进程
3.3.1自动启动rsync
执行如下命令
# chkconfig -s rsyncd on
【注】:开机会自动启动。
3.3.2手动启动rsync
执行如下命令
启动
# service rsyncd start
停止
#service rsyncd stop
查看状态
#service rsyncd status
3.4 备份服务器配置rsync
如果/test目录不存在,需创建备份目录
# mkdir /test
编写一个同步备份脚本,存放在home目录下
# vi /home/backup.sh
rsync -vzrotpg --progress --delete --ignore-errors [email protected]::testDir --password-file=/home/password.rsync /test
--ignore-errors 即使出现 I/O 错误也进行删除
http://heylinux.com/archives/1618.html
解决rsync同步时报IO错误导致无法删除文件的问题
给脚本赋755权限
# cd /home
# chmod 755 backup.sh
创建密码文件存放于/home/password.rsync
# vi /home/password.rsync
输入如下密码内容
passwd
【注】:密码为主服务器定义的backup用户的密码
密码文件赋600权限
# cd /home
#chmod 600 password.rsync
3.5 备份服务器配置定时备份任务
#crontab –e
* 18 * * * /bin/sh /home/backup.sh
【注】:crontab命令格式: * * * * * /command path
前5个字段分别表示:
分钟:0-59
小时:1-23
日期:1-31
月份:1-12
星期:0-6(0表示周日)
还可以用一些特殊符号:
*: 表示任何时刻
,: 表示分割
-:表示一个段,如第二端里: 1-5,就表示1到5点
/n : 表示每个n的单位执行一次,如第二段里,*/1, 就表示每隔1个小时执行一次命令。也可以写成1-23/1.
$/usr/local/bin/rsync --daemon
failed to create pid file /var/run/rsyncd.pid: Permission denied
需要root权限
$ sudo /usr/local/bin/rsync –daemon
下面,顺便附上rsync的常用参数选项,方便大家参考:
选项 | 说明 |
-a, --archive | 归档模式,表示以递归方式传输文件,并保持所有文件属性,等价于 -rlptgoD (不包括 -H) |
-r, --recursive | 对子目录以递归模式处理 |
-l, --links | 保持符号链接文件 |
-H, --hard-links | 保持硬链接文件 |
-p, --perms | 保持文件权限 |
-t, --times | 保持文件时间信息 |
-g, --group | 保持文件属组信息 |
-o, --owner | 保持文件属主信息 (super-user only) |
-D | 保持设备文件和特殊文件 (super-user only) |
-z, --compress | 在传输文件时进行压缩处理 |
--exclude=PATTERN | 指定排除一个不需要传输的文件匹配模式 |
--exclude-from=FILE | 从 FILE 中读取排除规则 |
--include=PATTERN | 指定需要传输的文件匹配模式 |
--include-from=FILE | 从 FILE 中读取包含规则 |
--copy-unsafe-links | 拷贝指向SRC路径目录树以外的链接文件 |
--safe-links | 忽略指向SRC路径目录树以外的链接文件(默认) |
--existing | 仅仅更新那些已经存在于接收端的文件,而不备份那些新创建的文件 |
--ignore-existing | 忽略那些已经存在于接收端的文件,仅备份那些新创建的文件 |
-b, --backup | 当有变化时,对目标目录中的旧版文件进行备份 |
--backup-dir=DIR | 与 -b 结合使用,将备份的文件存到 DIR 目录中 |
--link-dest=DIR | 当文件未改变时基于 DIR 创建硬链接文件 |
--delete | 删除那些接收端还有而发送端已经不存在的文件 |
--delete-before | 接收者在传输之前进行删除操作 (默认) |
--delete-during | 接收者在传输过程中进行删除操作 |
--delete-after | 接收者在传输之后进行删除操作 |
--delete-excluded | 在接收方同时删除被排除的文件 |
-e, --rsh=COMMAND | 指定替代 rsh 的 shell 程序 |
--ignore-errors | 即使出现 I/O 错误也进行删除 |
--partial | 保留那些因故没有完全传输的文件,以是加快随后的再次传输 |
--progress | 在传输时显示传输过程 |
-P | 等价于 --partial --progress |
--delay-updates | 将正在更新的文件先保存到一个临时目录(默认为 “.~tmp~”),待传输完毕再更新目标文件 |
-v, --verbose | 详细输出模式 |
-q, --quiet | 精简输出模式 |
-h, --human-readable | 输出文件大小使用易读的单位(如,K,M等) |
-n, --dry-run | 显示哪些文件将被传输 |
--list-only | 仅仅列出文件而不进行复制 |
--rsyncpath=PROGRAM | 指定远程服务器上的 rsync 命令所在路径 |
--password-file=FILE | 从 FILE 中读取口令,以避免在终端上输入口令,通常在 cron 中连接 rsync 服务器时使用 |
-4, --ipv4 | 使用 IPv4 |
-6, --ipv6 | 使用 IPv6 |
--version | 打印版本信息 |
--help | 显示帮助信息 |
注意:
若使用普通用户身份运行 rsync 命令,同步后的文件的属主将改变为这个普通用户身份。
若使用超级用户身份运行 rsync 命令,同步后的文件的属主将保持原来的用户身份。