linux下的数据备份工具rsync讲解

linux下的数据备份工具 rsync(remote sync 远程同步)


名词解释:

sync(Synchronize,即“同步”)为UNIX操作系统的标准系统调用,功能为将内核文件系统缓冲区的所有数据(也即预定将通过低级I/O系统调用写入存储介质的数据)写入存储介质(如硬盘)。

sync
是一个linux同步命令,含义为迫使缓冲块数据立即写盘并更新超级块。在linux系统中,为了加快数据的读取速度,默认情况下,某些数据将不会直接写
入硬盘,而是先暂存内存中,如果一个数据被重复写,这样速度一定快,但存在一个问题,万一重新启动,或者是关机,或者是不正常断电的情况下,由于数据还没
来得及存入硬盘,会造成数据更新不正常,这时需要命令sync进行数据的写入,即#sync,在内存中尚未更新的的数据会写入硬盘中。所以在关机或者开机
之前最好多执行这个几次,以确保数据写入硬盘。

Rsync
不仅可以远程同步数据(类似于scp),当然还可以本地同步数据(类似于cp),但不同于cp或scp的一点是,rsync不像cp/scp一样会覆盖以
前的数据(如果数据已经存在),它会先判断已经存在的数据和新数据有什么不同,只有不同时才会把不同的部分覆盖掉。

scp 用来远程拷贝数据,通过ssh协议通信。它的语法很简单,类似于cp, 唯一不同的是,源地址或者目标地址需要使用远程主机的ip或者hostname. 例如要把本地的数据拷贝到远程一台主机(192.168.0.111)的/data/目录下,可以这样实现: scp /dir/filename [email protected]:/data/ 其中filename 可以是目录也可以是文件。或者也可以把远程的文件拷贝到本地: scp [email protected]:/data/filename /data/

示例,scp拷贝root目录下面的文件到远程主机192.168.20.10的data目录下;


1

2

3

4

5

6


[[email protected] ~]# scp /root/iptables.sh [email protected]:/data

The authenticity of host ‘192.168.20.10 (192.168.20.10)‘ can‘t be established.

RSA key fingerprint is 84:47:af:bf:11:69:43:aa:bc:fe:9b:d6:08:b4:c4:1a.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added ‘192.168.20.10‘ (RSA) to the list of known [email protected]‘s password: 

iptables.sh                                             100%  254     0.3KB/s   00:00

首次连接会提示是否要继续连接,我们输入yes继续,当建立连接后,需要输入远程主机root密码。

示例,scp拷贝目录需要加-r参数,拷贝的同时可以更改目录名;


1

2

3

4

5

6

7

8


[[email protected] rsync]# scp -r /root/rsync/test1/ 192.168.20.10:/data/a/

[email protected]‘s password: 

1                                                       100%    0     0.0KB/s   00:00    

1.txt                                                   100%    0     0.0KB/s   00:00    

2                                                       100%    0     0.0KB/s   00:00    

2.txt                                                   100%    0     0.0KB/s   00:00    

aa                                                      100%    0     0.0KB/s   00:00    

3                                                       100%    0     0.0KB/s   00:00


安装rysnc的命令:yum install -y rsync

示例一,拷贝当前目录下test.txt 到/tmp目录下,拷贝的同时也可以更改文件名;


1

2

3

4

5

6

7


[[email protected] ~]# rsync -av test.txt /tmp/a.txt

sending incremental file list

test.txt

sent 279 bytes  received 31 bytes  620.00 bytes/sec

total size is 203  speedup is 0.65

[[email protected] ~]# ls /tmp/a.txt 

/tmp/a.txt

示例二,拷贝当前目录test.txt 到远程主机192.168.20.10 /data目录下,需要输入远程主机的密码;


1

2

3

4

5

6


[[email protected] ~]# rsync -av test.txt 192.168.20.10:/data/

[email protected]‘s password: 

sending incremental file list

