博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux rsync同步工具
阅读量:6196 次
发布时间:2019-06-21

本文共 19247 字,大约阅读时间需要 64 分钟。

1、rsync介绍

rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。rsync软件适用于unix/linux/windows等多种操作系统平台。

rsync和ssh带的scp命令比较相似,但又优于scp命令的功能,scp每次都是全量拷贝,而rsync可以进行增量拷贝。当然,rsync还可以在本地主机的不同分区或目录之间全量及增量的复制数据,这又类似cp命令,但同样也优于cp命令,cp每次都是全量拷贝,而rsync可以增量拷贝.利用rsync还可以实现删除文件和目录功能,这又相当于rm命令。

2、rsync特性

支持拷贝特殊文件如链接文件,设备等。
可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能。
可以做到保持原文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变。
可实现增量同步,即可同步发生变化的数据,因此数据传输效率很高。
可以使用rcp,rsh,ssh等方式来配合传输文件(rsync本身不对数据加密)。
可以通过socket传输文件和数据。
支持匿名的或认证(无需系统用户)的进程模式传输,可实现方便安全的进行数据备份及镜像。
3、rsync工作场景
两台服务器之间数据同步。
把所有客户服务器数据同步到备份服务器,生产场景集群架构服务器备份方案。
rsync结合inotify的功能做实时的数据同步。
4、rsync命令同步参数选项
常用参数选项说明:

参数 完整参数 说明

-v –verbose 详细模式输出,传输时的进度信息
-z –compress 传输时进行压缩以提高传输效率, –compress-level=NUM可按级别压缩
-a –archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rtopgDl
-r –recursive 对子目录以递归模式,即目录下的所有目录都同样传输,注意是小写r
-t –times 保持文件时间信息
-o –owner 保持文件属主信息
-p –perms 保持文件权限
-g –group 保持文件属组信息
-P –progress 显示同步的过程及传输时的进度等信息
-D –devices 保持设备文件信息
-l –links 保持软链接
-e –rsh=COMMAND 使用的信道协议,指定替代rsh的shell程序,例如ssh
–exclude=PATTERN 指定排除不需要传输的文件模式
–exclude-from=FILE 从文件中读取指定排除不需要传输的文件模式
以上参数为在生产环境中的常用参数,基本使用已足够,相关的参数还有非常多,了解更多可以man rsync。最常用的参数avz相当于vzrtopgDl,生产参数-avz或者用-vzrtopg
5、rsync工作方式
一般来说,rsync大致使用三种主要的传输数据的方式,分别为:

5.1 本地数据传输模式(local-only mode),单个主机本地之间的数据传输(此时类似于cp命令的功能)。

rsync本地传输模式的语法为:

rsync [OPTION…] SRC… [DEST]

语法说明:

rsync为同步的命令

[OPTION]为同步时的参数选项
SRC为源,即待同步的分区、文件或目录等
[DEST]为目的分区、文件或目录
实例,将/etc/hosts 同步至/tmp

