基本条件:本地网络会定期中断,本地网络下行带宽充裕
基本需求:镜像某个感兴趣的网站
使用wget附带-c参数以启用断点续传不太现实,虽然对于单一文件有重要意义,但是网站可能由很多小文件,即使启用断点续传也会从头开始一次检查,随着下载量的增多,检查时间可能超过网络定期中断时间。
因此考虑使用VPS使用wget镜像网站,如何从VPS上下载镜像数据就成了一个不得不考虑的问题,使用传统的pscp是难以满足需求的,因此采用rsync是一个合乎逻辑的选择。
以VPS操作系统为Ubuntu 14.04为例
- VPS启用rsync服务
- VPS的额外配置
- 客户端
通常情况下Ubuntu已经默认安装了rsync服务,但是默认是不启动的,需要修改/etc/default/rsync文件中的RSYNC_ENABLE改成
RSYNC_ENABLE=true
然后复制配置文件到etc目录
cp /usr/share/doc/rsync/examples/rsyncd.conf /etc
/etc/rsyncd.conf这个配置文件储存了所有的rsync的模块信息(相当于共享文件夹的配置信息),根据配置文件中已有的[ftp]模块可以构造自己的模块
[web] comment = public archive path = /mnt/sdc #设置同步的目录 use chroot no lock file = /var/lock/rsyncd read only = yes list = yes uid = nobody gid = nogroup auth users = root #允许访问的用户列表 secrets file = /etc/rsyncd.secrets #用户名-密码表 strict modes = yes ignore errors = no ignore nonreadable = yes transfer logging = no log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes. timeout = 600 refuse options = checksum dry-run dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz
尽管很多材料指出应当将ignore errors 设置为yes,亦即忽略可能发生的错误,但个人倾向于不忽略错误。
接着创建用户-密码表
vim /etc/rsyncd.secrets
按
username:password
这样的格式输入就行
然后调整权限
chmod 0600 /etc/rsyncd.secrets
接着启动服务
/etc/init.d/rsync start
或者用
service rsync start
VPS提供商会提供一些额外的防火墙(通常被称为安全组),目的在于如果用户部署多个VPS可以不用费心地挨个配置iptables,但是某些VPS提供商会很热情地帮你把除了22端口以外的端口全部封上,这时候尝试rsync命令会出现令人困惑的Time out错误(因为检查iptables并没有发现封闭端口的问题),请打开入方向的873端口(如果rsync服务仍使用默认端口的话)
Linux的所有发行版用rsync应该不会有什么问题
Windows下使用rsync需要到https://www.itefix.net/cwrsync下载Free Edition的rsync,具体使用方法可以参考rsync的帮助信息