文件同步 RSYNC
数据同步
本机:cp、ln、dd、dump、mount crond
局域网:scp、sftp、samba、ftp、web
弊端:
1、 本地执行
2、 完整复制,效率低
3、 没有实时同步
一、文件同步
1、 核心算法:rsync算法
弱校验:32位
强校验:128位
2、 构建方式: ssh、rsync
二、SSH同步源
同步源:
Setfacl 设置访问用户的权限
[root@CentOS1 ssh]# setfacl -m u:zhangsan:rwx .
发起端:
Rsync -avz 用户@服务器地址:/服务器端目录/本地目录 下行
[root@CentOS2 var]# rsync -avz zhangsan@192.168.10.10:/var/ssh//var/ssh-c/
Rsync -avz /本地目录 用户@服务器地址:/服务器端目录 上行
[root@CentOS2 ssh-c]# rsync -axz /var/ssh-c/*zhangsan@192.168.10.10:/var/ssh/
三、RSYNC的同步源
同步源:
vim/etc/rsyncd.conf,写入下面的语句
1 port
2 log file =/var/log/rsyncd.log
3 pid file =/var/run/rsyncd.pid
4
5 [share]
6 comment = rsync server
7 path = /var/rsync
8 read only = yes
9 dont compress = *.gz *.bz2 *.zip
10 Auth users = aa
11 secrets file = /etc/rsyncd_users.db(文件必须为600权限)
Vim/etc/rsync_user.db
#新建用户文件,里面写 aa:123456 #(用户名:密码)
rsync –daemon
#以进程的方式去启动
netstat –anpt #查询启动进程
tcp 0 0 :::873 :::* LISTEN 2046/rsync (873端口)
发起端:
Rsync–avz 用户@服务器地址::共享名 /本地目录
[root@CentOS2 rsync-c]# rsync -avz aa@192.168.10.10::share /var/rsync-c/
(此处报错是因为rsync_users.db文件的权限,必须要将其修改为600)
[root@CentOS2 etc]# chmod 600 rsyncd_users.db
Rsync–avz rsync://用户@服务器地址/共享目录/本地目录
[root@CentOS2 rsync-c]# rsync -avz rsync://aa@192.168.10.10/share/var/rsync-c/
--delete 强制同步 (可以查看到同步源刚刚的操作【镜像】)
[root@CentOS2 rsync-c]# rsync -avz --deletersync://aa@192.168.10.10/share /var/rsync-c/
四、免密码验证:
SSH同步源:
[root@CentOS2 rsync-c]# su – client #切换用户
ssh-keygen -t rsa #生成秘钥对
[client@CentOS2 ~]$ ssh-keygen -t rsa
Generatingpublic/private rsa key pair.
Enterfile in which to save the key (/home/client/.ssh/id_rsa):
Createddirectory '/home/client/.ssh'.
Enterpassphrase (empty for no passphrase):
Entersame passphrase again:
Youridentification has been saved in /home/client/.ssh/id_rsa.
Yourpublic key has been saved in /home/client/.ssh/id_rsa.pub.
Thekey fingerprint is:
2e:98:46:f3:b7:6d:45:b3:86:4c:17:44:72:01:52:9bclient@CentOS2
Thekey's randomart image is:
+--[RSA 2048]----+
| ..++=. |
| . =. |
| E . |
| . + |
| o So + o |
| . =. o + |
| + o o o |
| . oo. |
| ... |
+-----------------+
ssh-copy-id服务器用户@服务器地址
[client@CentOS2~]$ ssh-copy-id server@192.168.10.10
The authenticity of host '192.168.10.10(192.168.10.10)' can't be established.
RSA key fingerprint isdc:fa:91:2d:0e:e8:f3:8a:98:5c:28:62:e8:9f:12:2e.
Are you sure you want to continueconnecting (yes/no)? yes
Warning: Permanently added'192.168.10.10' (RSA) to the list of known hosts.
server@192.168.10.10's password:
Nowtry logging into the machine, with "ssh 'server@192.168.10.10'", andcheck in:
.ssh/authorized_keys
tomake sure we haven't added extra keys that you weren't expecting.
[client@CentOS2~]$ ssh server@192.168.26.251 #登录验证免密码生效
cd/home/client
rsync–avz 服务器用户@服务器地址:/目录 /本地目录
[client@CentOS2 ~]$ cd /home/client/
[client@CentOS2~]$ pwd
/home/client
[client@CentOS2~]$ rsync -avz server@192.168.10.10:/var/ssh/* .
RSYNC同步源:
exportRSYNC_PASSWORD=密码
[root@CentOS2 rsync-c]# export RSYNC_PASSWD=666666 #export声明全局变量
[root@CentOS2rsync-c]# rsync -axz --delete rsync://aa@192.168.10.10/share /var/rsync-c/
五、RSYNC+INOTIFY(同步和实时监测)
建脚本文件:
1 #!/bin/bash
2 a="inotifywait -mrq -ecreate.delete /var/ssh-c
3 b="rsync -avz /var/ssh-c/*zhangsan@192.168.10.10:/var/ssh/"
4
5 $a | while read directoryevent file
6 du
7 $b
8
免密码验证:
ssh-keygen -t rsa
ssh-copy-id zhangsan@192.168.10.10
cd/var
vim1.sh
#!/bin/bash
a=”inotifywait–mrq -e create,delete /var/ssh-c”
b=”rsync–avz /var/ssh-c/* zhangsan@192.168.10.10:/var/ssh”
$a| while read directory event file
do
$b
Done
bash1.sh &
测试
六、UNISON+INOTIFY
服务器1:
useraddserver
madir/tmp/server
su– server
ssh-keyken –t rsa
ssh-copy-idclient@192.168.10.10
服务器2:
useraddclient
mkdir/tmp/client
su– client
ssh-keyken –t rsa
ssh-copy-idserver@192.168.10.10
安装软件(服务器都要做):
inotify
./configure&& make install
unison
makeUNSTYLE THREADS=ture STATIC=ture
cpunison /usr/local/bin
配置脚本:
#!/bin/bash
a=”inotifywait –mrq -e carete,delete /tmp/server”
b=”unsion -batch /tmp/server/ ssh://client@192.168.10.10//tmp/client”
$a| while read directory event file
do
$b
done