linux rsync实现两个目录的同步

来源:互联网 发布:c语言全排列函数 编辑:程序博客网 时间:2024/04/27 15:05

需求:

生产库的图片放到了服务器的/image目录下,图片很重要啊,千万不能有啥闪失,所以要备份。

第一个念想是将其拷贝一份到其他目录,但又怕服务器莫名其妙的给挂掉了,所以要备份到其他服务器上,这样安全系数才高点。

/image目录很大,且里面经常有图片更新,还要同步到其他服务器上一份,鉴于这种需求,毅然决然的选择了rsync,虽说这不一定是最好的选择,但它能够实现以上需求就够了。


rsync 简介:

rsync是类unix系统下的数据镜像备份工具,可以实现两个目录下的内容同步

优点:

1.能镜像整个目录树和文件系统

2.能保持镜像后的文件权限,时间和软硬连接不变

3.安装简单

4.支持scp以及ssh等方式安全的传输文件


操作环境:

192.168.1.60  server
192.168.1.92  client

要将192.168.1.60:/image下的内容同步到192.168.1.92:/image下
让60机器做Server,92机器做client,60主动将/image下的内容同步到92上


server端配置


1.检查是否安装了rsync包
[root@pw ~]# rpm -qa |grep rsync
rsync-2.6.8-3.1

2.在/etc目录下添加rsyncd.conf 

[root@test1 ~]# vi /etc/rsyncd.conf 
uid = nobody
gid = nobody
max connections = 4   # 最大能让4个client连接
timeout = 600
use chroot = no
read only = yes
pid file=/var/run/rsyncd.pid
log file=/var/log/rsyncd.log
lock file=/var/log/rsyncd.lock


#rsync config
[rsync_image]
path = /image           # 要同步的目录
ignore errors
read only=true         # 权限为只读
list=false
hosts allow =192.168.1.92  # 允许的主机ip地址
hosts deny=0.0.0.0/32
auth users=pw                # 认证用户
secrets file=/etc/pw.pass   # 密码文件


以上内容可以通过man rsync.conf获得


3.定义密码文件
# vi /etc/pw.pass
 pw:pw123


# chmod 400 /etc/pw.pass


4.rsync服务器启动的方式


/usr/bin/rsync --daemon


rsync服务使用的端口是873,可以通过netstat -n |grep 873来看一下服务是否已经启动


[root@pw ~]# /usr/bin/rsync --daemon
[root@pw ~]# netstat -an |grep 873
tcp        0      0 0.0.0.0:873                 0.0.0.0:*                   LISTEN      
tcp        0      0 :::873                      :::*                        LISTEN 


*****************
client端配置

1.创建client端密码文件
# vi /etc/rsync_client.pass
pw123

# chmod 600 /etc/rsync_client.pass 

2.同步命令:
/usr/bin/rsync  -vzrtopg  --progress  --delete  --password-file=/etc/rsync_client.pass  pw@192.168.1.60::rsync_image  /image


参数说明:
   -vzrtopg里的
             v是verbose详细模式输出
             z是压缩
             r是recursive递归
             topg都是保持文件原有属性如属主、时间的参数
   --progress
              是指显示出详细的进度情况
    --delete  
              是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致             
   --exclude="*.tmp"
               不包含某些文件  
   --execlude-from= 排除不需要同步的目录
   --password-file
                指定CLIENT端密码文件存放路径


同步命令的格式为:/usr/bin/rsync  -参数  用户名@同步服务器的IP::rsyncd.conf中那个方括号里的内容  本地存放路径

3.将同步命令加入到机会任务中,实现定时同步

# crontab -e

30 23 * * *  /usr/bin/rsync  -vzrtopg  --progress  --delete  --password-file=/etc/rsync_client.pass  pw@192.168.1.60::rsync_image  /image  > /dev/null  2>&1