Linux系统日常管理之rsync备份工具

                               rsync备份工具


一、scp

scp备份工具不可以进行增量备份


1、安装scp

[root@chenglinux ~]# yum install -y openssh-clients


2、scp -r 192.168.21.98:/tmp/a/ ./a/

  从远程主机把/tmp/下面的a目录拷贝到当前目录下

  -r:以递归方式复制


3、[root@chenglinux cheng]# scp 1.txt 192.168.21.98:/root/cheng/

   把当前目录下的文件拷贝到远处主机的/root/cheng/目录下


4、[root@chenglinux cheng]# scp 1.txt [email protected]:/tmp/cheng/

   把1.txt文件拷贝到远程主机cheng这个用户下


5、如果省略掉用户名,那么就会拷贝到当默认的用户下,就是这边是用的什么用户进行拷贝的,

那么复方也就会是同样的账户。如果对方主机没有那个用户,那么久拷贝不成功

 

6、scp -r a/ 192.168.21.98:/tmp/b/

  把a目录下的文件拷贝到远程主机b目录下,而不是把a目标拷贝到b目录下


二、rsync备份工具,可以把文件拷贝到远程主机,可以支持增量备份

1、默认没有安装,需要安装:

   [root@linux2 ~]# yum install -y rsync

  同时还要安装:openssh-clients不然无法执行

2、rsync 命令格式

rsync [OPTION]... SRC  DEST

rsync -av 123.txt /tmp/

把123.txt同步到/tmp目录下


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

rsync -av 123.txt 192.168.0.101:/data/

把123.txt文件同步到192.168.0.101机器的/data/目录下


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

rsync 用户名@ip地址:/tmp/1.txt /tmp/1.txt

把远程主机/tmp/1.tx文件同步到本地来


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

这两种使用了两个冒号,这种方式和前面的方式的不同在于验证方式不同,稍后写到


rsync -av usr/ /tmp/123/

把user目录拷贝的tmp下面,别切改名为123



SRC:src是source的缩写,也就是源代码的意思。在这里表示的是源文件地址

-a:同步数据时一定要保证数据原来的属性不会改变


三、 rsync常用选项

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

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

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

-l 保留软链结

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

-p 保持文件权限 

-o 保持文件属主信息

-g 保持文件属组信息

-D 保持设备文件信息

-t 保持文件时间信息

-z  在拷贝的时候进行压缩

--delete 删除那些DEST中有,但是SRC没有的文件


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

   rsync -av --exclude="*.txt" usr/ /tmp/123/ #同步的时候排除掉以.txt结尾的文件。

   过滤多个文件时,在-av后面直接添加--exclude="文件类型或者名称"就可以了


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

     可以写成这样:rsync -avP usr/ /tmp/123/

 

--bwlimit=100:控制同步带宽,100指的是速度,可以根据实际情况来写  


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

最常用的 -a -v --delete --exclude 


-a --no-l -v:这个选项的作用就是在拷贝文件的时候不拷贝软连接文件 


四、rsync选项讲解

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

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

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

3、-u 选项的作用是,如果目标文件比源文件新,那么会忽略掉该文件 

touch test2/1.txt; rsync -avu test1/ test2/

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

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

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


五、 rsync应用实例 - ssh方式

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

rsync -avL 192.168.0.101:/tmp/test2/ ./test3/ 

由于需要输入密码所以不适合写到脚本中,但可以通过创建秘钥对,让两台机器产生信任关系从而不用输入密码

1、在Linux2创建以下信息,需要注意的是在实验中,Linux2主机是服务端

[root@linux2 ~]# mkdir .ssh
[root@linux2 ~]# 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:
19:da:90:61:63:d7:94:65:7a:4d:ad:05:06:50:49:5a root@linux2
The key‘s randomart image is:
+--[ RSA 2048]----+
|      = .oo*Eo+o |
|     o =  o=.+  o|
|      o . o . .o |
|       + o .  .  |
|      . S        |
|                 |
|                 |
|                 |
|                 |
+-----------------+
[root@linux2 ~]# ls .ssh
id_rsa  id_rsa.pub  known_hosts
[root@linux2 ~]# cat .ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAxCPm8bVIQohY/JWI9KBaHtKb+W4TnNL3Xg12CFj+h52yu0ixvANj+qrSq8xCXD47gNALGt4jzMmGIZQ8TxfRjMyBdNtRWswQR1oxefabMuehwBwmSnMD2g9dzY8r8eKXIEBkSGk5uycPooZJbTfRd0XJEfZFqlhey3PEW9HoOslj/kOGLWPXOdIDLh0oRDZe2QP5KOvhw6NQdyLiJPvEptss4qWr2DsV5reCQW/L7yEi1gxkLSYeFew0Xsia58Hy3GnYLP8PYlcopWIs0oSMhvCLJr/xw7IXFhnWfZaH/Iho5JT+8VoBdao2AjMG5yrNi4OOpldn8VijVgOJ/gd78w== root@linux2

把秘钥复制到chenglinux机器上的/root/.ssh/authorized_keys文件中,如果chenglinux机器没有.ssh目录和authorized_keys文件需要创建。

2、由于chenglinx这个机器上没有.ssh目录和authorized_keys文件,所以需要创建

[root@chenglinux ~]# mkdir .ssh
[root@chenglinux ~]# chmod 600 .ssh/
[root@chenglinux ~]# touch .ssh/authorized_keys
[root@chenglinux ~]# vim .ssh/authorized_keys


3、在Linux2主机上测试登录chenglinx,结果显示已经不要输入密码了。

[root@linux2 ~]# ssh [email protected]
Last login: Wed Jun  3 14:36:35 2015 from 192.168.21.100
[root@chenglinux ~]#


4、测试rsync同步,也没有提示输入密码,所以成功了。

[root@linux2 ~]# rsync -av chengzelin.txt 192.168.21.99:/root/chengzelin.txt2
sending incremental file list
chengzelin.txt
sent 82 bytes  received 37 bytes  238.00 bytes/sec
total size is 78  speedup is 0.66
[root@linux2 ~]#

5、如果ssh端口不是22,那么需要写成这样的形式

rsync -av -e "ssh -p port”  /dir1/ 192.168.0.101:/tmp/dir2/ 

6、sshd的配置文件位置

/etc/ssh/sshd_condfig

7、strace命令是用来追踪进程的,默认没有安装,需要安装


六、 rsync应用实例 - 后台服务方式

1、全局配置文件

配置文件 /etc/rsyncd.conf ,内容如下:

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

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

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

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

2、模块内的设置

[test]    #为模块名,自定义,模块可以有多个

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

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

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

read only=no  #是否为只读

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

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

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

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

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

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

需要注意的一点就是,一般只不需要指定用户名和设置密码,只需要指定hosts这个选项就可以

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

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

5、rsync -av chengzelin.txt 192.168.21.99::test/4.txt

   这个格式就是使用刚才设定的模块来同步文件,test就等于模块设置中的rsync目录,类似于一个别名(这里就用到了前面所提到的格式了,就是这个格式:rsync [OPTION]... [USER@]HOST::SRC  DEST


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

可使用的选项有: rsync --daemon --help


本文出自 “IT交流学习” 博客,请务必保留此出处http://sxct168.blog.51cto.com/824373/1660781

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。