rsync远程同步

rsync(Remote Sync) 是一个Unix/linux系统下的文件同步和传输工具。Rsync通过“rsync算法”提供了一个客户机和远程文件服务器的文件同步的快速方法。每次只传送两个文件的不同部分(即支持增量备份),而不是每次都整份传送

rsync 包括如下的一些特性:

能更新整个目录树和文件系统;
有选择性的保持符号链链、硬链接、文件属性、权限、设备以及时间等;

传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用。
能用rsh、ssh 或直接端口做为传输端口;
支持匿名rsync 同步文件,是理想的镜像工具; 

Rsync可以通过rshssh使用,也能以daemon模式去运行,在以daemon方式运行时Rsync server会打开一个873端口,等待客户端去连接。

格式:rsync 【选项】 源文件 目标文件

常见的选项:

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

-r,�Crecursive 对子目录以递归模式处理

-l,--links 表示拷贝链接文件

-p , --perms 表示保持文件原有权限

-t , --times 表示保持文件原有时间

-g , --group 表示保持文件原有属用户组

-o , --owner 表示保持文件原有属主

-D , --devices 表示块设备文件信息

-z , --compress 表示压缩传输

-H 表示硬连接文件

-A 保留ACL属性信息

-P 显示传输进度

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

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

--delete 删除那些目标位置有而原始位置没有的文件

--password-file=FILE FILE中得到密码
--bwlimit=KBPS 限制I/O带宽,KBytes /second

--filter 文件名”需要过滤的文件

--exclude= :需要过滤的文件

-v 显示同步过程的详细信息

基于本地rsync同步

[root@localhost ~]# mkdir /todir

[root@localhost ~]# rsync -a /boot /todir/     //将boot文件夹复制到/todir/

[root@localhost ~]# ls /todir/

boot

[root@localhost ~]# rm -rf /todir/*

[root@localhost ~]# ls /todir/

[root@localhost ~]# rsync -a /boot/ /todir/ //将boot下的文件复制到/todir

[root@localhost ~]# ls /todir/

config-2.6.18-348.el5      symvers-2.6.18-348.el5.gz

grub                       System.map-2.6.18-348.el5

initrd-2.6.18-348.el5.img  vmlinuz-2.6.18-348.el5

lost+found

[root@localhost boot]# rsync -av /boot/ /todir/ --delete    //删除那些目标位置有而原始位置没有的文件

基于网络的rsync

基于SSH服务

[root@localhost ~]# mkdir /fromssh

[root@localhost ~]# rsync -az [email protected]:/boot/ /fromssh/    //-z表示压缩后复制

[root@localhost ~]# rsync -az /etc [email protected]:/opt/

[email protected]'s password: 



基于RSYNC服务

[root@localhost ~]# rpm -q rsync

rsync-3.0.6-4.el5_7.1

[root@localhost ~]# cat /etc/rsyncd_users.db    //创建认证用户

ruser:pwd@123

[root@localhost ~]# chmod 600 /etc/rsyncd_users.db //必须要指定权限

[root@localhost ~]# cat /etc/rsyncd.conf     //rsync的主配置文件

uid = nobody

gid = nobody

use chroot = yes        //将用户锁定在根目录

log file = /var/log/rsyncd.log    //日志文件路径

pid file = /var/run/rsyncd.pid    //pid文件

[tools]        //共享名

        path = /usr/src    //路径

        read only = yes    //只读权限

        dont compress =*.gz *.bz2 *.tgz *.zip    //过滤内容

        auth users = ruser    //指定认证用户

        secrets file = /etc/rsyncd_users.db    //认证用户文件

[root@localhost ~]# chkconfig rsync on

[root@localhost ~]# service xinetd restart    //启动服务

[root@localhost ~]# netstat -ln | grep :873    //默认端口为873

tcp        0      0 0.0.0.0:873                 0.0.0.0:*           LISTEN      

客户端:

[root@test1 ~]# rsync [email protected]::tools    //两个::表示基于rsync

[root@test1 ~]# mkdir -p /data/fromrsync

[root@test1 ~]# rsync -avz --delete [email protected]::tools /data/fromrsync/

扩展:

触发同步脚本

[root@node1 ~]# yum -y install gcc* httpd    //安装依赖软件包

[root@node1 ~]# tar -zxvf inotify-tools-3.14.tar.gz -C /usr/src/    //解压安装

[root@node1 ~]# cd /usr/src/inotify-tools-3.14/

[root@node1 inotify-tools-3.14]# ./configure 

[root@node1 inotify-tools-3.14]# make

[root@node1 inotify-tools-3.14]# make install

[root@node1 inotify-tools-3.14]# service portmap restart    

[root@node1 inotify-tools-3.14]# chkconfig portmap on

[root@node1 inotify-tools-3.14]# mkdir -p /data/nfsdir

[root@node1 inotify-tools-3.14]# grep nfs /etc/fstab 

192.168.100.20:/webbak/www1     /data/nfsdir    nfs     defaults        0 0

[root@node1 inotify-tools-3.14]# mount -a

[root@node1 inotify-tools-3.14]# df -hT | grep nfs

               nfs    7.6G  1.1G  6.1G  16% /data/nfsdir

[root@node1 ~]# cat /usr/bin/in_rsync.sh

#!/bin/bash

/usr/local/bin/inotifywait -mrq -e modify,create,move,delete /var/www/html | while read DIR EVENT FILE

do

/usr/bin/rsync -aHvz --delete /var/www/html/ /data/nfsdir

done

//脚本表示监控/var/www/html目录,如果这个目录下有更改,写入,移动,删除动作的时候触发/usr/bin/rsync -aHvz --delete /var/www/html/ /data/nfsdir操作

[root@node1 ~]# chmod 700 /usr/bin/in_rsync.sh    //给予x权限

[root@node1 ~]# echo "/usr/bin/in_rsync.sh" >> /etc/rc.local     //写入开机启动

你可能感兴趣的:(同步,rsync,远程)