test.txt

sent 279 bytes  received 31 bytes  88.57 bytes/sec

total size is 203  speedup is 0.65

示例三,从远程主机192.168.20.10 /data目录下拷贝httpd文件到本地当前目录下;


1

2

3

4

5

6


[[email protected] ~]# rsync -av 192.168.20.10:/data/httpd ./

[email protected]‘s password: 

receiving incremental file list

httpd

sent 30 bytes  received 7538228 bytes  886853.88 bytes/sec

total size is 7537230  speedup is 1.00


1. rsync 命令格式

rsync [OPTION]... SRC  DEST

rsync [OPTION]... SRC  [[email protected]]HOST:DEST

rsync [OPTION]... [[email protected]]HOST:SRC  DEST

rsync [OPTION]... [[email protected]]HOST::SRC  DEST

rsync [OPTION]... SRC  [[email protected]]HOST::DEST

上面第一个例子即为第一种格式,第二个例子即为第二种格式,但不同的是,[email protected] 如果不加默认指的是root用户;第三个例子即为第三种格式是从远程目录同步数据到本地。第四种以及第五种格式使用了两个冒号,这种方式和前面的方式的不同在于验证方式不同。

2. rsync常用选项

-a    归档模式,表示以递归方式传输文件,并保持所有属性,等同于-rlptgoD, -a选项后面可以跟一个 --no-OPTION 这个表示关闭-rlptgoD中的某一个,例如-a--no-l 等同于-rptgoD

-r    对子目录以递归模式处理,主要是针对目录来说的,如果单独传一个文件不需要加-r,但是传输的是目录必须加-r选项

-v    打印一些信息出来,比如速率,文件数量等

-l     保留软链结

-L     向对待常规文件一样处理软链接,如果是SRC中有软链接文件,则加上该选项后将会把软链接指向的目标文件拷贝到DST

-p     保持文件权限

-o     保持文件属主信息

-g     保持文件属组信息

-D     保持设备文件信息

-t     保持文件时间信息

--delete    删除那些DST中SRC没有的文件

--exclude=PATTERN    指定排除不需要传输的文件,等号后面跟文件名,可以是万用字符模式(如*.txt)

--progress    在同步的过程中可以看到同步的过程状态,比如统计要同步的文件数量、同步的文件传输速度等等

-u    加上这个选项后将会把DEST目标文件中比SRC源文件还新的文件排除掉,不会覆盖

最常用的选项有 -a -v --delete --exclude


示例:创建实验环境


1

2

3

4

5

6

7

8

9

10

11

12


[[email protected] ~]# mkdir rsync

[[email protected] ~]# cd rsync/

[[email protected] rsync]# mkdir test1

[[email protected] rsync]# cd test1

[[email protected] test1]# touch 1 2 3

[[email protected] test1]# ln -s /root/123.txt ./123.txt

[[email protected] test1]# ls -l

-rw-r--r-- 1 root root  0 Apr 22 16:02 1

lrwxrwxrwx 1 root root 13 Apr 22 16:03 123.txt -> /root/123.txt

-rw-r--r-- 1 root root  0 Apr 22 16:02 2

-rw-r--r-- 1 root root  0 Apr 22 16:02 3

[[email protected] test1]# cd ..

实验目的,拷贝test1目录到test2目录,实际上rsync新建立了一个test2目录并把test1目录放在test2目录下面,这不是我们想要的结果;


1

2

3

4

5

6

7


[[email protected] rsync]# rsync -a test1 test2

[[email protected] rsync]# ls test2

test1

[[email protected] rsync]# ls

test1  test2

[[email protected] rsync]# ls test2/test1/

1  123.txt  2  3

为了避免上面的操作,在同步目录的时候在目录后面加 /


1

2

3

4

5


[[email protected] rsync]# rsync -a test1/ test2/

[[email protected] rsync]# ls

test1  test2

[[email protected] rsync]# ls test2/

