rsync同步

1.若有rsync,不需要配置就可以简单实用

#sudo rsync -av  /home  192.168.1.1:/data/home

2,server配置后在使用

[back_home]  #模块它为我们提供了一个链接的名字,在本模块中链接到了/home目录;要用[name] 形式  
    path = /home    #指定文件目录所在位置,这是必须指定的 
  auth users = root   #认证用户是root  ,是必须在服务器上存在的用户
  list=yes   #list 意思是把rsync 服务器上提供同步数据的目录在服务器上模块是否显示列出来。默认是yes 。
                如果你不想列出来就no,比较安全的,别人不知道你的服务器上提供了哪些目录;
  ignore errors  #忽略IO错误
  secrets file = /etc/rs.passwd   #密码存在哪个文件
  comment = linuxsir home  data  #注释可以自己定义
  exclude = ext1/ ext2/   #ext1\ext2目录排除,即不同步这2个目录     
#sudo echo "root:123456" >> etc/rs.passwd #设置账号密码,多个账号密码,设置多行,并且账号是系统上存在的
#sudo  chmod 600 /etc/rs.passwd
#sudo /usr/bin/rsync --daemon  --config=/etc/rsyncd/rsyncd.conf  #启动rsync服务


3.client

rsync中的参数  
    -a 以archive模式操作、复制目录、符号连接 相当于-rlptgoD
    -r 是递归 
  -l 是链接文件,意思是拷贝链接文件;
    -p 表示保持文件原有权限;
    -t 保持文件原有时间;
    -g 保持文件原有用户组;
    -o 保持文件原有属主;
    -D 相当于块设备文件;
  -z 传输时压缩;
  -P 传输进度;
  -v 传输时的进度等信息,和-P有点关系,自己试试。可以看文档;
  -e ssh的参数建立起加密的连接。
  -u只进行更新,防止本地新文件被重写,注意两者机器的时钟的同时
  --progress是指显示出详细的进度情况
  --delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致
  --password-file=/password/path/file来指定密码文件,这样就可以在脚本中使用而无需交互式地输入验证密码了,
这里需要注意的是这份密码文件权限属性要设得只有属主可读。

#sudo rsync  --list-only  [email protected]::            #查看服务器提供的的数据源
#sudo rsync  --list-only  [email protected]::::back_home #查看back_home里的文件
#sudo rsync -avzP [email protected]::back_home  /data/home #备份源back_home到本地的home
#sudo rsync -avzP --delete  --password-file=rs.paswd   [email protected]::back_home  /data/home
#同步源back_home到本地的home并保持内容一致,并指定密码文件,内容就是密码,这样就不用输入密码了,适合自动和任务
#echo  '123456' > ./rs.passwd
#sudo  chmod 600   rs.passwd

4,及时同步:

下载源码包http://sourceforge.net/projects/inotify-tools/
#./configure &&make && sudo  make install
或yum install inotify-tools
或apt-get install  inotify-tools
#同步脚本如下:
#sudo cat inotify.sh
HOST=192.168.1.1
SRC=/home
DST=/data/home
USER=root
 
/usr/local/bin/inotifywait -mrq  -e modify,delete,create,attrib $SRC | while read files
do
   /usr/bin/rsync -avzP --delete --progress --password-file=rs.passwd $SRC $USER@$HOST::$DST
   echo "${files} was rsynced">>/tmp/rsync.log 2>&1
done

5.也可以参考下unison双休同步,无需配置,sudo apt-get install unison

SRC="/home/"
DST="/data/home/"
IP="[email protected]"
/usr/bin/unison  --bath -sshargs "-i  /home/kkk/.ssh/id_rsa" $SRC  ssh://$IP/$DST


你可能感兴趣的:(同步,推送,rsync,unison)