1、rsync介绍rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。rsync软件适用于unix/linux/windows等多种操作系统平台。rsync和ssh带的scp命令比较相似,但又优于scp命令的功能,scp每次都是全量拷贝,而rsync可以进行增量拷贝。当然,rsync还可以在本地主机的不同分区或目录之间全量及增量的复制数据,这又类似cp命令,但同样也优于cp命令,cp每次都是全量拷贝,而rsync可以增量拷贝.利用rsync还可以实现删除文件和目录功能,这又相当于rm命令。2、rsync特性支持拷贝特殊文件如链接文件,设备等。可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能。可以做到保持原文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变。可实现增量同步,即可同步发生变化的数据,因此数据传输效率很高。可以使用rcp,rsh,ssh等方式来配合传输文件(rsync本身不对数据加密)。可以通过socket传输文件和数据。支持匿名的或认证(无需系统用户)的进程模式传输,可实现方便安全的进行数据备份及镜像。3、rsync工作场景两台服务器之间数据同步。把所有客户服务器数据同步到备份服务器,生产场景集群架构服务器备份方案。rsync结合inotify的功能做实时的数据同步。4、rsync命令同步参数选项常用参数选项说明:参数 完整参数 说明-v –verbose 详细模式输出,传输时的进度信息-z –compress 传输时进行压缩以提高传输效率, –compress-level=NUM可按级别压缩-a –archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rtopgDl-r –recursive 对子目录以递归模式,即目录下的所有目录都同样传输,注意是小写r-t –times 保持文件时间信息-o –owner 保持文件属主信息-p –perms 保持文件权限-g –group 保持文件属组信息-P –progress 显示同步的过程及传输时的进度等信息-D –devices 保持设备文件信息-l –links 保持软链接-e –rsh=COMMAND 使用的信道协议,指定替代rsh的shell程序,例如ssh–exclude=PATTERN 指定排除不需要传输的文件模式–exclude-from=FILE 从文件中读取指定排除不需要传输的文件模式以上参数为在生产环境中的常用参数,基本使用已足够,相关的参数还有非常多,了解更多可以man rsync。最常用的参数avz相当于vzrtopgDl,生产参数-avz或者用-vzrtopg5、rsync工作方式一般来说,rsync大致使用三种主要的传输数据的方式,分别为:5.1 本地数据传输模式(local-only mode),单个主机本地之间的数据传输(此时类似于cp命令的功能)。rsync本地传输模式的语法为:rsync [OPTION…] SRC… [DEST]语法说明:rsync为同步的命令[OPTION]为同步时的参数选项SRC为源,即待同步的分区、文件或目录等[DEST]为目的分区、文件或目录实例,将/etc/hosts 同步至/tmpMacBook-Pro:tmp maxincai$ rsync /etc/hosts /tmpMacBook-Pro:tmp maxincai$ lltotal 4drwxrwxrwt 9 root wheel 306 1 14 15:04 ./drwxr-xr-x@ 6 root wheel 204 6 26 2015 ../drwxrwxrwt 3 maxincai wheel 102 12 31 10:46 .pd/-rw-r–r– 1 maxincai wheel 737 1 14 15:04 hosts5.2 远程传输,借助rcp,ssh等通道来传输数据(此时类似于scp命令的功能)。远程传输模式的语法为:拉取: rsync [OPTION…] [USER@]HOST:SRC… [DEST]推送: rsync [OPTION…] SRC… [USER@]HOST:DEST语法说明:rsync为同步的命令[OPTION]为同步时的参数选项[USER@]HOST: 远程用户名及hostSRC为源,即待同步的分区、文件或目录等[DEST]为目的分区、文件或目录推送实例[root@vagrant-centos65 ~]# mkdir data[root@vagrant-centos65 ~]# lltotal 8drwxr-xr-x 2 root root 4096 Jan 14 07:26 datadrwxr-xr-x 3 root root 4096 Jan 11 11:08 workspace[root@vagrant-centos65 ~]# cd data[root@vagrant-centos65 data]# lltotal 0[root@vagrant-centos65 data]# lltotal 0[root@vagrant-centos65 data]# vim 1.txt[root@vagrant-centos65 data]# rsync -avzP -e ‘ssh -p 22’ /root/data root@192.168.35.2:/rootThe authenticity of host ‘192.168.35.2 (192.168.35.2)’ can’t be established.RSA key fingerprint is 0c:5f:f6:c7:a6:27:4e:a0:e6:7c:99:8a:db:2e:41:df.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added ‘192.168.35.2’ (RSA) to the list of known hosts.root@192.168.35.2’s password:sending incremental file listdata/data/1.txt4 100% 0.00kB/s 0:00:00 (xfer#1, to-check=0/2)sent 104 bytes received 35 bytes 25.27 bytes/sectotal size is 4 speedup is 0.03[root@vagrant-centos65 data]#拉取实例[root@vagrant-centos65 data]# rsync -avzP -e ‘ssh -p 22’ root@192.168.35.2:/root/data1 /rootroot@192.168.35.2’s password:receiving incremental file listdata1/data1/2.txt4 100% 3.91kB/s 0:00:00 (xfer#1, to-check=0/2)sent 34 bytes received 106 bytes 56.00 bytes/sectotal size is 4 speedup is 0.03[root@vagrant-centos65 data]# lltotal 4-rw-r–r– 1 root root 4 Jan 14 07:26 1.txt[root@vagrant-centos65 data]# cd ..[root@vagrant-centos65 ~]# lltotal 12drwxr-xr-x 2 root root 4096 Jan 14 07:27 datadrwxr-xr-x 2 root root 4096 Jan 14 07:30 data1drwxr-xr-x 3 root root 4096 Jan 11 11:08 workspace[root@vagrant-centos65 ~]#5.3 以守护进程(socket)的方式传输数据,这个是rsync自身的重要功能。我们实验的机器如下:server: 192.168.35.2client: 192.168.36.2先新建配置文件,请注意rsyncd.conf配置文件只用在服务端新建就好。vim /etc/rsyncd.conf以下只是配置文件中最常用的部份,更多的请使用命令man rsyncd.conf查看。# 运行rsync的用户和组iduid = rsyncgid = rsync# bug信息的处理,一种安全方式use chroot = no# 最大的连接数max connections = 200# 超时时间timeout = 300# pid文件pid file = /var/run/rsyncd.pid# 锁文件lock file = /var/run/rsync.lock# 日志文件log file = /var/log/rsyncd.log# 需要同步的模块,这是其中一个,可以有多个[data1]# 同步的根目录path = /data1/# 忽略错误ignore errors# 只读falsh 表示可读可写read only = false# 不可列表list = false# 允许访问的网段hosts allow = 10.0.0.0/24# 拒绝访问的网段hosts deny = 0.0.0.0/32# 用户名auth users = rsync_backup# 密码文件路径secrets file = /etc/rsync.password以守护进程的方式启动rsync[root@vagrant-centos65 data1]# rsync –daemon如果需要了解启动更详情的信息,建议查看帮助,这里就不具体列出来了[root@vagrant-centos65 data1]# rsync –daemon –help查看是否启动成功,rsyncd的默认端口是873[root@vagrant-centos65 data1]# netstat -lntup | grep 873tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 2580/rsynctcp 0 0 :::873 :::* LISTEN 2580/rsync[root@vagrant-centos65 data1]# ps -ef | grep rsyncroot 2580 1 0 08:19 ? 00:00:00 rsync –daemonroot 2585 2116 0 08:30 pts/0 00:00:00 grep rsync如果启动出错,我们就需要查看一下系统日志,我们这里日志显示正常启动[root@vagrant-centos65 data1]# cat /var/log/rsyncd.log2016/01/15 08:19:12 [2580] rsyncd version 3.0.6 starting, listening on port 873下面我们创建需要同步的目录,并给予相应的权限[root@vagrant-centos65 /]# mkdir -p /data1[root@vagrant-centos65 /]# chown -R rsync.rsync /data1# 这里报错了,因为没有相应的用户,我们需要创建chown: invalid user: `rsync.rsync’# 创建一个不需要登录的系统用户[root@vagrant-centos65 /]# useradd rsync -s /sbin/nologin[root@vagrant-centos65 /]# chown -R rsync.rsync /data1将用户名和密码重定义输出到我们的密码存放文件# rsync_backup是用户名,maxincai是密码[root@vagrant-centos65 /]# echo “rsync_backup:maxincai” >/etc/rsync.password[root@vagrant-centos65 /]# cat /etc/rsync.passwordrsync_backup:maxincai# 由于我们存放的是密码文件,为了安全,修改权限为600,同时这也是rsync本身的要求root@vagrant-centos65 /]# chmod 600 /etc/rsync.password# 同时我们需要关闭防火樯[root@vagrant-centos65 /]# /etc/init.d/iptabls stop-bash: /etc/init.d/iptabls: No such file or directory[root@vagrant-centos65 /]# getenforceDisabled下面配置客户端,将密码保存在密码配置文件,同是为了与服务端统一,我们使用相当的文件名,注意这里我们只需要放入密码即可[root@vagrant-centos65 ~]# echo “maxincai” >/etc/rsync.password[root@vagrant-centos65 ~]# chmod 600 /etc/rsync.password[root@vagrant-centos65 ~]# cat /etc/rsync.passwordmaxincai通过daemon方式远程传输的语法为:Access via rsync daemon:Pull: rsync [OPTION…] [USER@]HOST::SRC… [DEST]rsync [OPTION…] rsync://[USER@]HOST[:PORT]/SRC… [DEST]Push: rsync [OPTION…] SRC… [USER@]HOST::DESTrsync [OPTION…] SRC… rsync://[USER@]HOST[:PORT]/DEST在客户端进行拉取实例:先看看server端的目录结构[root@vagrant-centos65 data1]# pwd/data1[root@vagrant-centos65 data1]# tree.├── dir1│ └── test3├── dir2├── test1└── test23 directories, 2 files[root@vagrant-centos65 data1]#开始拉取[root@vagrant-centos65 ~]# rsync -avz rsync_backup@192.168.35.2::data1 /data1Password:# 需要输入密码,输入之前的定义的密码maxincaireceiving incremental file listcreated directory /data1./test1test2dir1/dir1/test3/dir2/sent 116 bytes received 289 bytes 90.00 bytes/sectotal size is 0 speedup is 0.00# 可以看到通过成功,看看同步之后的目录结构[root@vagrant-centos65 ~]# cd /data1[root@vagrant-centos65 data1]# lltotal 8drwxr-xr-x 3 root root 4096 Jan 15 09:11 dir1drwxr-xr-x 2 root root 4096 Jan 15 09:11 dir2-rw-r–r– 1 root root 0 Jan 15 09:10 test1-rw-r–r– 1 root root 0 Jan 15 09:11 test2[root@vagrant-centos65 data1]# tree.├── dir1│ └── test3├── dir2├── test1└── test23 directories, 2 files在看看拉取的时候需要输入密码,不方便我们在rcontab中进行定义,所以我们需要让他自动读取密码,参数–password-file=/etc/rsync.password[root@vagrant-centos65 data1]# rsync -avz rsync_backup@192.168.35.2::data1 /data1 –password-file=/etc/rsync.passwordreceiving incremental file listsent 66 bytes received 205 bytes 108.40 bytes/sectotal size is 0 speedup is 0.00在客户端进行推送实例# 创建10个文件[root@vagrant-centos65 data1]# touch {
1..10}[root@vagrant-centos65 data1]# lltotal 8-rw-r–r– 1 root root 0 Jan 15 09:25 1-rw-r–r– 1 root root 0 Jan 15 09:25 10-rw-r–r– 1 root root 0 Jan 15 09:25 2-rw-r–r– 1 root root 0 Jan 15 09:25 3-rw-r–r– 1 root root 0 Jan 15 09:25 4-rw-r–r– 1 root root 0 Jan 15 09:25 5-rw-r–r– 1 root root 0 Jan 15 09:25 6-rw-r–r– 1 root root 0 Jan 15 09:25 7-rw-r–r– 1 root root 0 Jan 15 09:25 8-rw-r–r– 1 root root 0 Jan 15 09:25 9drwxr-xr-x 3 root root 4096 Jan 15 09:11 dir1drwxr-xr-x 2 root root 4096 Jan 15 09:11 dir2-rw-r–r– 1 root root 0 Jan 15 09:10 test1-rw-r–r– 1 root root 0 Jan 15 09:11 test2# 开始推送[root@vagrant-centos65 data1]# rsync -avz /data1/ rsync_backup@192.168.35.2::data1 –password-file=/etc/rsync.passwordsending incremental file list./11023456789sent 558 bytes received 204 bytes 1524.00 bytes/sectotal size is 0 speedup is 0.00# 查看服务端的同步情况[root@vagrant-centos65 data1]# tree.├── 1├── 10├── 2├── 3├── 4├── 5├── 6├── 7├── 8├── 9├── dir1│ └── test3├── dir2├── test1└── test23 directories, 12 files其他的语法# 推送[root@vagrant-centos65 data1]# rsync -avz /data1/ rsync://rsync_backup@192.168.35.2/data1 –password-file=/etc/rsync.passwordsending incremental file listsent 195 bytes received 11 bytes 412.00 bytes/sectotal size is 0 speedup is 0.00# 拉取][][root@vagrant-centos65 data1]# rsync -avz rsync://rsync_backup@192.168.35.2/data1 /data1/ –password-file=/etc/rsync.passwordreceiving incremental file listsent 96 bytes received 317 bytes 826.00 bytes/sectotal size is 0 speedup is 0.00小结:rsync server:vim /etc/rsyncd.conf(用户,目录,模块,虚拟用户及密码文件)创建共享目录 /data1创建rsync用户,并且授权访问/data1创建密码文件,复制配置文件里的路径,然后添加密码内容,内容虚拟用户名:密码密码文件权限600rsync –daemon然后放入/etc/rc.localtail /var/log/rsyncd.logrsync client(多个)密码文件和服务端没任何关系,命令时 –password-file=/etc/rsync.password 内容:密码/etc/rsync.password 600同步:推、拉排错:防火墙和selinux/var/log/rsyncd.log整个部署流程整体考虑排查操作习惯当作一个大事排除单个文件[root@vagrant-centos65 data1]# rsync -avz rsync://rsync_backup@192.168.35.2/data1 /data1/ –exclude=1 –password-file=/etc/rsync.password排除多个文件rsync -avz rsync://rsync_backup@192.168.35.2/data1 /data1/ –exclude={1,2} –password-file=/etc/rsync.passwordrsync -avz rsync://rsync_backup@192.168.35.2/data1 /data1/ –exclude=a –exclude=b –password-file=/etc/rsync.password# 排除连续的rsync -avz rsync://rsync_backup@192.168.35.2/data1 /data1/ –exclude={a..g} –password-file=/etc/rsync.password# 从文件中读取排除规则rsync -avz rsync://rsync_backup@192.168.35.2/data1 /data1/ –exclude-from=paichu.log –password-file=/etc/rsync.password服务端排除参数,在/etc/rsyncd.conf中修改:# 注意是用空格去分隔exclude=a b test/1.txt