1  123.txt  2  3

-a选项还可以与--no-OPTION一起使用,意思为不理会选项的文件;如下例,跳过123.txt软链接文件,不做拷贝;


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17


[[email protected] rsync]# rsync -av --no-l test1/ test2/

sending incremental file list

created directory test2

./

1

skipping non-regular file "123.txt"

2

3

sent 200 bytes  received 72 bytes  544.00 bytes/sec

total size is 13  speedup is 0.05

[[email protected] rsync]# ls

test1  test2

[[email protected] rsync]# ls -l test2/

total 0

-rw-r--r-- 1 root root 0 Apr 22 16:02 1

-rw-r--r-- 1 root root 0 Apr 22 16:02 2

-rw-r--r-- 1 root root 0 Apr 22 16:02 3

加-L选项,拷贝的时候会拷贝软链接文件对应的源文件到目标目录里面;


1

2

3

4

5

6

7

8

9

10


[[email protected] rsync]# rsync -avL test1/ test2/

sending incremental file list

created directory test2

./

1

123.txt

2

3

sent 231 bytes  received 91 bytes  644.00 bytes/sec

total size is 0  speedup is 0.00


1

2

3

4

5

6


[[email protected] rsync]# ls -l test2/

total 0

-rw-r--r-- 1 root root 0 Apr 22 16:02 1

-rw-r--r-- 1 root root 0 Apr 22 16:03 123.txt

-rw-r--r-- 1 root root 0 Apr 22 16:02 2

-rw-r--r-- 1 root root 0 Apr 22 16:02 3

test1和test2目录下的1文件,创建的时间是一样的;touch test2/1之后创建时间晚了一些。同步的时候不加-u选项,发现同步后的时间还是test1/1的创建时间;


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15


[[email protected] rsync]# ll test1/1 test2/1

-rw-r--r-- 1 root root 0 Apr 22 16:02 test1/1

-rw-r--r-- 1 root root 0 Apr 22 16:02 test2/1

[[email protected]ng rsync]# touch test2/1

[[email protected] rsync]# ll test1/1 test2/1

-rw-r--r-- 1 root root 0 Apr 22 16:02 test1/1

-rw-r--r-- 1 root root 0 Apr 22 16:31 test2/1

[[email protected] rsync]# rsync -av test1/1 test2/1

sending incremental file list

1

sent 65 bytes  received 31 bytes  192.00 bytes/sec

total size is 0  speedup is 0.00

[[email protected] rsync]# ll test1/1 test2/1

-rw-r--r-- 1 root root 0 Apr 22 16:02 test1/1

-rw-r--r-- 1 root root 0 Apr 22 16:02 test2/1

加-u选项,如果目标文件比源文件新,那么会忽略掉该文件,不做同步;


1

2

3

4

5

6

7

8

9

10


[[email protected] rsync]# touch test2/1

[[email protected] rsync]# ll test2/1

-rw-r--r-- 1 root root 0 Apr 22 16:37 test2/1

[[email protected] rsync]# rsync -avu test1/1 test2/1

sending incremental file list

sent 26 bytes  received 12 bytes  76.00 bytes/sec

total size is 0  speedup is 0.00

[[email protected] rsync]# ll test2/1 test1/1

-rw-r--r-- 1 root root 0 Apr 22 16:02 test1/1

-rw-r--r-- 1 root root 0 Apr 22 16:37 test2/1

删除test1/123.txt,同步之后test2目录下的123.txt不会删除;

加--delete选项,同步之后test2目录下的123.txt文件也会删除;具体作用是删除目标目录比源目录多出来的文件;


1

2

3

4

5

6

7

8

9

10

11


[[email protected] rsync]# rm -f test1/123.txt 

[[email protected] rsync]# ls test1/

1  2  3

[[email protected] rsync]# rsync -av test1/ test2/

sending incremental file list

./

1

sent 94 bytes  received 34 bytes  256.00 bytes/sec

