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