5.2 远程传输,借助rcp,ssh等通道来传输数据(此时类似于scp命令的功能)。

远程传输模式的语法为:

拉取: rsync [OPTION…] [USER@]HOST:SRC… [DEST]

推送: rsync [OPTION…] SRC… [USER@]HOST:DEST
语法说明:

rsync为同步的命令

[OPTION]为同步时的参数选项
[USER@]HOST: 远程用户名及host
SRC为源,即待同步的分区、文件或目录等
[DEST]为目的分区、文件或目录
推送实例

[root@vagrant-centos65 ~]# mkdir data[root@vagrant-centos65 ~]# lltotal 8drwxr-xr-x 2 root root 4096 Jan 14 07:26 datadrwxr-xr-x 3 root root 4096 Jan 11 11:08 workspace[root@vagrant-centos65 ~]# cd data[root@vagrant-centos65 data]# lltotal 0[root@vagrant-centos65 data]# lltotal 0[root@vagrant-centos65 data]# vim 1.txt[root@vagrant-centos65 data]# rsync -avzP -e ‘ssh -p 22’ /root/data root@192.168.35.2:/rootThe authenticity of host ‘192.168.35.2 (192.168.35.2)’ can’t be established.RSA key fingerprint is 0c:5f:f6:c7:a6:27:4e:a0:e6:7c:99:8a:db:2e:41:df.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added ‘192.168.35.2’ (RSA) to the list of known hosts.root@192.168.35.2’s password:sending incremental file listdata/data/1.txt4 100% 0.00kB/s 0:00:00 (xfer#1, to-check=0/2)sent 104 bytes received 35 bytes 25.27 bytes/sectotal size is 4 speedup is 0.03[root@vagrant-centos65 data]#