total size is 0  speedup is 0.00

[[email protected] rsync]# ls test2/

1  123.txt  2  3


1

2

3

4

5

6

7


[[email protected] rsync]# rsync -av --delete test1/ test2/

sending incremental file list

deleting 123.txt

sent 52 bytes  received 12 bytes  128.00 bytes/sec

total size is 0  speedup is 0.00

[[email protected] rsync]# ls test2/

1  2  3

--exclude选项的作用是,同步的过程中排除文件;选项后面的文件不会同步拷贝到目标目录下;


1

2

3

4

5

6


[[email protected] rsync]# touch test1/aa

[[email protected] rsync]# rsync -a --exclude="aa" test1/ test2/

[[email protected] rsync]# ls test1/

1  2  3  aa

[[email protected] rsync]# ls test2/

1  2  3

--progress选项的作用是显示同步过程的详细信息;--exclude选项后面也可以使用通配符 *


1

2

3

4

5

6

7

8

9

10

11

12


[[email protected] rsync]# touch test1/1.txt test1/2.txt

[[email protected] rsync]# rsync -a --progress --exclude="*.txt" test1/ test2/

sending incremental file list

./

aa

           0 100%    0.00kB/s    0:00:00 (xfer#1, to-check=0/5)

sent 109 bytes  received 34 bytes  286.00 bytes/sec

total size is 0  speedup is 0.00

[[email protected] rsync]# ls test2/

1  2  3  aa

[[email protected] rsync]# ls test1/

1  1.txt  2  2.txt  3  aa

3. rsync选项总结

rsync -av   dir1/ dir2/    #其中dir2/目录可以不存在,记得同步目录时一定要在末尾加上/

-a    会把软连接原原本本的拷贝过去;

-v    可视化显示同步信息,如传输的文件大小,传输速度,发送和接收的大小;

rsync -avL test1/ test2/    加-L会拷贝软连接文件对应的源文件到目标目录里面;

touch test2/1.txt; rsync -avu test1/ test2/    -u 选项的作用是,如果目标文件比源文件新,那么会忽略掉该文件

rsync -av --delete test1/ test2/   #这样会把test2/目录比test1/目录多出来的文件删除掉

rsync -a --exclude=“2.txt” test1/ test2/  #在同步的过程中,会忽略掉2.txt这个文件

rsync -a --progress --exclude=“*.txt” test1/ test2/  #--progress 显示同步过程的详细信息,--exclude后面也可以使用通配符*

4. rsync应用实例 - ssh方式访问

第一种方式:本地拷贝到远程linux主机,需要输入远程主机的密码;


1

2

3

4

5

6

7

8

9

10

11

12

13


[[email protected] rsync]# rsync -avL test1/ [email protected]:/tmp/test2/

[email protected]‘s password: 

sending incremental file list

created directory /tmp/test2

./

1

1.txt

2

2.txt

3

aa

sent 336 bytes  received 129 bytes  132.86 bytes/sec

total size is 0  speedup is 0.00

第二种方式:从远程linux主机同步到本地机器,也需要输入远程主机的密码;


1

2

3

4

5

6

7

8

9

10

11

12

13


[[email protected] rsync]# rsync -avL [email protected]:/tmp/test2/ ./test3/

[email protected]10‘s password: 

receiving incremental file list

created directory ./test3

./

1

1.txt

2

2.txt

3

aa

sent 128 bytes  received 329 bytes  130.57 bytes/sec

total size is 0  speedup is 0.00

通过创建秘钥对,让两台机器产生信任关系同步数据时不用输入密码

具体步骤如下:

在A机器当前用户家目录创建.ssh目录,执行ssh-keygen命令,提示输入密码的时候直接回车,默认为空密码,最后生成公钥id_rsa.pub和私钥id_rsa文件;


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30


[[email protected] ~]# mkdir .ssh

[[email protected] ~]# ssh-keygen 

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa): 

