这里会显示出您选择的修订版和当前版本之间的差别。
| 两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
|
zh:用途和案例:如何使用rsync同步远程服务器上的文件 [2017/03/03 02:08] liuxl |
zh:用途和案例:如何使用rsync同步远程服务器上的文件 [2017/12/12 03:05] (当前版本) |
||
|---|---|---|---|
| 行 1: | 行 1: | ||
| - | <note>rsync是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限、时间、软硬链接等附加信息,通过ssh方式来传输文件,本文将介绍如何使用rsync同步astercc的录音文件夹monitor。</note> | + | <note>rsync是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限、时间、软硬链接等附加信息,通过ssh方式来传输文件,本文将介绍如何使用rsync同步asterCC的录音文件夹monitor,测试rsync服务器IP地址为192.168.1.90。</note> |
| + | |||
| + | ===== 一、服务器端配置 ===== | ||
| ==== 安装 ==== | ==== 安装 ==== | ||
| 行 15: | 行 17: | ||
| <code>touch /etc/rsyncd.conf # 创建rsyncd.conf这是rsync服务器的配置文件。</code> | <code>touch /etc/rsyncd.conf # 创建rsyncd.conf这是rsync服务器的配置文件。</code> | ||
| - | <code>touch /etc/rsyncd.secrets # 创建rsyncd.secrets这是用户密码文件。</code> | + | <code>touch /etc/rsyncd/rsyncd.secrets # 创建rsyncd.secrets这是用户密码文件。</code> |
| <code>chmod 600 /etc/rsyncd/rsyncd.secrets # 将rsyncd.secrets这个密码文件的文件属性设为root拥有且权限要设为600否则无法备份成功。</code> | <code>chmod 600 /etc/rsyncd/rsyncd.secrets # 将rsyncd.secrets这个密码文件的文件属性设为root拥有且权限要设为600否则无法备份成功。</code> | ||
| - | <code>touch /etc/rsyncd.motd # 定义rysnc服务器信息的,比如让用户知道这个服务器是谁提供的等。</code> | + | <code>touch /etc/rsyncd/rsyncd.motd # 定义rysnc服务器信息的,比如让用户知道这个服务器是谁提供的等。</code> |
| *rsyncd.conf是rsync服务器主要配置文件。本文我们提供了一个配置文件实例,如下: | *rsyncd.conf是rsync服务器主要配置文件。本文我们提供了一个配置文件实例,如下: | ||
| - | <code>uid = root # 服务器端传输文件时要哪个用户来执行默认是nobody,但nobody可能遇到权限问题有些文件从服务器上拉不下来本文用户采用root。 | + | <code> |
| + | #port = 873 # 指定运行端口默认是873也可以自己指定,不设置即为默认可用#号注释掉。 | ||
| + | uid = root # 服务器端传输文件时要哪个用户来执行默认是nobody,但nobody可能遇到权限问题有些文件从服务器上拉不下来本文用户采用root。 | ||
| gid = root # 同上设置服务器端传输文件时要哪个组来执行。 | gid = root # 同上设置服务器端传输文件时要哪个组来执行。 | ||
| 行 30: | 行 34: | ||
| hosts allow=192.168.1.0/24 # 允许主机,可以指定单个IP也可以指定整个网段能提高安全性,多个地址格式要用空格隔开。 | hosts allow=192.168.1.0/24 # 允许主机,可以指定单个IP也可以指定整个网段能提高安全性,多个地址格式要用空格隔开。 | ||
| - | #hosts deny=* # 指定不允许连接rsync服务器的机器,可以使用hosts allow的定义方式来进行定义,默认是没有hosts deny定义。 | + | #hosts deny=* # 指定不允许连接rsync服务器的机器,可以使用hosts allow的定义方式来进行定义,默认是没有hosts deny定义,可用#号注释掉。 |
| max connections = 5 # 客户端最多连接数。 | max connections = 5 # 客户端最多连接数。 | ||
| 行 37: | 行 41: | ||
| log file = /var/log/rsyncd.log # 开启rsync服务器的日志。 | log file = /var/log/rsyncd.log # 开启rsync服务器的日志。 | ||
| - | #lock file = /tmp/rsync.lock # 指定支持max connections参数的锁文件。 | + | lock file = /tmp/rsync.lock # 指定支持max connections参数的锁文件。 |
| - | #motd file = /etc/rsyncd/rsyncd.motd # 指定定义服务器信息文件路径,当用户登录时会看到这个信息。 | + | #motd file = /etc/rsyncd/rsyncd.motd # 指定定义服务器信息文件路径,当用户登录时会看到这个信息,非必须可用#注释掉。 |
| transfer logging = yes # 使rsync服务器使用ftp格式的文件来记录下载和上载操作在自己单独的日志中。 | transfer logging = yes # 使rsync服务器使用ftp格式的文件来记录下载和上载操作在自己单独的日志中。 | ||
| 行 51: | 行 55: | ||
| auth users = test # 认证用户。 | auth users = test # 认证用户。 | ||
| comment = Get monitor # 注释信息可以自己定义。 | comment = Get monitor # 注释信息可以自己定义。 | ||
| - | #exclude = data/ cache/ # 排除的意思把monitor目录下的data和cache排除在外,目录之间有空格分开。</code> | + | #exclude = data/ cache/ # 排除的意思把monitor目录下的data和cache排除在外,目录之间有空格分开,没有可用#号注释掉。</code> |
| *设定/etc/xinetd.d/rsync,参考改成如下图: | *设定/etc/xinetd.d/rsync,参考改成如下图: | ||
| {{:zh:用途和案例:选区_0085.png?750|}} | {{:zh:用途和案例:选区_0085.png?750|}} | ||
| + | |||
| + | disable设置为no,flags设置为IPv4,server设置为rsync路径可使用whereis rsync查看,然后service xinetd restart使上述设定生效。 | ||
| + | |||
| + | <note tip>注意rsync默认端口为873或配置中设置为其它端口,都需要设置iptables防火墙允许该端口通过。</note> | ||
| + | |||
| + | *设置rsyncd.secrets服务器密码文件。 | ||
| + | |||
| + | 设定密码文件格式很简单,rsyncd.secrets的内容格式为:用户名:密码格式,如下示例: | ||
| + | |||
| + | <code>test:astercc</code> | ||
| + | |||
| + | *设置rsyncd.motd 服务器公告文件,其定义了服务器发送给用户登录信息。它并不是必须的可以用#号注掉,如果需要可自行研究设置。 | ||
| + | |||
| + | ==== 启动rsync守护进程 ==== | ||
| + | |||
| + | <code>/usr/bin/rsync --daemon</code> | ||
| + | |||
| + | ===== 二、客户机端配置 ===== | ||
| + | |||
| + | ==== 客户端创建密码验证文件 ==== | ||
| + | |||
| + | *客户端创建密码验证文件rsyncd.secrets,这样设置的好处是指定密码不用再手动输入密码验证,方便在crontab里设置定时同步。 | ||
| + | |||
| + | <code>echo "astercc" > /root/rsyncd.secrets | ||
| + | chmod 600 /root/rsyncd.secrets</code> | ||
| + | |||
| + | ==== 客户端同步远程文件 ==== | ||
| + | |||
| + | *测试获取远程服务器可同步的文件资料信息。 | ||
| + | |||
| + | <code>rsync -avzP test@192.168.1.90::monitor /var/spool/asterisk/monitor --password-file=/root/rsyncd.secrets</code> | ||
| + | |||
| + | *同步远程服务器共享的的文件资料信息,本例为同步asterCC的录音文件夹/var/spool/asterisk/monitor。 | ||
| + | |||
| + | <code>rsync -avzP test@192.168.1.90::monitor /var/spool/asterisk/monitor --password-file=/root/rsyncd.secrets</code> | ||
| + | |||
| + | <note tip>可以将上面的命令设置于crontab中用于定时文件同步。</note> | ||
| + | |||
| + | <code>-a 以archive模式操作、复制目录、符号连接 相当于-rlptgoD | ||
| + | -z 传输时压缩。 | ||
| + | -P 传输进度。 | ||
| + | -v 传输时的进度等信息,和-P有点关系,自己试试。可以看文档。 | ||
| + | --delete 是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致,本例只进行录音文件备份所以不需要这个选项。 | ||
| + | --password-file=/password/path/file 来指定密码文件,这样就可以在脚本中使用而无需交互式地输入验证密码了,这里需要注意的是密码文件权限600。</code> | ||