文件同步rsync

2017-11-20  本文已影响54人  狗狗胖妞

rsync介绍

我们经常需要在不同目录或者服务器之间做文件同步和更新,LINUX提供了很多内置命令可以使用比如SCP等等,但是今天我们介绍一个更加强大的工具rsync。rsync命令是一个远程同步工具,可以通过LAN\WAN快速同步多台主机间的文件,它使用的就是rsync算法达到本地和远程两个主机之间文件同步,该算法是增量算法,即只同步两个文件的不同部分,而不是每次同步整个文件,所以速度是相当快

一. 同步源

1. 基于SSH的同步源

setfacl
rsync -avz 用户名@服务器地址:/服务器目录/*  /本地目录/

2. 基于RSYNC的同步源

/etc/rsyncd.conf
/etc/rsyncd_users.db    权限为600

上行同步时,read only = no  且 nobody需要有写入权限

/etc/rsyncd.conf文件:

address = 192.168.0.198
port 873
pid file = /var/run/rsyncd.pid
log file = /var/log/rsync.log

[share]
        comment = soft
        path = /server/rsync
        read only = no
        dont compress = *.gz *.bz *.bz2 *.zip
        auth users = wang
        secrets file = /etc/rsyncd_users.db

对rsyncd.conf文件选项个别解释(上面有的没有写):

uid 指定当前模块传输文件时的守护进程应该具有的用户ID,默认是"nobody"
gid 指定当前模块传输文件时守护进程应该具有的用户组ID,默认是"nobody"
max_connections 指定模块的最大并发连接数量,以保护服务器超过限制的连接请求,将被暂时限制。默认是0,也就是没有限制。

/etc/rsyncd_users.db文件格式为: wang:123456
启动rsync守护进程:/usr/bin/rsync --daemon

权限: 服务权限 --> 用户权限,即只有服务权限还不行,必须还要有用户权限

rsync命令的用法:
基本格式: rsync [选项] 原始位置 目标位置

rsync的命令格式可以为:
  1. rsync [OPTION]... SRC [SRC]... DEST
  2. rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST
  3. rsync [OPTION]... [USER@]HOST:SRC DEST
  4. rsync [OPTION]... [USER@]HOST::SRC [DEST]
  5. rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST
  6. rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]
  rsync有六种不同的工作模式:
  1. 拷贝本地文件;当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式。
  2.使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号":"分隔符时启动该模式。
  3.使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。
  4. 从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。
  5. 从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启该模式。
  6. 列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信种工作模式。

常用选项:
-a :归档模式,递归并保留对象属性,等同于 -rlptgoD
-v : 显示同步过程的详细(verbose)信息
-z : 在传输文件时进行压缩(compress)
-H : 保留硬连接文件
-A : 保留ACL属性信息
--delete : 删除目标位置有而原始位置没有的文件
--timeout : 指定超时时间
--progress : 显示备份过程
--port :指定rsync服务端口
--password-file :指定客户端的密码文件

-a ::
-r : 递归模式,包含文件目录及子目录中所有文件
-l : 对于符号链接文件仍然复制为符号链接文件
-p : 保留文件的权限标记
-t : 保留文件的时间标记
-g : 保留文件的属组标记(仅超级用户使用)
-o : 保留文件的属主标记(仅超级用户使用)
-D : 保留设备文件及其他特殊文件

二. 实时同步

免密码验证
1. 基于SSH的同步源
  通过秘钥对实现
2. 基于RSYNC同步源
  通过系统变量实现,export RSYNC_PASSWORD=123456

实时同步 inotify+rsync

1. 安装inotify-tools辅助工具
  inotifywait :用于持续监控,实时输出结果
  inotifywatch :用于短期监控,任务完成后再出结果

inotifywait -mrq -e create,delete /server/rsync
m:持续监控 r:递归监控 即:监控目录及其子目录的内容
q:简化输出

2.首先实现免密码验证,在执行下面的脚本文件

#!/bin/bash
a="/usr/local/bin/inotifywait -mrq -e create,delete /tmp/test1"
b="/usr/bin/rsync -avz /tmp/test1/* user1@192.168.0.162:/tmp/test2/"
$a | while read directory event file   
do
        $b
done

三. 双向同步inotify+unison

windows使用rsync:

参考文章:https://www.cnblogs.com/janas/p/3321087.html

上一篇下一篇

猜你喜欢

热点阅读