Enter passphrase (empty for no passphrase): 

Enter same passphrase again: 

Your identification has been saved in

/root/.ssh/id_rsa

.

Your public key has been saved in

/root/.ssh/id_rsa.pub

.

The key fingerprint is:

ab:0e:83:11:69:69:34:d2:34:87:b8:07:40:36:e4:a3 

[email protected]

The key‘s randomart image is:

+--[ RSA 2048]----+

|*O=..            |

|=o+*             |

| =*              |

|ooo.             |

|E..     S        |

|   o     .       |

|  . o   .        |

|     o .         |

|     .o          |

+-----------------+

[

[email protected] ~]# ls .ssh/

id_rsa  id_rsa.pub


1

2


[[email protected] ~]# cat .ssh/id_rsa.pub 

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEArLHpwzyzfPtjihx90/vdl9HqtLfmpuNDGYL+UWOcFAAul6PVz81fb/0RSAAPSu1Q3UdBWXlTqPUH4JucwaxYW+obW/zmteuZRaGf06iY01cj/Nr74ML0792cvfjCU87FyEH+ZcvNhgRU+iTo+ES0kkLEuHV1x3JJLOhgYzIU0RtuU3CRiFxPHo92jNjpOs66YW3TbOX0AEB47WoRmKThiQVwoU7Lwqpl/N7vQHtdj9vPtsVZsguKlCB5a2YoxRpnbdn8a5jdzVKuy+hBrdfP/1NkmVU9mBTV/f0b+is5uHmQqNVAQW5fIi7QdVWG8HuyQliOXZUxoxGPCAjCuNy+dw== [email protected]

拷贝A机器的公钥内容,复制到B机器的/root/.ssh/authorized_keys文件中(如果B机器没有.ssh目录和authorized_keys文件需要创建)


1

2

3

4


[[email protected] ~]# mkdir .ssh

[[email protected] ~]# chmod 700 .ssh/

[[email protected] ~]# touch .ssh/authorized_keys

[[email protected] ~]# vi .ssh/authorized_keys

返回到A机器,执行命令ssh [email protected]  (B机器的ip地址)不用输入密码即可访问B机器了。


1

2

3

4

5

6

7

8


[[email protected] ~]# ssh [email protected]

The authenticity of host ‘192.168.20.10 (192.168.20.10)‘ can‘t be established.

RSA key fingerprint is 84:47:af:bf:11:69:43:aa:bc:fe:9b:d6:08:b4:c4:1a.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added ‘192.168.20.10‘ (RSA) to the list of known hosts.

Last login: Wed Apr 22 19:35:40 2015 from 192.168.20.1

[[email protected] ~]# hostname 

localhost.localdomain

A机器执行exit退出,执行同步命令,这次不用输入密码即可同步。


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15


[[email protected] ~]# exit

logout

Connection to 192.168.20.10 closed.

[[email protected] ~]# rsync -av rsync/test1/ [email protected]:/tmp/test3/

sending incremental file list

created directory /tmp/test3

./

1

1.txt

2

2.txt

3

aa

sent 336 bytes  received 129 bytes  310.00 bytes/sec

total size is 0  speedup is 0.00

如果ssh端口不是22,那么需要指定一个端口号,命令为:rsync -av "--rsh=ssh -p port” /dir1/ [email protected]:/tmp/dir2/ 或者 rsync -av  -e "ssh -p port"  /dir1/ [email protected]:/tmp/dir2/

更改B机器的ssh端口号为222,在A机器使用telnet 检测B机器22端口,提示连接拒绝,当然也不能同步数据,需要指定端口号 "--rsh=ssh -p 222" 可以同步数据,更改端口号之后更加安全,防止他人通过端口攻击。

更改ssh端口号,编辑/etc/ssh/sshd_config文件,找到PORT 22这一行更改即可,保存退出后,重启sshd服务生效。


1

2

3