拉取实例

[root@vagrant-centos65 data]# rsync -avzP -e ‘ssh -p 22’ root@192.168.35.2:/root/data1 /rootroot@192.168.35.2’s password:receiving incremental file listdata1/data1/2.txt4 100% 3.91kB/s 0:00:00 (xfer#1, to-check=0/2)sent 34 bytes received 106 bytes 56.00 bytes/sectotal size is 4 speedup is 0.03[root@vagrant-centos65 data]# lltotal 4-rw-r–r– 1 root root 4 Jan 14 07:26 1.txt[root@vagrant-centos65 data]# cd ..[root@vagrant-centos65 ~]# lltotal 12drwxr-xr-x 2 root root 4096 Jan 14 07:27 datadrwxr-xr-x 2 root root 4096 Jan 14 07:30 data1drwxr-xr-x 3 root root 4096 Jan 11 11:08 workspace[root@vagrant-centos65 ~]#

5.3 以守护进程(socket)的方式传输数据,这个是rsync自身的重要功能。

我们实验的机器如下:

server: 192.168.35.2

client: 192.168.36.2

先新建配置文件,请注意rsyncd.conf配置文件只用在服务端新建就好。

vim /etc/rsyncd.conf

以下只是配置文件中最常用的部份,更多的请使用命令man rsyncd.conf查看。

