Refer to http://jianlee.ylinux.org/Computer/Server/rsync.html
简单使用
单机使用
同步目录 A 到目录B,以 A 目录为基准,如果 A 目录没有,B 目录有的会删除。 A 目录有, B 目录没有的,就从 A 拷贝到 B 。示例 ("/data/projects/crepo" 是 A,"./" 是 B):
$ rsync -av /data/projects/crepo ./
注意!如果带目录 "/data/projects/crepo" 带 "/" 后缀,就备份其内容到 "./" 下了,现在是备份 "/data/projects/crepo" 目录到 "./" 下。
使用 SSH 远程备份
需要远程主机开启 SSHD :
#安装openssh-server,可以通过synaptic安装,也可以用apt-get安装,ssh 默认端口号22,查看是否启动 netstat -an|grep 22 或者rpm -qa|grep openssh,若没有启动,可以service sshd start
rsync -avz jianlee@172.16.70.2:/path/to/远程主机上的目录A /path/to/本地目录B
这样 A 就同步到 B 了。 "jianlee@172.16.70.2:/path/to/远程主机上的目录 A" 是 ssh 的格式。
注意,如果 "/path/to/远程主机上的目录A" 的格式以 "/" 结尾,就可以避免备 份到本地目录为 "/path/to/本地目录B/远程主机上的目录A" 形式。
rsync -avz --exclude=.git/ jianlee@172.16.70.2:/home/jianlee/work/tat/ tat
匿名 rsync 服务器
本示例要搭建一个匿名 rsync 服务(指定 ip 访问),然后在指定的机器上运行 rsync 服务:
创建 rsync 服务
很简单,创建配置文件,启动 rsync 服务即可。
我在 172.16.70.33 上创建一个 rsync 服务器,提供一个名为 "BuildSrv" 的备 份对象
创建 rsync 配置文件
编辑 /etc/rsyncd.conf 文件,如不存在请创建:
# 全局设定 # motd file 指定客户端访问显示的欢迎信息 motd file = /etc/rsyncd.motd # read only 禁止客户端写服务器 read only = yes list = yes uid = root gid = root #hosts allow = 172.16.70.28 #hosts deny = 172.16.0.0/16 max connections = 2 log file = /var/log/rsyncd.log pid file = /var/run/rsyncd.pid lock file = /var/run/rsyncd.lock # 要备份的资源设置,[]里面是 module 名字,备份时指定它就可以确定要备份的对象 [BuildSrv] comment = Build SRV # path 是示例里要备份的目录 path = /data/lab/obs/src/
说明:
- "hosts allow" 可以指定可访问此 rsync 服务的机器 ip,"hosts deny"意思也很明显
- "log file","pid file","lock file"是通常的做法
启动 rsync 服务
下面介绍 "daemon" 和 "xinetd" 两种方式运行 rsync 服务器。
daemon 运行
只要运行下面命令即可启动 rsync 服务:
/usr/bin/rsync --daemon
xinetd (超级服务器)
也可以使用这种方式,编辑 /etc/xinetd.d/rsync 为如下:
service rsync { disable = no socket_type = stream wait = no user = root server = /usr/bin/rsync server_args = --daemon log_on_failure += USERID }
启动 xinetd 服务:
/etc/init.d/xinetd start
在客户端使用 rsync 命令执行备份
注意,下面用上面创建的 "BuildSrv" module 指定要备份的对象:
$ rsync -avz --progress --delete 172.16.70.33::BuildSrv build_backup
注意, 172.16.70.33 和 "BuildSrv" 之间是 "::" (两个冒号) ,这样 rsync 自动使用 873 (rsync 服务默认端口) 来备份。"build_backup" 是备份到本地的 目录。
上面命令还复杂,可以更简单使用:
$ rsync -avz 172.16.70.33::BuildSrv build_bak2