rsync同步

jopen 10年前

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  root@192.168.1.1::            #查看服务器提供的的数据源  #sudo rsync  --list-only  root@192.168.1.1::::back_home #查看back_home里的文件  #sudo rsync -avzP root@192.168.1.1::back_home  /data/home #备份源back_home到本地的home  #sudo rsync -avzP --delete  --password-file=rs.paswd   root@192.168.1.1::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="root@192.168.1.1"  /usr/bin/unison  --bath -sshargs "-i  /home/kkk/.ssh/id_rsa" $SRC  ssh://$IP/$DST