# 运行rsync的用户和组iduid = rsyncgid = rsync# bug信息的处理,一种安全方式use chroot = no# 最大的连接数max connections = 200# 超时时间timeout = 300# pid文件pid file = /var/run/rsyncd.pid# 锁文件lock file = /var/run/rsync.lock# 日志文件log file = /var/log/rsyncd.log# 需要同步的模块,这是其中一个,可以有多个[data1]# 同步的根目录path = /data1/# 忽略错误ignore errors# 只读falsh 表示可读可写read only = false# 不可列表list = false# 允许访问的网段hosts allow = 10.0.0.0/24# 拒绝访问的网段hosts deny = 0.0.0.0/32# 用户名auth users = rsync_backup# 密码文件路径secrets file = /etc/rsync.password

以守护进程的方式启动rsync

[root@vagrant-centos65 data1]# rsync –daemon

如果需要了解启动更详情的信息,建议查看帮助,这里就不具体列出来了

[root@vagrant-centos65 data1]# rsync –daemon –help

查看是否启动成功,rsyncd的默认端口是873

[root@vagrant-centos65 data1]# netstat -lntup | grep 873tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 2580/rsynctcp 0 0 :::873 :::* LISTEN 2580/rsync[root@vagrant-centos65 data1]# ps -ef | grep rsyncroot 2580 1 0 08:19 ? 00:00:00 rsync –daemonroot 2585 2116 0 08:30 pts/0 00:00:00 grep rsync

