分类: LINUX
2014-02-19 16:04:46
Rsync
复制目录跟复制目录斜杠有区别的。
[root@localhost home]# rsync -av cacti /tmp
building file list ... done
cacti/
cacti/.bash_logout
cacti/.bash_profile
cacti/.bashrc
cacti/.emacs
cacti/.kde/
cacti/.kde/Autostart/
cacti/.kde/Autostart/.directory
cacti/.mozilla/
cacti/.mozilla/extensions/
cacti/.mozilla/plugins/
sent 1752 bytes received 166 bytes 3836.00 bytes/sec
total size is 1229 speedup is 0.64
[root@localhost home]# ls -ld /tmp
drwxrwxrwt 7 root root 4096 06-14 06:10 /tmp
[root@localhost home]# ls /tmp
cacti tcmalloc tcmalloc.22393 tcmalloc.22815
gconfd-root tcmalloc.22391 tcmalloc.22394 tcmalloc.22816
scim-panel-socket:0-root tcmalloc.22392 tcmalloc.22814 tcmalloc.22817
[root@localhost home]# rsync -av cacti/ /tmp
building file list ... done
./
.bash_logout
.bash_profile
.bashrc
.emacs
.kde/
.kde/Autostart/
.kde/Autostart/.directory
.mozilla/
.mozilla/extensions/
.mozilla/plugins/
sent 1746 bytes received 166 bytes 3824.00 bytes/sec
total size is 1229 speedup is 0.64
[root@localhost home]# ls /tmp
cacti tcmalloc tcmalloc.22393 tcmalloc.22815
gconfd-root tcmalloc.22391 tcmalloc.22394 tcmalloc.22816
scim-panel-socket:0-root tcmalloc.22392 tcmalloc.22814 tcmalloc.22817
远程shell,把复制的目录拷贝到另一个系统上。
[root@localhost home]# rsync -av cacti 192.168.1.13:test
The authenticity of host '192.168.1.13 (192.168.1.13)' can't be established.
RSA key fingerprint is 3b:80:e1:a5:4c:c4:f9:32:f1:7a:c9:28:32:99:4c:3e.
Are you sure you want to continue connecting (yes/no)? Yes
Rsync跟ls命令相似?
[root@localhost home]# rsync -a 192.168.1.13:test
root@192.168.1.13's password:
drwxr-xr-x 4096 2013/05/30 07:48:40 test
drwx------ 4096 2013/04/12 18:55:20 test/cacti
一.实验:rsync容错实验
A:192.168.1.163
B:192.168.1.13
A的配置:默认情况下没有/etc/rsyncd.conf,需要手动创建;
uid = nobody //备份以什么身份进行,用户ID
gid = nobody //备份以什么身份进行,组ID
#注意这个用户ID和组ID,可以设置成root,这样rsync几乎就可以读取任何文件及目录,但是也带来安全隐患。建议设置成只能读取你要备份的目录和文件即可。
use chroot = no //是否限制在指定目录,为了安装,一般需要启动
max_connections = 10 //最大连接数,0表示没有限制
strict modes = yes //是否检查口令文件的权限
port = 873 //默认端口873
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
#定义模块
[name] //这里是认证的模块名,在client端需要指定
path = /tmp //需要备份的目录,不可缺少
comment = name file //这个模块的注释信息
ignore errors #忽略i/o错误
read only = on
write only = on
hosts allow = *
hosts deny = 192.168.1.14
list = false //需要建立隐藏文件设置false(不允许列文件)
#exclude = test/ test.php //设置不同步的目录或文件用空格隔开
uid = root
gid = root
auth users = cacti
#auth users = msyn //认证的用户名,如果没有这行,则表明是匿名
secrets file = /etc/server.pass //认证文件名,用来存放密码
创建/etc/server.pass;配置rsync密码(在上边的配置文件中已经写好路径) server.pas(名字随便写,只要和上边配置文件里的一致即可),格式(一行一个用户)
账号:密码
cacti:123
#需要将rsyncd.secrets更改权限。将rsyncd.secrets这个密码文件的文件属性设为root拥有, 且权限要设为600, 否则无法备份成功!
#执行命令:chmod 600 /etc/rsyncd/server/rsyncd.secrets
需要开启:rsyncd的守护进程
[root@localhost home]# /usr/local/bin/rsync --daemon
[root@localhost home]# ps -ef |grep rsync
root 31575 1 0 06:57 ? 00:00:00 /usr/local/bin/rsync --daemon
启动使rsync生效:/usr/local/bin/rsync --daemon --config=/etc/rsyncd.conf;
Tip:这里的启动方式比较特殊,如果你要重启,需要kill掉rsync的进程,再重新运行!
另外还有另外一种启动rsync的方式,CentOS 默认以 xinetd 方式运行 rsync 服务。rsync 的 xinetd 配置文件在 /etc/xinetd.d/rsync
要配置以 xinetd 运行的 rsync 服务需要执行如下的命令:
#配置文件xinetd.d/rsync
# default: off
# description: The rsync server is a good addition to an ftp server, as it \
# allows crc checksumming etc.
service rsync
{
disable = no
flags = IPv6
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon --config=/etc/rsyncd.conf #这里添加rsync的服务选项
log_on_failure += USERID
}
~
B:配置
[root@localhost home]# rsync -vzrtopg --delete --progress --exclude "*access" --exclude "debug*" cacti@192.168.1.163::name /home/tmp --password-file=/etc/server.pass
[root@localhost home]#chmod /etc/server.pass
[root@localhost home]#chmod 600 /etc/server.pass
同步结果:/home/tmp
-v --verbose详细模式输出;
-z --compress,对传输时对备份的文件进行压缩处理;
-r --recursive 对子目录以递归模式处理
-t --time 保持文件时间的信息
-o --owner 用来保持文件属主信息
-p --perms 用来保持文件权限
-g --group 用来保持文件的属组信息
--delete 以rsync服务器端为基准进行数据镜像同步、c与s的目录要一直;
--progress 用于显示数据镜像同步的过程;
--exclude 用于排除不需要传输的文件类型
cacti@192.168.1.163::name 表示对服务器192.168.1.163中的name模块进行备份,也就是指定备份的模块。Cacti表示使用“cacti”这个用户对该模块进行备份。
/home/tmp 用于指定备份文件在客户端的存放路径
二.Rsync和inotify实时同步系统2.6.13以上的支持inotify
[root@localhost tmp]# uname -r
2.6.18-194.el5xen
[root@localhost tmp]# ll /proc/sys/fs/inotify
总计 0
-rw-r--r-- 1 root root 0 06-14 07:50 max_queued_events
-rw-r--r-- 1 root root 0 06-14 07:50 max_user_instances
-rw-r--r-- 1 root root 0 06-14 07:50 max_user_watches
安装文件:inotify
[root@localhost home]# tar -zxvf inotify-tools-3.14.tar.gz
[root@localhost inotify-tools-3.14]# ./configure
[root@localhost inotify-tools-3.14]# make && make install
安装之后会生成两个文件:
[root@localhost inotify-tools-3.14]# ll /usr/local/bin/inotifywa*
-rwxr-xr-x 1 root root 37236 06-14 08:06 /usr/local/bin/inotifywait
-rwxr-xr-x 1 root root 35426 06-14 08:06 /usr/local/bin/inotifywatch
Inotifywait用于等待文件或文件集上的一个特定事件,可以监控任何文件和目录设置,并且可以递归地监控整个目录树;inotifywait用于收集被监控的文件系统统计数据,包括每个inotify事件发生多少次等信息。
&配置内容发布节点;
#!/bin/bash
#!/bin/bash
host1=192.168.1.12
host2=192.168.1.13
host3=192.168.1.14
src=/web/wwwroot/
dst1=web1
dst2=web2
dst3=web3
user1=web1user
user2=web2user
user3=web3user
/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,
delete,create,attrib $src \
while read files
do
/usr/bin/rsync -vzrtopg --delete --progress --password-file=/etc/server.pass $src $user1@$host1::$dst1
/usr/bin/rsync -vzrtopg --delete --progress --password-file=/etc/server.pass $src $user2@$host2::$dst2
/usr/bin/rsync -vzrtopg --delete --progress --password-file=/etc/server.pass $src $user3@$host3::$dst3
echo "${files} was rsynced" >>/tmp/rsync.log 2>&1
done