Linux使用rsync同步文件

date: 2016.06.02; modification:2016.10.06

目录:

1 安装

Ubuntu下:

sudo apt-get install rsync

2 配置

rsync的主要有以下三个配置文件:

其中服务器主配置文件的位置为: /etc/rsyncd.conf, 如果该文件默认不存在, 请创建它. 其他两个文件的路径, 可以在rsyncd.conf中指定.

2.1 主配置文件

pid file = /var/run/rsyncd.pid   # 告诉进程写到 /var/run/rsyncd.pid 文件中
port = 873                       # 指定运行端口, 默认是873
address = 172.16.1.90            # 指定服务器IP地址, 制定本机的IP即可.

# 服务器端传输文件时, 要发哪个用户(uid)和用户组(gid)来执行, 默认是nobody.
# 如果用nobody 用户和用户组, 可能遇到权限问题, 有些文件从服务器上拉不下来.
# 如果偷懒一些, 可以用root. 不过可以在定义要同步的目录时定义的模块中指定用户
# 来解决权限的问题.
uid = mikewootc                  # 用户ID
gid = mikewootc                  # 组ID

# 用chroot, 在传输文件之前, 服务器守护程序在将chroot 到文件系统中的目录中,
# 这样做的好处是可能保护系统被安装漏洞侵袭的可能. 缺点是需要超级用户权限.
# 另外对符号链接文件, 将会排除在外. 也就是说, 你在 rsync服务器上, 如果有符号链接,
# 你在备份服务器上运行客户端的同步数据时, 只会把符号链接名同步下来, 并不会同步符
# 号链接的内容.
use chroot = yes 

# read only 是只读选择, 也就是说, 不让客户端上传文件到服务器上.
read only = yes 

# 在您可以指定单个IP, 也可以指定整个网段, 能提高安全性.
# 格式是ip 与ip 之间, ip和网段之间, 网段和网段之间要用空格隔开
hosts allow=172.16.1.0/255.255.255.0  10.0.1.0/255.255.255.0

max connections = 5 # 客户端最多连接数

# motd file 是定义服务器信息的, 要自己写 rsyncd.motd 文件内容.
# 当用户登录时会看到这个信息. 随便写点什么即可.
motd file = /etc/rsyncd/rsyncd.motd

# This will give you a separate log file
#log file = /var/log/rsync.log

# This will log every file transferred - up to 85,000+ per user, per sync
#transfer logging = yes

log format = %t %a %m %f %b
syslog facility = local3
timeout = 300

# 模块定义. 定义服务器哪个目录要被同步. 每个模块都要以[name]形式. 这个名字就是在
# rsync 客户端看到的名字, 其实有点象Samba服务器提供的共享名. 而服务器真正同步的数
# 据是通过path 指定的. 我们可以根据自己的需要, 来指定多个模块. 每个模块要指定认证
# 用户, 密码文件.
[rsync_test]  
path = /home/mikewootc/temp/testrsync   # 被同步的路径
list=no                                 # 服务器上提供同步数据的目录是否显示列出来, 默认yes.
ignore errors
auth users = mikewootc
secrets file = /etc/rsyncd/rsyncd.secrets
comment = This is rsync test
exclude = ex1/ ex2/         # 排除其中的ex1, ex2这两个路径, 他们不会被同步.

2.2 密码文件

本例中指定的密码文件为: /etc/rsyncd/rsyncd.secrets, 必须用:

chown root.root /etc/rsyncd/rsyncd.secrets
sudo chmod 600 /etc/rsyncd/rsyncd.secrets

修改其权限与所属, 这是强制要求, 为了安全.

密码文件格式很简单, rsyncd.secrets的内容格式为:

用户名:密码

3 运行

rsync --daemon

4 使用

4.1 用法

命令行用法有一大串, 如下:

rsync [OPTION]...    SRC [SRC]...                    DEST

rsync [OPTION]...    SRC [SRC]...                    [USER@]HOST:DEST
rsync [OPTION]...    SRC [SRC]...                    [USER@]HOST::DEST
rsync [OPTION]...    SRC [SRC]...                    rsync://[USER@]HOST[:PORT]/DEST

rsync [OPTION]...    [USER@]HOST:SRC                 [DEST]
rsync [OPTION]...    [USER@]HOST::SRC                [DEST]
rsync [OPTION]...    rsync://[USER@]HOST[:PORT]/SRC  [DEST]

但是总结一下, 就3种:

对于远程传输, 分为3种可选的方式:

如果参数中只有远程路径, 没有本地路径, 则只列出远端的文件列表, 而不进行文件拷贝.

4.2 参数

5 参考资料

http://www.cnblogs.com/itech/archive/2009/08/10/1542945.html