如果启动出错,我们就需要查看一下系统日志,我们这里日志显示正常启动

[root@vagrant-centos65 data1]# cat /var/log/rsyncd.log2016/01/15 08:19:12 [2580] rsyncd version 3.0.6 starting, listening on port 873

下面我们创建需要同步的目录,并给予相应的权限

[root@vagrant-centos65 /]# mkdir -p /data1[root@vagrant-centos65 /]# chown -R rsync.rsync /data1# 这里报错了,因为没有相应的用户,我们需要创建chown: invalid user: `rsync.rsync’# 创建一个不需要登录的系统用户[root@vagrant-centos65 /]# useradd rsync -s /sbin/nologin[root@vagrant-centos65 /]# chown -R rsync.rsync /data1

将用户名和密码重定义输出到我们的密码存放文件

# rsync_backup是用户名,maxincai是密码[root@vagrant-centos65 /]# echo “rsync_backup:maxincai” >/etc/rsync.password[root@vagrant-centos65 /]# cat /etc/rsync.passwordrsync_backup:maxincai# 由于我们存放的是密码文件,为了安全,修改权限为600,同时这也是rsync本身的要求root@vagrant-centos65 /]# chmod 600 /etc/rsync.password# 同时我们需要关闭防火樯[root@vagrant-centos65 /]# /etc/init.d/iptabls stop-bash: /etc/init.d/iptabls: No such file or directory[root@vagrant-centos65 /]# getenforceDisabled