4


[[email protected] ~]# vi /etc/ssh/sshd_config 

[[email protected] ~]# service sshd restart

停止 sshd:                                                [确定]

正在启动 sshd:


1

2

3


[[email protected] ~]# telnet 192.168.20.10 22

Trying 192.168.20.10...

telnet: connect to address 192.168.20.10: Connection refused


1

2

3

4


[[email protected] ~]# rsync -av rsync/test1/ [email protected]:/tmp/test2/

ssh: connect to host 192.168.20.10 port 22: Connection refused

rsync: connection unexpectedly closed (0 bytes received so far) [sender]

rsync error: error in rsync protocol data stream (code 12) at io.c(600) [sender=3.0.6]


1

2

3

4

5

6

7

8

9

10

11

12


[[email protected] ~]# rsync -av "--rsh=ssh -p 222" rsync/test1/ [email protected]:/tmp/test2/

sending incremental file list

created directory /tmp/test2

./

1

1.txt

2

2.txt

3

aa

sent 336 bytes  received 129 bytes  310.00 bytes/sec

total size is 0  speedup is 0.00


5. rsync应用实例 - 服务器客户端C/S模式

这种方式可以理解成这样,在远程主机上建立一个rsync的服务器,在服务器上配置好rsync的各种应用,然后本机作为rsync的一个客户端去连接远程的rsync服务器。安全性能会大大提高,也可以自定义配置很多项目,比较灵活。日常环境推荐使用。


需要新建配置文件 /etc/rsyncd.conf ,内容如下,#号后的内容不用写进去;

#port=873        #监听端口默认为873,也可以是别的端口

log file=/var/log/rsync.log  #指定日志

pid file=/var/run/rsyncd.pid  #指定pid

#address=192.168.20.10  #可以定义绑定的ip

以上部分为全局配置部分,以下为模块内的设置

[test]    #为模块名,自定义

path=/tmp/rsync  # 指定该模块对应在哪个目录下

use chroot=true #是否限定在该目录下,默认为true,当有软连接时,需要改为fasle

max connections=4  # 指定最大可以连接的客户端数

read only=no  #是否为只读,yes为只读,不能在对应目录下写入文件。

list=true  #是否可以列出模块名

uid=root #以哪个用户的身份来传输

gid=root  #以哪个组的身份来传输

auth users=test #指定验证用户名,可以不设置

secrets file=/etc/rsyncd.passwd #指定密码文件,如果设定验证用户,这一项必须设置

hosts allow=192.168.0.101 #设置可以允许访问的主机,可以是网段

密码文件/etc/rsyncd.passwd的内容格式为:username:password

启动服务的命令是:rsync --daemon

默认去使用/etc/rsyncd.conf这个配置文件,也可以指定配置文件 rsync --daemon --config=/etc/rsyncd2.conf

实验,编辑rsyncd.conf文件,保存退出;

配置文件hosts allow 允许访问主机设置ip网段,也可以设置固定ip,多个ip用空格分隔。


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16


[[email protected] rsync]# cat /etc/rsyncd.conf 

#port=873

log file=/var/log/rsync.log

pid file=/var/run/rsyncd.pid

#address=192.168.20.10

[test]

path=/tmp/rsync

use chroot=true

max connections=4

read only=no

list=true

uid=root

gid=root

#auth users=test

#secrets file=/etc/rsyncd.passwd

hosts allow=192.168.20.0/24

启动rsync服务,进程也启动,默认873端口也监听;


1

2

3

4

5

6

7


[[email protected] tmp]# rsync --daemon

[[email protected] tmp]# ps aux |grep rsync

root      1583  0.0  0.1   6232   644 ?        Ss   14:49   0:00 rsync --daemon

root      1585  0.0  0.1   5976   740 pts/0    S+   14:50   0:00 grep rsync

[[email protected] tmp]# netstat -nlp |grep rsync

