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" 目录到 "./" 下。
需要远程主机开启 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 服务(指定 ip 访问),然后在指定的机器上运行 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
注意,下面用上面创建的 "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