下面配置客户端,将密码保存在密码配置文件,同是为了与服务端统一,我们使用相当的文件名,注意这里我们只需要放入密码即可

[root@vagrant-centos65 ~]# echo “maxincai” >/etc/rsync.password[root@vagrant-centos65 ~]# chmod 600 /etc/rsync.password[root@vagrant-centos65 ~]# cat /etc/rsync.passwordmaxincai

通过daemon方式远程传输的语法为:

Access via rsync daemon:

Pull: rsync [OPTION…] [USER@]HOST::SRC… [DEST]
rsync [OPTION…] rsync://[USER@]HOST[:PORT]/SRC… [DEST]
Push: rsync [OPTION…] SRC… [USER@]HOST::DEST
rsync [OPTION…] SRC… rsync://[USER@]HOST[:PORT]/DEST
在客户端进行拉取实例:

先看看server端的目录结构

[root@vagrant-centos65 data1]# pwd/data1[root@vagrant-centos65 data1]# tree.├── dir1│ └── test3├── dir2├── test1└── test23 directories, 2 files[root@vagrant-centos65 data1]#

开始拉取

[root@vagrant-centos65 ~]# rsync -avz rsync_backup@192.168.35.2::data1 /data1Password:# 需要输入密码,输入之前的定义的密码maxincaireceiving incremental file listcreated directory /data1./test1test2dir1/dir1/test3/dir2/sent 116 bytes received 289 bytes 90.00 bytes/sectotal size is 0 speedup is 0.00# 可以看到通过成功,看看同步之后的目录结构[root@vagrant-centos65 ~]# cd /data1[root@vagrant-centos65 data1]# lltotal 8drwxr-xr-x 3 root root 4096 Jan 15 09:11 dir1drwxr-xr-x 2 root root 4096 Jan 15 09:11 dir2-rw-r–r– 1 root root 0 Jan 15 09:10 test1-rw-r–r– 1 root root 0 Jan 15 09:11 test2[root@vagrant-centos65 data1]# tree.├── dir1│ └── test3├── dir2├── test1└── test2

3 directories, 2 files

在看看拉取的时候需要输入密码,不方便我们在rcontab中进行定义,所以我们需要让他自动读取密码,参数–password-file=/etc/rsync.password

[root@vagrant-centos65 data1]# rsync -avz rsync_backup@192.168.35.2::data1 /data1 –password-file=/etc/rsync.passwordreceiving incremental file listsent 66 bytes received 205 bytes 108.40 bytes/sectotal size is 0 speedup is 0.00

在客户端进行推送实例

# 创建10个文件[root@vagrant-centos65 data1]# touch {
1..10}[root@vagrant-centos65 data1]# lltotal 8-rw-r–r– 1 root root 0 Jan 15 09:25 1-rw-r–r– 1 root root 0 Jan 15 09:25 10-rw-r–r– 1 root root 0 Jan 15 09:25 2-rw-r–r– 1 root root 0 Jan 15 09:25 3-rw-r–r– 1 root root 0 Jan 15 09:25 4-rw-r–r– 1 root root 0 Jan 15 09:25 5-rw-r–r– 1 root root 0 Jan 15 09:25 6-rw-r–r– 1 root root 0 Jan 15 09:25 7-rw-r–r– 1 root root 0 Jan 15 09:25 8-rw-r–r– 1 root root 0 Jan 15 09:25 9drwxr-xr-x 3 root root 4096 Jan 15 09:11 dir1drwxr-xr-x 2 root root 4096 Jan 15 09:11 dir2-rw-r–r– 1 root root 0 Jan 15 09:10 test1-rw-r–r– 1 root root 0 Jan 15 09:11 test2# 开始推送[root@vagrant-centos65 data1]# rsync -avz /data1/ rsync_backup@192.168.35.2::data1 –password-file=/etc/rsync.passwordsending incremental file list./11023456789sent 558 bytes received 204 bytes 1524.00 bytes/sectotal size is 0 speedup is 0.00# 查看服务端的同步情况[root@vagrant-centos65 data1]# tree.├── 1├── 10├── 2├── 3├── 4├── 5├── 6├── 7├── 8├── 9├── dir1│ └── test3├── dir2├── test1└── test23 directories, 12 files