tcp        0      0 0.0.0.0:873                 0.0.0.0:*      LISTEN      1583/rsync

tcp        0      0 :::873                      :::*           LISTEN      15

配置OK后,访问远程服务器#rsync -av [email protected]::test/test1/ /tmp/test1/

中间2个冒号,后面跟模块名test,后面跟test1目录,实际就是/tmp/rsync/test1/目录,模块对应的目录里面。

1)从本地同步数据到服务器端,同步的时候也可以进行改名;


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22


[[email protected] rsync]# rsync -avL --progress test1/ [email protected]::test/test/

sending incremental file list

created directory /test

./

1

           0 100%    0.00kB/s    0:00:00 (xfer#1, to-check=8/10)

1.txt

        1076 100%    0.00kB/s    0:00:00 (xfer#2, to-check=7/10)

2

           0 100%    0.00kB/s    0:00:00 (xfer#3, to-check=6/10)

2.txt

           0 100%    0.00kB/s    0:00:00 (xfer#4, to-check=5/10)

3

           0 100%    0.00kB/s    0:00:00 (xfer#5, to-check=4/10)

aa

           0 100%    0.00kB/s    0:00:00 (xfer#6, to-check=3/10)

tree

       36464 100%    1.93MB/s    0:00:00 (xfer#7, to-check=2/10)

a1/

b1/

sent 37992 bytes  received 152 bytes  3632.76 bytes/sec

total size is 37540  speedup is 0.98


1

2


[[email protected] rsync]# ls test/

1  1.txt  2  2.txt  3  a1  aa  b1  tree

2)从服务器同步数据到本地;


1

2

3

4

5

6

7

8


[[email protected] rsync]# rsync -avL --progress 192.168.20.10::test/abc ./

receiving incremental file list

abc

           0 100%    0.00kB/s    0:00:00 (xfer#1, to-check=0/1)

sent 45 bytes  received 94 bytes  13.24 bytes/sec

total size is 0  speedup is 0.00

[[email protected] rsync]# ls abc 

abc

3)更改服务器配置文件read only=yes  再从本地同步数据到服务器,会报错提示module模块只读,不能写入数据;从服务器同步到本地不受影响。


1

2

3


[[email protected] rsync]# sed -i ‘s/read only=no/read only=yes/‘ /etc/rsyncd.conf 

[[email protected] rsync]# grep ‘read‘ /etc/rsyncd.conf 

read only=yes


1

2

3

4

5

6


[[email protected] rsync]# rsync -avL --progress test1/ 192.168.20.10::test/abc/

sending incremental file list

ERROR: module is read only

rsync error: syntax or usage error (code 1) at main.c(866) [receiver=3.0.6]

rsyncread error: Connection reset by peer (104)

rsync error: error in rsync protocol data stream (code 12) at io.c(759) [sender=3.0.6]

针对配置文件里面的几个选项port,use chroot,list,hosts allow 等,大家有兴趣的可以自己做实验看看

时间: 2024-10-22 11:05:18

linux下的数据备份工具rsync讲解的相关文章

linux下的数据备份工具rsync

Rsync 是一个 Unix 系统下的文件同步和传输工具.Rsync不仅可以远程同步数据(类似于scp),当然还可以本地同步数据(类似于cp),但不同于cp或scp的一点是,rsync不像cp/scp一样会覆盖以前的数据(如果数据已经存在),它会先判断已经存在的数据和新数据有什么不同,只有不同时才会把不同的部分覆盖掉. 1,linux安装rsnync # yum install -y rsync 启动rsync # rsync --daemon --config=/etc/rsyncd.conf

Linux系统管理初步(八)数据备份工具rsync

rsync工具 rsync工具用于同步文件夹数据,他不同于cp命令,他可以处理实时在变更的文件,把源文件目录和目标数据目录同步,对于两个目录相同的部分数据则不会处理. 一.工具概要 命令写法研究了下SRC是source的缩写,DEST是destination的缩写 rsync -选项 源目录路径 (目标主机用户名)@目标IP地址:目标目录路径rsync -选项... SRC [SRC]... 目标路径rsync -选项... SRC [SRC]... [[email protected]]HOS

linux下mysql数据备份和导入

导出整个数据库结构和数据 mysqldump -h 127.0.0.1 -uroot -p database > /usr/local/dump.sql 导出单个数据表结构和数据mysqldump -h 127.0.0.1 -uroot -p123456 database table > dump.sql 导出整个数据库结构(不包含数据)mysqldump -h 127.0.0.1 -uroot -p123456 -d database > dump.sql 导出单个数据表结构(不包含数

Linux学习总结(二十八) 数据同步工具 rsync

rsync是linux系统下的数据镜像备份工具.使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH.rsync主机同步. rsync格式 rsync [OPTION] - SRC DEST rsync [OPTION] - SRC [[email protected]]host:DEST rsync [OPTION] - [[email protected]]host:SRC DEST 1 rsync常用选项 -a 包含-rtplgoD-r 同步目录时要加上,

Linux 上的数据可视化工具

Linux 上的数据可视化工具 5 种开放源码图形化工具简介 Linux® 上用来实现数据的图形可视化的应用程序有很多,从简单的 2-D 绘图到 3-D 制图,再到科学图形编程和图形模拟.幸运的是,这方面的工具有很多开放源码实现,包括 gnuplot.GNU Octave.Scilab.MayaVi.Maxima 等.每个工具都有自己的优缺点,并且都是针对不同的应用程序而设计的.对这些开放源码图形可视化工具进行一下探索,有助于我们更好地决定哪个工具最适合我 们的应用程序. 0 评论: M. Ti

Linux下的屏幕录制工具XVidCap

Linux下的屏幕录制工具XVidCap Jun 05, 2008 XVidCap是Linux下的屏幕录制工具,是讲解软件使用方法.演示电脑操作的必备秘技. XVidCap大概是X windows Video Capture的缩写,未经考证. 之前是在Open Source Alternative这个网站搜索screencast找到的,准备动笔介绍一下时发现keke已经介绍过了. 文章中说下载个deb包安装就好了,我之前下载的是tar.gz,安装也着实非常麻烦,于是再罗嗦几句. 首先在这里下载,

Linux下基本的网络工具

Linux下基本的网络工具 Table of Contents ifconfig route ip dns 其他配置文件 ifconfig ifconfig eth0 up ifconfig eth0 down ifconfig eth0 192.168.10.111 永久 IP /etc/sysconfig/network-scripts/ifcfg-eth0 IPADDR=xxxx NETMASK=xxx GATEWAY=xxxxx PEERDNS={yes|no}: 表示是否接受 dhcp

linux下mysql定时备份数据库

linux下mysql定时备份数据库 (2010-10-21 12:40:17) 转载▼ 标签: 杂谈   一.用命令实现备份 首页进入mysql的bin目录 1.备份数据#mysqldump -uusername -ppassword discuz > discuz_2010-04-01.sql 这样就把discuz数据库所有的表结构和数据备份到discuz_2010-04-01.sql里了,如果数据量大会占用很大空间,这时可以利用gzip压缩数据, 命令如下:#mysqldump -uuse

linux下只有rman备份集的异机不同目录恢复

昨天在客户那里做了一次rman异机的恢复,把生产库弄一份给测试库用,总库大概80G,总共花费了2个小时,当时客户的环境是windows 11.2.0.3,今天早晨在linux下重新测试了一下,记录下来供大家参考 环境: 所有操作都是按主机名区分 源库: 主机名  bre1  实例名为bre1  数据文件目录在/u01/app/oradata下 目标库: 主机名 bre2   数据文件准备放在/bre1/oradata下 废话不多说,下面是实际操作步骤 1.在源库创建备份集,并且拷贝到目标库 拷贝