概述
Rsync是一款开源的,快速的,多功能的,可实现增量的本地货远程数据镜像同步备份的工具。
Rsync特性
1.支持拷贝特殊文件,如连接、设备等
2.可以有排除指定文件或目录同步的功能,相当于打包命令tar
3.可以做到保持原来文件或目录的权限、时间、软硬连接等所有属性不变
4.可实现增量同步,即只同步发生变化的数据,因此数据传输效率很高
5.可以使用rcp、rsh、ssh等方式来配合传输文件,也可以通过socket连接
6.支持匿名或认证的进程模式传输,方便进行数据备份及镜像
Rsync命令及参数
rsync [OPTION...] SRC... [DEST]
常用参数选项说明
-v (verbose) 详细模式输出,传输时的进度信息
-z (compress) 传输时进行压缩,--compress-level=NUM可按照级别压缩
-r (recursive) 对子目录进行递归,目录下的所有目录都同样传输
-t (times) 保持文件时间信息
-o (owner) 保持文件属组信息
-p (perms) 保持文件权限
-g (group) 保持文件属组信息
-P (progress) 显示同步的过程及传输是的进度
-a (archive) 归档模式,表示以递归方式传输文件,并保持文件属性,等于-rtopgDl
-e (rsh=COMMEND) 使用的信道协议,指定替代rsh的shell程序,如ssh
-D (devices) 保持设备文件信息
-l (links) 保留软连接
--exclude=PATTERN 指定排除不需要传输的文件模式
Rsync工作方式
1.本地数据传输(local-only mode)
rsync [OPTION...] SRC... [DEST]
1.rync是同步命令
2.[OPTION...]是同步时的参数选项
3.SRC是源,即待拷贝的文件、目录或分区
4.[DEST]是目的文件、目录或分区
实例
[test@C64-5-S ~]$ rsync -avz /etc /tmp
sending incremental file list
etc/
etc/.pwd.lock
etc/DIR_COLORS
etc/DIR_COLORS.256color
2.通过rcp、ssh等通道传输
拉取:rsync [OPTION...] [USER@]HOST:SRC... [DEST]
推送:rsync [OPTION...] SRC... [USER@]HOST:DEST
1.rync是同步命令
2.[OPTION...]是同步时的参数选项
3.[USER@]HOST...为Rsync同步的远程的连接用户和主机地址
4.SRC是源,即待拷贝的文件、目录或分区,和HOST之间用一个冒号连接
5.[DEST]是目的文件、目录或分区
实例
由于之前已经做过服务器间的免秘钥认证,所以这里直接执行命令就可以了
[syner@C64-5-S ~]$ rsync -avzP -e 'ssh -p 52113' syner@2.2.2.6:/home/syner/temp ~
receiving incremental file list
temp/
temp/tmp.txt
0 100%
0.00kB/s
0:00:00 (xfer#1, to-check=0/2)
sent 34 bytes
received 114 bytes
296.00 bytes/sec
total size is 0
speedup is 0.00
[syner@C64-5-S ~]$ rsync -avzP ~/temp/ -e 'ssh -p 52113' syner@2.2.2.6:/home/syner/temp
sending incremental file list
sent 57 bytes
received 12 bytes
138.00 bytes/sec
total size is 0
speedup is 0.00
3.以守护进程方式传输数据
拉取:1. rsync [OPTION...] [USER@]HOST::SRC... [DEST]
2. rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
推送:1. rsync [OPTION...] SRC... [USER@]HOST::DEST
2. rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
做之前要确保服务端S与客户端B、C之前双向的ssh key免秘钥已经配置好了
首先检查双向ssh免秘钥是否已经配置好
[syner@C64-5-S ~]$ ssh -p 52113 2.2.2.6 /sbin/ifconfig eth0
eth0
Link encap:Ethernet
HWaddr 00:0C:29:79:36:89
inet addr:2.2.2.6
Bcast:2.2.2.255
Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe79:3689/64 Scope:Link
UP BROADCAST RUNNING MULTICAST
MTU:1500
Metric:1
RX packets:60154 errors:0 dropped:0 overruns:0 frame:0
TX packets:30705 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:14749577 (14.0 MiB)
TX bytes:26731727 (25.4 MiB)
[syner@C64-5-S ~]$ ssh -p 52113 2.2.2.7 /sbin/ifconfig eth0
eth0
Link encap:Ethernet
HWaddr 00:0C:29:BA:45:99
inet addr:2.2.2.7
Bcast:2.2.2.255
Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:feba:4599/64 Scope:Link
UP BROADCAST RUNNING MULTICAST
MTU:1500
Metric:1
RX packets:52654 errors:0 dropped:0 overruns:0 frame:0
TX packets:7334 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:15527023 (14.8 MiB)
TX bytes:946738 (924.5 KiB)
[syner@C64-6-B ~]$ ssh -p 52113 2.2.2.5 /sbin/ifconfig eth0
eth0
Link encap:Ethernet
HWaddr 00:0C:29:CA:07:AA
inet addr:2.2.2.5
Bcast:2.2.2.255
Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:feca:7aa/64 Scope:Link
UP BROADCAST RUNNING MULTICAST
MTU:1500
Metric:1
RX packets:81709 errors:0 dropped:0 overruns:0 frame:0
TX packets:39786 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:30099514 (28.7 MiB)
TX bytes:27115850 (25.8 MiB)
[syner@C64-7-C ~]$ ssh -p 52113 2.2.2.5 /sbin/ifconfig eth0
eth0
Link encap:Ethernet
HWaddr 00:0C:29:CA:07:AA
inet addr:2.2.2.5
Bcast:2.2.2.255
Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:feca:7aa/64 Scope:Link
UP BROADCAST RUNNING MULTICAST
MTU:1500
Metric:1
RX packets:81736 errors:0 dropped:0 overruns:0 frame:0
TX packets:39805 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:30103541 (28.7 MiB)
TX bytes:27120153 (25.8 MiB)
配置服务端
(1)编写配置文件
[root@C64-5-S ~]# vi /etc/rsyncd.conf
#rsync_config
uid=root
gid=root
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[syner]
path = /home/syner
ignore = errors
read only = false
list = false
hosts allow = 2.2.2.6/32,2.2.2.7/32
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
exclude=/home
~
~
参数说明
uid = root | rsync使用的用户,缺省uid为-2,通常为nobody |
gid = root | rsync使用的组(用户所在的组),缺省gid为-2,通常为nobody |
use chroot = no | 如果为true,daemon会在给客户端传输文件前“chroot to the path”,这是rsync安全的一个配置, 因为我们大多数都是在内网使用rsync,所以不配置也可以 |
max connection = 200 | 设置最大连接数,默认为0,意思是无限制,负值为关闭这个模块 |
timeout = 400 | 默认为0,永不超时,建议改为300-600(5-10分钟) |
pid file = /var/run/rsyncd.pid | rsync daemon启动后将其进程PID写入此文件,如果这个文件已经存在,rsync进程不会覆盖该 文件,而是会终止 |
lock file = /var/run/rsyncd.lock | 指定lock文件来支持“max connection”参数,是得总连接数不会超过限制 |
log file = /var/log/rsyncd.log | 不设置或设置错误,rsync会使用syslog输出相关日志信息 |
ignore errors | 忽略IO错误 |
read only = false | 指定客户端是否可以上传文件,默认对所有模块都为true |
list = false | 是否允许客户端查看可用模块列表,默认为true |
hosts allow = 2.2.2.6/32 | 指定可以连接的客户端主机名或IP地址或地址段,默认无此参数,即都可以连接 |
host deny = 0.0.0.0/32 | 指定不可以连接的客户端的主机名或IP地址或地址段,默认无此参数,即都可以连接 |
auth user = rsync_backup | 指定以空格或逗号分隔的用户可以使用哪些模块,用户不需要再本地系统中存在,默认 所有用户无密码访问(anonymous rsync) |
secrets file = /etc/rsync.password | 指定用户名和密码存放的文件,格式 用户名:密码 密码不超过8位 |
[syner] | 模块名称,需要用中括号括起来,起名没有特殊要求,但是最好是有意义的名称,方便维护 |
path = /home/syner | 在这个模块中,daemon使用的文件系统或目录,目录的权限要和配置文件中的权限一致 |
#exclude = /home | 排除指定文件或目录,相对路径 |
(2)配置用于rsync同步的账号、密码及账号文件权限
[root@C64-5-S ~]# echo "rsync_backup:syner" >/etc/rsync.password
[root@C64-5-S ~]# chmod 600 /etc/rsync.password
[root@C64-5-S ~]# cat /etc/rsync.password
rsync_backup:syner
[root@C64-5-S ~]# ll /etc/rsync.password
-rw------- 1 root root 19 Sep 24 04:24 /etc/rsync.password
(3)以守护进程方式启动rsync服务
[root@C64-5-S ~]# rsync --daemon
[root@C64-5-S ~]# ps -ef | grep rsync|grep -v grep
root
11589
1
0 04:29 ?
00:00:00 rsync --daemon
[root@C64-5-S ~]# netstat -lnt| grep 873
tcp
0
0 0.0.0.0:873
0.0.0.0:*
LISTEN
tcp
0
0 :::873
:::*
LISTEN
[root@C64-5-S ~]# lsof -i tcp:873
COMMAND
PID USER
FD
TYPE DEVICE SIZE/OFF NODE NAME
rsync
11589 root
4u
IPv4
61287
0t0
TCP *:rsync (LISTEN)
rsync
11589 root
5u
IPv6
61288
0t0
TCP *:rsync (LISTEN)
可选参数
--daemon | 以守护进程方式启动rsync服务 |
--address | 绑定指定IP地址提供服务 |
--config=FILE | 更改配置文件路径,而不是默认的/etc/rsyncd.conf |
--port=PORT | 更改其他端口提供服务,而不是缺省的873端口 |
(4)设置rsync服务开机自启动
[root@C64-5-S ~]# echo "/usr/bin/rsync --daemon">>/etc/rc.local
[root@C64-5-S ~]# tail -3 /etc/rc.local
/etc/init.d/rpcbind start
/etc/init.d/nfs start
/usr/bin/rsync --daemon
关闭rsync服务
[root@C64-5-S ~]# pkill rsync
启动rsync服务
[root@C64-5-S ~]# rsync --daemon
也可以通过编写脚本当成服务进行控制
[root@C64-5-S ~]# vi /etc/init.d/rsyncd
#!/bin/sh
#author Paul
#
#rsync
start/stop rsync service
#
#chkconfig: 35 13 91
#description:this is rsync service management shell script
#process name:rsyncd
#source function library
. /etc/rc.d/init.d/functions
start(){
rsync --daemon
if [ $? -eq 0 -a `ps -ef | grep -v grep|grep rsync|wc -l` -gt 0 ];then
action "Starting Rsync:" /bin/true
else
action "Starting Rsync:" /bin/false
fi
}
stop(){
pkill rsync
if [ `ps -ef | grep -v grep | grep "rsync --daemon" | wc -l` -lt 1 ];then
action "Stopping Rsync:`ps -ef | grep -v grep | grep rsync | wc -l` "/bin/true
else
action "Stopping Rsync:`ps -ef | grep -v grep |grep "rsync --daemon"|wc -l`" /bin/false
fi
}
case $1 in
start)
start
;;
stop)
stop
;;
restart|reload)
$0 stop
$0 start
;;
*)
编译
[root@C64-5-S ~]# yum -y install dos2unix
Loaded plugins: fastestmirror, security
Setting up Install Process
Determining fastest mirrors
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
base
| 3.7 kB
00:00
extras
| 3.4 kB
00:00
extras/primary_db
|
26 kB
00:00
updates
| 3.4 kB
00:00
Resolving Dependencies
--> Running transaction check
---> Package dos2unix.x86_64 0:3.1-37.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
==============================================================================================
Package
Arch
Version
Repository
Size
==============================================================================================
Installing:
dos2unix
x86_64
3.1-37.el6
base
16 k
Transaction Summary
==============================================================================================
Install
1 Package(s)
Total download size: 16 k
Installed size: 18 k
Downloading Packages:
dos2unix-3.1-37.el6.x86_64.rpm
|
16 kB
00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : dos2unix-3.1-37.el6.x86_64
1/1
Verifying
: dos2unix-3.1-37.el6.x86_64
1/1
Installed:
dos2unix.x86_64 0:3.1-37.el6
Complete!
[root@C64-5-S ~]# dos2unix /etc/init.d/rsyncd
dos2unix: converting file /etc/init.d/rsyncd to UNIX format ...
授权
[root@C64-5-S ~]# chmod 700 /etc/init.d/rsyncd
加入自启动服务
[root@C64-5-S ~]# chkconfig rsyncd on
[root@C64-5-S ~]# chkconfig --list rsyncd
rsyncd
0:off
1:off
2:on
3:on
4:on
5:on
6:off
这样就可以以服务的形式进行启停
[root@C64-5-S init.d]# /etc/init.d/rsyncd stop
Terminated
[root@C64-5-S init.d]# /etc/init.d/rsyncd start
Starting Rsync: [
OK
]
配置客户端
配置rsync的密码(这里不需要账号了),并修改权限
[root@C64-6-B ~]# echo "syner" > /etc/rsync.password
[root@C64-6-B ~]# chmod 600 /etc/rsync.password
测试
[syner@C64-6-B ~]$ tree
.
└── test
└── test.txt
1 directory, 1 file
[syner@C64-6-B ~]$ rsync -avzP /home/syner/test rsync_backup@2.2.2.5::syner --password-file=/etc/rsync.password
sending incremental file list
test/
test/test.txt
0 100%
0.00kB/s
0:00:00 (xfer#1, to-check=0/2)
sent 106 bytes
received 31 bytes
274.00 bytes/sec
total size is 0
speedup is 0.00
在服务端检查是否推送到了
[syner@C64-5-S ~]$ tree
.
└── test
└── test.txt
1 directory, 1 file
另一种推送语法
rsync -avzP /home/syner/test rsync://rsync_backup@2.2.2.5/syner --password-file=/etc/rsync.password
抓取数据
[syner@C64-6-B ~]$ rsync -avzP rsync://rsync_backup@2.2.2.5:/syner
/tmp --password-file=/etc/rsync.password
[syner@C64-6-B tmp]$ rsync -avzP rsync_backup@2.2.2.5::syner /tmp --password-file=/etc/rsync.password
P.S.在推送时可以加--delete参数,意思是如果我推送目录中没有的,远端目录也应该没有(即删除多余项目),这样做可以保证rsync两端目录保持高度一致。
最后
以上就是想人陪御姐为你收集整理的Linux-12-RsyncRsync命令及参数的全部内容,希望文章能够帮你解决Linux-12-RsyncRsync命令及参数所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复