其他的语法

# 推送[root@vagrant-centos65 data1]# rsync -avz /data1/ rsync://rsync_backup@192.168.35.2/data1 –password-file=/etc/rsync.passwordsending incremental file listsent 195 bytes received 11 bytes 412.00 bytes/sectotal size is 0 speedup is 0.00# 拉取][][root@vagrant-centos65 data1]# rsync -avz rsync://rsync_backup@192.168.35.2/data1 /data1/ –password-file=/etc/rsync.passwordreceiving incremental file listsent 96 bytes received 317 bytes 826.00 bytes/sectotal size is 0 speedup is 0.00

小结:

rsync server:

vim /etc/rsyncd.conf(用户,目录,模块,虚拟用户及密码文件)

创建共享目录 /data1
创建rsync用户,并且授权访问/data1
创建密码文件,复制配置文件里的路径,然后添加密码内容,内容虚拟用户名:密码
密码文件权限600
rsync –daemon然后放入/etc/rc.local
tail /var/log/rsyncd.log
rsync client(多个)

密码文件和服务端没任何关系,命令时 –password-file=/etc/rsync.password 内容:密码

/etc/rsync.password 600
同步:
推、拉
排错:

防火墙和selinux

/var/log/rsyncd.log
整个部署流程整体考虑排查
操作习惯当作一个大事
排除单个文件

[root@vagrant-centos65 data1]# rsync -avz rsync://rsync_backup@192.168.35.2/data1 /data1/ –exclude=1 –password-file=/etc/rsync.password

排除多个文件

rsync -avz rsync://rsync_backup@192.168.35.2/data1 /data1/ –exclude={1,2} –password-file=/etc/rsync.passwordrsync -avz rsync://rsync_backup@192.168.35.2/data1 /data1/ –exclude=a –exclude=b –password-file=/etc/rsync.password# 排除连续的rsync -avz rsync://rsync_backup@192.168.35.2/data1 /data1/ –exclude={a..g} –password-file=/etc/rsync.password# 从文件中读取排除规则rsync -avz rsync://rsync_backup@192.168.35.2/data1 /data1/ –exclude-from=paichu.log –password-file=/etc/rsync.password服务端排除参数,在/etc/rsyncd.conf中修改:# 注意是用空格去分隔exclude=a b test/1.txt

转载于:https://www.cnblogs.com/linuxde/p/8716519.html

你可能感兴趣的文章
iphone-命令行编译--xcodebuild
查看>>
java keytool证书工具使用小结
查看>>
全新的PDO数据库操作类(仅适用Mysql)
查看>>
ImportError: No module named setuptools 解决方案
查看>>
Microsoft Team Foundation Server 2010 安装 序列号 注册码
查看>>
转 OFBiz安全组
查看>>
WMI服务故障,VBS脚本无法运行错误
查看>>
常见充值方式介绍及对比
查看>>
2012最新75款好看的英文字体免费下载【中篇】
查看>>
SilverLight学习笔记--进一步学习Isolated Storage独立存储一(理论篇)
查看>>
Google Cloud Messaging for Android (GCM)已推出,将取代C2DM框架
查看>>
敏捷结果30天之第十二天:效率角色-你是启动者还是完成者
查看>>
第十八章 19 结构体与函数
查看>>
Sharepoint学习笔记—Site Definition系列--7、如何在Site Definition中引入Master Page (1、Master Page的引入)...
查看>>
VMware-workstation-full-9.0.0-812388+完美汉化补丁+有效密钥
查看>>
ActivityGroup 实现tabHost
查看>>
桌面应用程序员简单尝试Rich JavaScript Application
查看>>
SQL Server R2 地图报表制作(一)
查看>>
[转]信息系统项目管理师考试论文写作技巧
查看>>
NYOJ488素数环
查看>>