使用rsync同步文件

rsync :3.0.6-1ubuntu1.1

1.安装或更新到最新的rsync
sudo apt-get install rsync
服务器端
2.根据样例创建配置文件
sudo cp /usr/share/doc/rsync/examples/rsyncd.conf /etc/
查看配置文件
grep -v "#" /etc/rsyncd.conf
log file=/var/log/rsyncd
pid file=/var/run/rsyncd.pid
syslog facility=daemon
[webbak]
        comment = comet website
        path = /home/ftpsite/comet
        use chroot = no
        lock file = /var/lock/rsyncd
        read only = yes
        list = yes
        uid = nobody
        gid = nogroup
        auth users = comet
        secrets file = /etc/rsyncd.secrets
        strict modes = yes
        hosts allow = 192.168.1.0/24
        ignore errors = yes
        ignore nonreadable = yes
        transfer logging = no
        timeout = 600
        refuse options = checksum dry-run
        dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz
配置文件说明:
port = 873:端口号,默认是873
address = 192.168.1.1:服务器所使用的IP
log file:服务器日志文件路径
pid file:判断rsync是否运行的pid文件
syslog facility:系统日志记录的级别
[webbak]:这里是模块的名称,客户端链接的时候要用到
        comment:模块注释
        path:路径
        use chroot:使用chroot,在传输文件之前,服务器守护程序将chroot到文件系统的目录中,这样做的好处是可以避免系统被安装漏洞侵袭的可能。缺点是需要超级用户root的权限。另外会排除符号链接文件。
max connections:最大连接数
        lock file:指定支持max connections参数的锁文件。
        read only:是否只读
        list :客户请求时可用模块时是否列出该模块
        uid:传输时使用的用户
        gid:传输时使用的组
#       exclude:用来指定多个由空格隔开的多个模式列表,并将其添加到exclude列表中。这等同于在客户端命令中使用--exclude来指定模式,不过配置文件中指定的exlude模式不会传递给客户端,而仅仅应用于服务器。一个模块只能指定一个exlude选项,但是可以在模式前面使用"-"和"+"来指定是exclude还是include
#       exclude from:可以指定一个包含exclude模式定义的文件名
#       include:添加需包含的内容,与exclude相对
#       include from:可以指定一个包含include模式定义的文件名
        auth users:允许哪些用户进行传输,用空格或逗号分隔,用户的定义在secrets file
        secrets file:用户和其密码文件
        strict modes:该选项指定是否监测密码文件的权限,如果该选项值为true那么密码文件只能被rsync服务器运行身份的用户访问,其他任何用户不可以访问该文件。默认值为true
        hosts allow:允许的网段,用空格或逗号分隔
        ignore errors:设定rsync服务器在运行delete操作时是否忽略I/O错误
        ignore nonreadable:设定rysnc服务器忽略那些没有访问文件权限的用户
        transfer logging:使rsync服务器使用ftp格式的文件来记录下载和上载操作在自己单独的日志中
        timeout:超时设置(秒)
        refuse options:定义一些不允许客户对该模块使用的命令选项列表
        dont compress:不压缩的文件
3.创建认证文件
创建rsync传输用户comet,密码123456
echo "comet:123456" > /etc/rsyncd.secrets
对认证文件设置权限
sudo chmod 0600 /etc/rsyncd.secrets
4.配置服务启动
vi /etc/default/rsync
RSYNC_ENABLE=true
5.启动服务
service rsync start
客户端的操作
6.同步服务器端文件
6.1手动同步到本地,需输入密码:
rsync -avzP --delete comet@192.168.1.1::webbak /home/ftpsite/comet
-a 参数,相当于-rlptgoD,但不包含-H,-A,-X。其中 -r 是递归 -l 是链接文件,表示是拷贝链接文件;-p 表示保持文件原有权限;-t 保持文件原有时间;-g 保持文件原有用户组;-o 保持文件原有属主;-D 相当于块设备文件
-z 传输时压缩
-P 传输进度
-v 显示详细信息
--delete 表示删除本地有,而服务器上没有的文件
comet是访问rsync服务器的用户名
webbak是需访问的模块
/home/ftpsite/comet 传输到本地的路径
6.2写成脚本:
cat comet-rsync.sh
#! /bin/sh
rsync -avzP --delete --password-file=comet-rsync-pass comet@192.168.1.1::webbak /home/ftpsite/comet
创建密码文件
echo "123456" > comet-rsync-pass
设置仅允许当前用户读取,否则会有出错提示
chmod 0600 comet-rsync-pass
设置comet-rsync.sh允许执行
chmod 0700 comet-rsync.sh
6.3推送到服务器
把服务器的模块和本地路径调转一下便可以了。
rsync -avzP --delete /home/ftpsite/comet comet@192.168.1.1::webbak 
7.windows下cwRsync配置
rsync -avzP --delete --password-file=comet-rsync-pass comet@192.168.1.1::webbak /cygdrive/e/comet
这里需要注意的是在cwRsync中路径的表示:e:comet  的表示为 /cygdrive/e/comet
8.相关链接
其他详细配置可以参考:http://rsync.samba.org/documentation.html

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据