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

                               rsync备份工具linux


1、scpvim

scp备份工具不能够进行增量备份bash


一、安装scpdom

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


二、scp -r 192.168.21.98:/tmp/a/ ./a/
ide

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

  -r:以递归方式复制测试


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

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


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

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


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

那么复方也就会是一样的帐户。若是对方主机没有那个用户,那么久拷贝不成功

 

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

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


2、rsync备份工具,能够把文件拷贝到远程主机,能够支持增量备份

一、默认没有安装,须要安装:

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

  同时还要安装:openssh-clients否则没法执行

二、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:同步数据时必定要保证数据原来的属性不会改变


3、 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:这个选项的做用就是在拷贝文件的时候不拷贝软链接文件 


4、rsync选项讲解

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

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

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

三、-u 选项的做用是,若是目标文件比源文件新,那么会忽略掉该文件 

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

四、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后面也可使用通配符*


5、 rsync应用实例 - ssh方式

rsync -avL test1/ www@192.168.0.101:/tmp/test2/ 

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

因为须要输入密码因此不适合写到脚本中,但能够经过建立秘钥对,让两台机器产生信任关系从而不用输入密码

一、在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 p_w_picpath 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文件须要建立。

二、因为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


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

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


四、测试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 ~]#

五、若是ssh端口不是22,那么须要写成这样的形式

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

六、sshd的配置文件位置

/etc/ssh/sshd_condfig

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


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

一、全局配置文件

配置文件 /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

二、模块内的设置

[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这个选项就能够

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

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

五、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

相关文章
相关标签/搜索