rsync备份服务(下)

利用rsync与crond服务器进行WEB服务备份,rsynccrond

利用rsync与crond服务器进行WEB服务备份
场景:
某公司里有一台Web服务器,里面的数据很重要,但是如果硬盘坏了,数据就会丢失。
现在领导要求你把数据在其他机器上做一个备份。要求如下:
每天晚上00点在Web服务器A上打包备份系统配置文件、网站程序目录及访问日志并通过
rsync命令推送到服务器B上备份保留。
备份思路:可以事先在本地按日期打包,然后在推送到备份服务器上。
具体要求如下:
1)Web服务器A和备份服务器B的备份目录必须为/backup。
2)系统配置文件包括但不限于:
a.定时任务服务的配置文件
b.开启自启动文件的配置/etc/rc.d/rc.local
c.日常脚本的目录/server/scripts
d.防火墙iptabls的配置文件/etc/sysconfig/iptables
e.其他需要备份的目录
3)Web服务器站点目录假定为/var/html/www
4)Web服务器A访问的日志路径假定为(/app/logs)
5)
Web服务器保留打包后的7天的备份数据。备份服务器B上保留6个月的数据副本。
6)备份服务器B上按照备份数据的服务器的IP为目录保存,打包的文件按照时间名字保存。
逻辑架构图:。。。。。
特别说明:
1)工作中领导很可能不会告诉你如何去做,只会提需求,例如:小崔,WEB服务器很重要,请你把
数据在别的服务器备份一份。
2)逻辑架构图更不可能是领导给你画,而是你理解了领导的意思,然后自己想出备份的方案,最后,在
实施前你做的一个图纸而已。

环境说明:
192.168.0.252 web
192.168.0.251 backup

抽象出技术点:
A、在备份服务器B上实施rsync服务,A是客户端。
B、在A上对重要数据进行备份,实践上就是写一个备份脚本。
C、做一个定时任务,执行B步骤中的备份脚本。

开始部署
A、在备份服务器B上实施rsync服务,A是客户端。
一、什么是rsync

  rsync,remote
synchronize顾名思意就知道它是一款实现远程同步功能的软件,它在同步文件的同时,
可以保持原来文件的权限、时间、软硬链接等附加信息。 rsync是用 “rsync
算法”提供了一个客户机和
远程文件服务器的文件同步的快速方法,而且可以通过ssh方式来传输文件,这样其保密性也非常好,另外
它还是免费的软件。
  rsync 包括如下的一些特性:

  能更新整个目录和树和文件系统;
  有选择性的保持符号链链、硬链接、文件属于、权限、设备以及时间等;
  对于安装来说,无任何特殊权限要求;
  对于多个文件来说,内部流水线减少文件等待的延时;
  能用rsh、ssh 或直接端口做为传输入端口;
  支持匿名rsync 同步文件,是理想的镜像工具;
开始部署rsync服务
1、确定安装rsync软件包
[[email protected]
~]# rpm -qa|grep rsync
rsync-3.0.6-12.el6.x86_64
2、配置rsync配置文件
rsync配置文件如下:/etc/rsyncd.conf
###rsyncd.conf start###
uid=rsync
gid=rsync
use chroot=no
max connections=200
timout=300
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsync.lock
log file=/var/log/rsyncd.log
[backup]
path=/backup/
ignore errors
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_config________________________end###

3、添加用户备份目录
[[email protected]
~]# mkdir /backup
[[email protected]
~]# useradd rsync -s /sbin/nologin
[[email protected]
~]# id rsync
uid=502(rsync) gid=502(rsync) groups=502(rsync)
[[email protected]
~]# chown -R rsync /backup/
[[email protected]
~]# ll /backup -ld
drwxr-xr-x 2 rsync root 4096 Jan 14 20:25 /backup
4、启动rsync守护进程
[[email protected]
~]# rsync –daemon
[[email protected]
~]# netstat -lntup|grep 873
tcp        0      0 0.0.0.0:873                 0.0.0.0:*             
     LISTEN      1477/rsync          
tcp        0      0 :::873                      :::*                   
    LISTEN      1477/rsync    
5、rsync开机自启动
[[email protected]
~]# echo “#rsync bak by baizuo 20180120”>>/etc/rc.local ;echo
“/usr/bin/rsync –daemon –config=/etc/rsyncd.conf”
>>/etc/rc.local 
[[email protected]
~]# tail /etc/rc.d/rc.local -n2
#rsync bak by baizuo 20180120
/usr/bin/rsync –daemon

6、配置用于rsync同步的账号、密码及账号文件权限
(只是用作rsync账号验证的虚拟用户,并非系统本身用户)
[[email protected]
~]# echo “rsync_backup:baizuo” >/etc/rsyncd.password
[[email protected]
~]# tail /etc/rsync.password 
rsync_backup:baizuo
[[email protected]
~]# chmod 600 /etc/rsync.password 
[[email protected]
~]# ll /etc/rsync.password 
-rw——- 1 root root 20 Jan 20 17:06 /etc/rsync.password

7、在客户端进行配置
[[email protected]
~]# echo “baizuo” >/etc/rsync.password
[[email protected]
~]# chmod 600 /etc/rsync.password 
[[email protected]
~]# ll /etc/rsync.password 
-rw——- 1 root root 7 Jan 20 17:04 /etc/rsync.password

8、在客户端进行推送测试
[[email protected]
~]# /backup
[[email protected]
~]#  touch /backup/test.txt
[[email protected]
~]# rsync -avzP /backup/
[email protected]::backup/
–password-file=/etc/rsync.password 
sending incremental file list
./
test.txt
           0 100%    0.00kB/s    0:00:00 (xfer#1, to-check=0/2)

sent 78 bytes  received 30 bytes  216.00 bytes/sec
total size is 0  speedup is 0.00

A技术点————–OK—————————-
B、在A上对重要数据进行备份,实践上就是写一个备份脚本。
对上面所说的配置文件做备份。

#先在shell上做一次打包压缩测试。(可以不做测试)
[[email protected]
~]# mkdir /var/html/www/baizuo -p
[[email protected]
~]# mkdir /app/logs/baizuo_log -p
[[email protected]
~]# cd /var/html/www/
[[email protected]
www]# tar zcvf baizuo_web_$(date +%F).tar.gz ./baizuo
./baizuo/
[[email protected]
www]# ll
drwxr-xr-x 2 root root 4096 Jan 20 17:32 baizuo
-rw-r–r– 1 root root  114 Jan 20 17:34
baizuo_web_2018-01-20.tar.gz

2、编写脚本,在测试一下。
(这个脚本并不规范,你可以完善它。)
[[email protected]
www]# mkdir /server/scripts/ -p
[[email protected]
www]# mv rsync_copyall.sh /server/scripts/

[[email protected]
www]# cat /server/scripts/rsync_copyall.sh 
#backup web_site
cd /var/html&&tar zcf /backup/www_$(date +%F).tar.gz ./www
cd /app/ && tar zcf /backup/logs_$(date +%F).tar.gz ./logs

#backup system config
cd / && tar zcf /backup/etc_$(date +%F).tar.gz ./etc

#backup crond root
cd /var/spool/cron/ && tar zcf /backup/crond_root_$(date +%F).tar.gz
./root

#rsync data to bakserver
rsync -avzP /backup/
[email protected]::backup/
–password-file=/etc/rsync.password >/dev/null 2>&1

#del data 7 days ago
find /backup/ -type f -name “*.tar.gz” -mtime +7|xargs rm -f

3、测试脚本,查看结果
客户端执行脚本
[[email protected]
scripts]# sh rsync_copyall.sh 
服务的查看结果
[[email protected]
~]# ll /backup/
total 10276
-rw-r–r– 1 rsync rsync      161 Jan 20 17:54
crond_root_2018-01-20.tar.gz
-rw-r–r– 1 rsync rsync 10509606 Jan 20 17:54 etc_2018-01-20.tar.gz
-rw-r–r– 1 rsync rsync      136 Jan 20 17:54 logs_2018-01-20.tar.gz
-rw-r–r– 1 rsync rsync        0 Jan 20 17:07 test.txt
-rw-r–r– 1 rsync rsync      341 Jan 20 17:54 www_2018-01-20.tar.gz
PS:可以看到推送成功了,但是呢,这里有一个问题,服务端的文件是不是应该用IP保存呢。
解决办法:
完善脚本功能:
[[email protected]
scripts]# cat rsync_copyall.sh 
IP=`grep IPADDR /etc/sysconfig/network-scripts/ifcfg-eth0 |cut -d ‘=’
-f2`
mkdir /backup/$IP

#backup web_site
cd /var/html&&tar zcf /backup/$IP/www_$(date +%F).tar.gz ./www
cd /app/ && tar zcf /backup/$IP/logs_$(date +%F).tar.gz ./logs

#backup system config
cd / && tar zcf /backup/$IP/etc_$(date +%F).tar.gz ./etc

#backup crond root
cd /var/spool/cron/ && tar zcf /backup/$IP/crond_root_$(date
+%F).tar.gz ./root

#rsync data to bakserver
rsync -avzP /backup/$IP
[email protected]::backup/
–password-file=/etc/rsync.password >/dev/null 2>&1

#del data 7 days ago
find /backup/ -type f -name “*.tar.gz” -mtime +7|xargs rm -f

备份服务器端查看结果:
[[email protected]
backup]# ls /backup/192.168.0.252/
crond_root_2018-01-20.tar.gz  logs_2018-01-20.tar.gz
etc_2018-01-20.tar.gz         www_2018-01-20.tar.gz

B技术点______________________________完成!
C、做一个定时任务,执行B步骤中的备份脚本。
(客户端做一个定时任务)每天0点备份数据,数据保存7天。
[[email protected]
scripts]# crontab -l
30 * * * * /usr/sbin/ntpdate cn.ntp.org.cn >/dev/null 2>&1
#bak local data by baizuo at 2018.1.20
00 00 * * * /bin/sh /server/scripts/rsync_copyall.sh >/dev/null
2>&1 
(服务端做个定时任务)备份数据保存6个月。
[[email protected]
scripts]# crontab -l
30 * * * * /usr/sbin/ntpdate cn.ntp.org.cn >/dev/null 2>&1
#keep data 180 days
00 00 * * * /bin/sh /server/scripts/keepdata180days.sh >/dev/null
2>&1 

第1章 Rsync备份服务开篇介绍

第1章 回顾

服务器是企业网络的核心应用设备,制定并执行服务器备份策略是管理员必须要做的事情,当然也是一项枯燥而劳力的工作。尤其在大型局域网环境中,服务器遍布各处,甚至各地,如何实现服务器的远程灵活备份呢?这里向大家推荐一款利器Acronis
True Image Enterprise
Server(简称ATIES),通过它能轻松实现对服务器磁盘分区的远程完整备份、增量备份和计划备份,极大减轻企业网管的维护工作量。下面就笔者部署的一个企业生产环境为例,实例说明利用ATIES对服务器进行远程备份。

rsync做备份,几个实验都没有成功,今天又试了一下,好了,呵呵,原来是命令没有打完整。
服务器端配置好之后,用root帐号启动服务,客户端输入:
代码:
rsync -vzrtopg –progress
tmp/
此时系统提示输入密码,成功后开始显示进度:
代码:
          98 100%    0.14kB/s    0:00:00  (245, 51.6% of 516)
u/uuu/U/FC4/AUTOBOOT/INITRD.IMG
     4492627 100%    1.79MB/s    0:00:02  (246, 51.7% of 516)
u/uuu/U/FC4/AUTOBOOT/VMLINUZ
     1702587 100%    1.55MB/s    0:00:01  (247, 51.9% of 516)
u/uuu/U/FC4/COPYING
       17982 100%  292.68kB/s    0:00:00  (248, 52.1% of 516)
u/uuu/U/FC4/CYGWIN1.DLL
      629760 100%    2.47MB/s    0:00:00  (249, 52.3% of 516)
速度很快,备份成功!图片 1

1.1 Rsync介绍

1.1 rsync备份软件是什么

   是一款开源的 多功能 快速的全量和增量备份软件

生产环境:

1.1.1 什么是rsync服务

Rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。并且可以不进行改变原有数据的属性信息,实现数据的备份迁移特性。Rsync软件适用于Unix/Linux/window等多种操作系统平台。

  rsync服务软件官方链接:

 

  man rsync

  NAME   rsync
— a fast, versatile, remote (and
local) file-copying tool

 

提示信息:

man  rsync  查看客户端

man  rsyncd.conf
查看服务端配置

1.2  rsync软件命令特点(1v4)

a
等价于本地复制命令(cp)

b
等价于远程复制命令(scp)

c
等价于数据删除命令(rm)

d
等价于数据查看命令(ls)

服务器A(Windows Server 2003)、服务器B(Windows Server 2003)

1.2 什么是全量,什么是增量

   全量复制:本地所有数据都进行传输复制,不管对端服务器是否有相同的数据,如果有进行覆盖

   增量复制:只备份同步变化的数据信息,对端服务器已经存在的数据,不进行传输复制

1.3  rsync软件服务特点(7点)

1. 可以实现排除同步数据

2. 可以实现加密传输数据(借助ssh协议隧道)

3. 可以实现数据传输认证机制

4. 可以实现socket守护进程方式,传输数据(重点)

5. 可以保持数据传输属性信息不变(-p)

6. 可以传输普通文件,也可以传输特殊文件(链接文件
或者 设备文件)

7. 可以数据增量传输

需求目的:

1.3 Rsync命令使用介绍

1.4  rsync软件实现增量传输同步原理

基于一种特殊的算法“quick
check”,实现增量复制传输数据

1. 先实现两台主机之间网络互通

2. 对要传输的数据信息,进行属性信息比对(比如
文件大小 时间信息 属主 属组 权限属性等)

3. 只传输变化的数据信息

1、远程备份服务器A中的磁盘分区,镜像文件存储在服务器A的共享文件夹“server_data_bak”中。

1.3.1 rsync软件 == scp命令

  准备测试环境

[root@backup ~]# mkdir /wuhuang

[root@backup ~]# touch /wuhuang/wuhuang-file{1..5}

[root@backup ~]# ls /wuhuang/

wuhuang-file1  wuhuang-file2  wuhuang-file3  wuhuang-file4  wuhuang-file5

 scp命令使用

    -r   表示递归传输数据

   -p   表示数据属性信息不变

远程传输文件:

[root@backup ~]# scp -rp /wuhuang/wuhuang-file1 10.0.0.31:/tmp

root@10.0.0.31’s password:

wuhuang-file1                                  100%    0     0.0KB/s   00:00    

验证

[root@nfs01 ~]# ll /tmp/

total 0

-rw-r–r–  1 root root 0 Jan 22 17:43 wuhuang-file1

远程传输目录:

[root@backup ~]# scp -rp /wuhuang/ 10.0.0.31:/tmp

root@10.0.0.31’s password:

wuhuang-file5                                  100%    0     0.0KB/s   00:00    

wuhuang-file3                                  100%    0     0.0KB/s   00:00    

wuhuang-file4                                  100%    0     0.0KB/s   00:00    

wuhuang-file2                                  100%    0     0.0KB/s   00:00    

wuhuang-file1                                  100%    0     0.0KB/s   00:00    

验证

[root@nfs01 ~]# ll /tmp/

total 4

drwxr-xr-x  2 root root 4096 Jan 22 17:43 wuhuang

-rw-r–r–  1 root root    0 Jan 22 17:43 wuhuang-file1

rsync命令使用:

    -r   表示递归传输数据

   -p   表示数据属性信息不变

远程传输文件:

[root@backup ~]# rsync -rp /wuhuang/wuhuang-file2 10.0.0.31:/tmp

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

RSA key fingerprint is 57:3f:64:68:95:4d:99:54:01:33:ab:47:a0:72:da:bf.

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

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

root@10.0.0.31’s password:

验证

[root@nfs01 ~]# ll /tmp/

total 0

-rw-r–r–  1 root root 0 Jan 22 18:01 wuhuang-file2

远程传输目录:

[root@backup ~]# rsync -rp /wuhuang/ 10.0.0.31:/tmp

root@10.0.0.31’s password:

[root@nfs01 ~]# ll /tmp/

total 0

-rw-r–r–  1 root root 0 Jan 22 18:09 wuhuang-file1

-rw-r–r–  1 root root 0 Jan 22 18:09 wuhuang-file2

-rw-r–r–  1 root root 0 Jan 22 18:09 wuhuang-file3

-rw-r–r–  1 root root 0 Jan 22 18:09 wuhuang-file4

-rw-r–r–  1 root root 0 Jan 22 18:09 wuhuang-file5

说明:如果传输目录时,目录名称后面有/(/wuhuang/), 表示将目录下面的数据内容进行传输

[root@backup ~]# rsync -rp /wuhuang 10.0.0.31:/tmp

root@10.0.0.31’s password:

[root@nfs01 ~]# ll /tmp/

total 4

drwxr-xr-x  2 root root 4096 Jan 22 18:10 wuhuang

-rw-r–r–  1 root root    0 Jan 22 18:09 wuhuang-file1

-rw-r–r–  1 root root    0 Jan 22 18:09 wuhuang-file2

-rw-r–r–  1 root root    0 Jan 22 18:09 wuhuang-file3

-rw-r–r–  1 root root    0 Jan 22 18:09 wuhuang-file4

-rw-r–r–  1 root root    0 Jan 22 18:09 wuhuang-file5

说明:如果传输目录时,目录名称后面没有/(/wuhuang),表示将目录本身以及目录下面的内容进行传输

1.3.2 rsync软件 == cp命令

cp命令本地复制数据

[root@backup ~]# cp -a /wuhuang/wuhuang-file1 /tmp

[root@backup ~]# ll /tmp/

total 0

-rw-r–r–  1 root root 0 Jan 22 17:59 wuhuang-file1

rsync命令本地复制数据

[root@backup ~]# rsync -a /wuhuang/wuhuang-file2 /tmp/

[root@backup ~]# ll /tmp/

total 0

-rw-r–r–  1 root root 0 Jan 22 17:59 wuhuang-file1

-rw-r–r–  1 root root 0 Jan 22 17:59 wuhuang-file2

1.3.3 rsync软件 == rm命令

[root@backup ~]# ll /tmp/

total 0

-rw-r–r–  1 root root 0 Jan 22 17:59 wuhuang-file1

-rw-r–r–  1 root root 0 Jan 22 17:59 wuhuang-file2

[root@backup ~]# mkdir /null

[root@backup ~]# rsync -r –delete /null/ /tmp/

[root@backup ~]# ll /tmp/

total 0

rsync利用一个空目录将目录清空

[root@backup ~]# rsync -r –delete /null/ 10.0.0.31:/tmp/

root@10.0.0.31’s password:

[root@nfs01 ~]# ll /tmp/

total 0

1.3.4 rsync软件 == ls命令

[root@backup ~]# ls /wuhuang/

wuhuang-file1  wuhuang-file2  wuhuang-file3  wuhuang-file4  wuhuang-file5

[root@backup ~]# rsync /wuhuang/

drwxr-xr-x        4096 2018/01/22 17:59:26 .

-rw-r–r–           0 2018/01/22 17:59:26 wuhuang-file1

-rw-r–r–           0 2018/01/22 17:59:26 wuhuang-file2

-rw-r–r–           0 2018/01/22 17:59:26 wuhuang-file3

-rw-r–r–           0 2018/01/22 17:59:26 wuhuang-file4

-rw-r–r–           0 2018/01/22 17:59:26 wuhuang-file5

1.4 Rsync复制原理介绍

 Rsync软件实现增量同步原理说明

 Rsync通过其独特的“quick check”算法,它仅同步大小或者最后修改时间发生变化的文件或目录,

 当然也可根据权限,属主等属性的变化同步,但需要指定相应的参数,甚至可以实现只同步一个文件里有变化的内容部分,所以,可以实现快速的同步备份数据。

图片 2 

 传统的cp , scp 工具拷贝每次均为完整的拷贝,而Rsync除了可以完整拷贝外,还具有增量拷贝的功能,

因此,从同步数据的性能及效率上,Rsync工具更胜一筹。

  CentOS5,rsync2.x比对方法,把所有的文件比对一遍,然后进行同步。

  CentOS6,rysnc3.x比对方法,一边比对差异,一边对差异的部分进行同步。

1.5 rsync服务工作方式(三种)

1. 实现本地数据传输备份

2. 实现远程数据传输备份

3. 实现守护进程方式数据传输备份(重点)

2、利用“计划任务”功能实现数据的自动增量备份。

1.5  Rsync软件特性(7个特性)

  1. 支持拷贝普通文件与特殊文件如链接文件,设备等。

  2. 可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能。

  #tar zcvf backup_1.tar.gz  /opt/data  -exclude=oldboy    

  说明:在打包/opt/data时就排除了oldboy命名的目录和文件。

  1. 可以做到保持原文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变-p。

  2. 可实现增量同步,即只同步发生变化的数据,因此数据传输效率很高(tar
    -N)。

tar  -N <日期格式> 或 –newer=<日期时间>:只将比指定日期更新的文件保存到备份文件里

1.    # 将备份/home 目录自 2008-01-29 以来修改过的文件

        # tar -N 2008-01-29 -zcvf /backups/inc-backup_$(date +%F).tar.gz /home

2.    # 将备份 /home 目录昨天以来修改过的文件

        # tar -N $(date -d yesterday "+%F") -zcvf /backups/inc-backup_$(date +%F).tar.gz /home

        # tar -N $(date -d  -1day "+%F") -zcvf /backups/inc-backup_$(date +%F).tar.gz /home

3.    # 添加文件到已经打包的文件

        # tar -rf all.tar *.gif

   说明:这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。

  1. 可以使用rcp,rsh,ssh等方式来配合进行隧道加密传输文件(rsync本身不对数据加密)

6.
可以通过socket(守护进程方式)传输文件和数据(服务端和客户端)*****。重点掌握

  1. 支持匿名的或认证(无需系统用户)的进程模式传输,可实现方便安全的进行数据备份及镜像。

1.6 rsync守护进程方式部署流程

实施步骤:

1.6 Rsync的企业工作场景说明

1) 利用定时任务实现数据备份(crond+rsync)

2) 利用实时同步方式实现数据备份(inotify/sersync+rsync)

1.6.1 服务端部署流程:

第一步:检查软件是否安装

第二步:编写rsync软件配置文件

第三步:创建备份目录的管理用户

第四步:创建认证时所需要密码文件(对密码文件权限进行修改为600权限)

第五步:创建数据备份目录,修改备份目录属主和属组权限为管理用户(rsync)

第六步:启动rsync服务(rsync
–daemon)

1)部署控制中心

第2章  Rsync的工作方式介绍与实践

       SYNOPSIS

1.6.2 客户端部署流程:

进行数据传输测试

   说明:如果想实现免交互方式传输数据,客户端要完成以下操作步骤

第一步:创建密码文件,并进行修改权限为600

    echo “wuhuang123”
>>/etc/rsync.password

   chmod 600
/etc/rsync.password

[root@nfs01 ~]# echo "wuhuang123" >>/etc/rsync.password

[root@nfs01 ~]# chmod 600 /etc/rsync.password

[root@nfs01 ~]# ll /etc/rsync.password

-rw——- 1 root root 10 Jan 23 14:45 /etc/rsync.password

第二步:进行免交互传输数据测试

    rsync -avz
/etc/hosts rsync_backup@backup::backup
 –password-file=/etc/rsync.password

[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@backup::backup  –password-file=/etc/rsync.password

sending incremental file list

hosts

 

sent 201 bytes  received 27 bytes  456.00 bytes/sec

total size is 372  speedup is 1.63

[root@backup ~]# ll /backup/

total 4

-rw-r–r– 1 rsync rsync 372 Jan 19 11:55 hosts

1.7 rsync守护进程方式传输数据原理过程

图片 3 

在服务器B中,下载并运行ATIES安装程序,弹出组件安装对话框,点击“Install
Acronis True Image Management
Console”选项,同意用户许可协议后,一路点击“NEXT”按钮,就完成了ATIES控制中心的安装。

2.1  Local:  rsync [OPTION…] SRC… [DEST]

   本地数据备份方式,类似cp命令

   rsync
         —数据备份命令

   [OPTION…]
   —指定备份数据命令参数

   SRC
          —本地要备份的数据信息

   [DEST]
       —将要备份的数据保存到什么位置

拷贝本地文件。当SRC和DEST路径信息都不包含有单个冒号”:”分隔符时就启动这种工作模式。如:rsync -a /data
/backup

[root@backup ~]# rsync -a /etc/hosts /wuhuang/

[root@backup ~]# ll /wuhuang/

total 4

-rw-r–r– 1 root root 372 Jan 19 11:55 hosts

 2.2  Access via remote
shell:

       Pull: rsync
[OPTION…] [USER@]HOST:SRC… [DEST]

       Push: rsync
[OPTION…] SRC… [USER@]HOST:DEST

   实现远程备份方式,类似scp命令

   Pull:

   rsync
            —数据备份命令

   [OPTION…]
      —指定备份数据命令参数

   [USER@]HOST:  —定义以什么身份从相应主机上,拉取数据信息

                    (如果没有[USER@],表示以当前用户身份登录到远程主机,拉取数据)

   SRC…
           —将要从远端服务拉取的数据信息(文件或目录)

   [DEST]
          —将拉取过来的数据,保存到本地路径信息

使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DEST路径地址包含单个冒号”:”分隔符时启动该模式。如:rsync -avz *.c
foo:src

 

将backup服务器上的数据传输到NFS01上

[root@backup ~]# rsync -avz /wuhuang/wuhuang-file1 10.0.0.31:/opt

root@10.0.0.31’s password:

sending incremental file list

wuhuang-file1

 

sent 74 bytes  received 31 bytes  23.33 bytes/sec

total size is 0  speedup is 0.00

[root@nfs01 ~]# ls /opt/

rh  wuhuang-file1

 Push:

   rsync
            —数据备份命令

   [OPTION…]
      —指定备份数据命令参数

   SRC…
           —将本地服务器上数据信息(文件或目录),推送到远端

   [USER@]HOST:
  —定义以什么身份向相应主机上,推送数据信息

                    (如果没有[USER@],表示以当前用户身份登录到远程主机,推送数据)

   DEST
           —将本地数据推送到远程服务器的路径信息

使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号”:”分隔符时启动该模式。如:rsync -avz foo:src/bar
/data

[root@nfs01 ~]# touch /tmp/wh.txt

[root@nfs01 ~]# ll /tmp/

total 0

-rw-r–r– 1 root root 0 Jan 22 20:24 wh.txt

[root@backup ~]# rsync -avz 10.0.0.31:/tmp/ /wuhuang/

root@10.0.0.31’s password:

receiving incremental file list

./

wh.txt

 

sent 33 bytes  received 85 bytes  21.45 bytes/sec

total size is 0  speedup is 0.00

[root@backup ~]# ll /wuhuang/

total 4

-rw-r–r– 1 root root 372 Jan 19 11:55 hosts

-rw-r–r– 1 root root   0 Jan 22 20:24 wh.txt

-rw-r–r– 1 root root   0 Jan 22 20:18 wuhuang-file1

-rw-r–r– 1 root root   0 Jan 22 20:18 wuhuang-file2

-rw-r–r– 1 root root   0 Jan 22 20:18 wuhuang-file3

-rw-r–r– 1 root root   0 Jan 22 20:18 wuhuang-file4

-rw-r–r– 1 root root   0 Jan 22 20:18 wuhuang-file5

  

图片 4 

第2章 实际工作中部署rsync软件方案

    在备份服务器上部署rsync软件服务,采用推的方式(push:即从本地机器拷贝文件到远程rsync服务器中)进行数据备份传输。

   采用定时备份:备份的数据信息大部分是内部人员产生的数据

   采用实时备份:备份的数据信息大部分是外部人员产生的数据

图片 5

2.3  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

   实现守护进程方式,进行数据备份同步:

   Pull:

   rsync
              
    —数据备份命令

   [OPTION…]
        
 —指定备份数据命令参数

   [USER@]HOST::
   —指定认证用户身份信息,从相应主机,拉取数据信息

   SRC…
             
     —指定一个模块信息

   [DEST]
                 —将拉取过来的数据,保存到本地路径信息

从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含”::”分隔符时启动该模式。如:rsync -av root@192.168.78.192::www
/databack

www 为一个模块

   Push:

   rsync
             
       —数据备份命令

   [OPTION…]
        
  —指定备份数据命令参数

   SRC…
             
      —将本地服务器上数据信息(文件或目录),推送到远端

   [USER@]HOST::
    —指定认证用户身份信息,将本地主机数据,推送到远端

   DEST
             
       —指定一个模块信息

 从本地机器拷贝文件到远程rsync服务器中。当DEST路径信息包含”::”分隔符时启动该模式。如:rsync -av /databack
root@192.168.78.192::www

www 为一个模块

第3章 rsync命令参数

命令参数

参数

-v, –verbose

详细模式输出,传输时的信息。

-z,–compress

传输时进行压缩提供传输效率,–compress-level=NUM
可按级别压缩,局域网可以不用压缩

-a,
–archive  重要

归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD。

-r,
–recursive 归类于-a参数

对子目录以递归模式处理,即目录下的所有目录都同样传输,注意是小写

-t,
–times    归类于-a参数

保持文件时间信息。

-o,
–owner   归类于-a参数 

保持文件属主信息。

-p,
–perms   归类于-a参数

保持文件权限。

-g,
–group   归类于-a参数

保持文件属组信息。

-P –progress

等同于
–partial,显示备份过程。

-D,
–devices  归类于-a参数

保持设备文件信息。

-l,
–links     归类于-a参数

保留软链结。(小写字母)

-e,
–rsh=command

指定使用rsh、ssh方式进行数据同步

–exclude=PATTETN

用来指定排除那些不希望传输的文件(和tar参数一样)

–exclude-from=FILE

文件名所在的目录文件,即可以实现排除多个文件(和tar参数一样)

–bwlimit=RATE

limit I/O bandwidth:
KBytes per second

limit socket I/O
bandwidth限速功能

案例:某DBA做数据同步,带宽占满,导致用户无法访问网站

–delete

让目标目录SRC和源目录数据DST一致,即无差异同步数据

保持同步目录及文件属性:

这里的-avzP 相当于
-vzrtopgDIP(还多了DI功能),生产环境常用的参数选项为 -avzP 或 -vzrtopgP

如果是放入脚本中,也可以把
-v 和 -P去掉。这里的 –progress 可以用 -P代替。

 

例:-e, –rsh=command
指定使用rsh、ssh方式进行数据同步

[root@nfs01 ~]# rsync -avz -e "ssh -p22" /wuhuang/a 172.16.1.41:/backup

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

RSA key fingerprint is 57:3f:64:68:95:4d:99:54:01:33:ab:47:a0:72:da:bf.

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

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

root@172.16.1.41’s password:

sending incremental file list

a/

a/1

a/2

a/3

 

sent 171 bytes  received 73 bytes  28.71 bytes/sec

total size is 0  speedup is 0.00

[root@backup ~]# ll /backup/

total 8

drwxr-xr-x 2 root  root  4096 Jan 23 17:54 a  

第4章 rsync服务常见错误

2)远程部署Agent(代理)

第3章 rsync守护进程模式部署步骤

4.1 rsync服务端开启的iptables防火墙

 【客户端的错误】

   No route to host

  【错误演示过程】

[root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup

rsync: failed to connect to 172.16.1.41: No route to host (113)

rsync error: error in socket IO (code 10) at clientserver.c(124) [sender=3.0.6]

  【异常问题解决】

   关闭rsync服务端的防火墙服务(iptables)    也可做防火墙设置,此处不多讲

[root@backup mnt]# /etc/init.d/iptables stop

iptables: Setting chains to policy ACCEPT: filter              [  OK  ]

iptables: Flushing firewall rules:                             [  OK  ]

iptables: Unloading modules:                               [  OK  ]

[root@backup mnt]# /etc/init.d/iptables status

iptables: Firewall is not running.

要想进行远程备份操作,必须为服务器A远程安装Agent代理程序。

3.1 服务端部署

4.2  rsync客户端执行rsync命令错误:

   客户端的错误现象:   

[root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::/backup

ERROR: The remote path must start with a module name not a /

rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]

   异常问题解决:

rsync命令语法理解错误,::/backup是错误的语法,应该为::backup(rsync模块)

在服务器B中,依次点击“开始→程序→Acronis→Acronis true image management
console→Acronis true image management console”项目。

3.1.1 第一个里程:检查软件是否存在

[root@backup ~]# rpm -qa|grep rsync

rsync-3.0.6-12.el6.x86_64

如果rsync软件不存在: yum install -y rsync

4.3  @ERROR: auth failed on module oldboy

   客户端的错误现象:

[root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup

Password:

@ERROR: auth failed on module backup

rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]

   异常问题解决:

1. 密码真的输入错误,用户名真的错误

2. secrets file = /etc/rsync.password指定的密码文件和实际密码文件名称不一致

3. /etc/rsync.password文件权限不是600

4. rsync_backup:123456密码配置文件后面注意不要有空格

5. rsync客户端密码文件中只输入密码信息即可,不要输入虚拟认证用户名称

图片 6

3.1.2  第二个里程:编写rsync软件的配置文件

vim
/etc/rsyncd.conf       —rsyncd.conf是rsync服务的默认配置文件,默认并不存在

图片 7 

#rsync_config

#created by HQ at 2017

##rsyncd.conf start##

    

uid = rsync

gid = rsync

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

ignore errors

read only = false

list = false

hosts allow = 172.16.1.0/24

hosts deny = 0.0.0.0/32

auth users = rsync_backup

secrets file = /etc/rsync.password

[backup]

comment = "backup dir by oldboy"

path = /backup

参考资料:

4.4 Unknown module ‘backup’ 

[root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup

@ERROR: Unknown module ‘backup’

rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]

   异常问题解决:

1. /etc/rsyncd.conf配置文件模块名称书写错误  

2. 模块对应的目录创建有误

在ATIES控制中心窗口中点击“Install Acronis Componets”选项,进入到“Remote
Install Wizard”对话框

3.1.3 第三个里程碑:创建备份目录管理用户

[root@backup ~]# vim /etc/rsyncd.conf

[root@backup ~]# useradd -s /sbin/nologin -M rsync

[root@backup ~]# id rsync

uid=501(rsync) gid=501(rsync) groups=501(rsync)

4.5 Permission denied

[root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup

Password:

sending incremental file list

hosts

rsync: mkstemp ".hosts.5z3AOA" (in backup) failed: Permission denied (13)

 

sent 196 bytes  received 27 bytes  63.71 bytes/sec

total size is 349  speedup is 1.57

rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1039) [sender=3.0.6]   

   异常问题解决:

1. 共享目录的属主和属组不正确,不是rsync

2. 共享目录的权限不正确,不是755

图片 8

3.1.4 第四个里程碑:创建认证用户密码文件

创建密码文件,采用这种方式不能使用系统用户对客户端进行认证,所以需要创建一个密码文件,其格式为“username:password”,用户名可以和密码可以随便定义,最好不要和系统帐户一致,同时要把创建的密码文件权限设置为600,保证安全,密码不泄露。

[root@backup ~]# echo "rsync_backup:wuhuang123" >/etc/rsync.password

[root@backup ~]# chmod 600 /etc/rsync.password

[root@backup ~]# ll /etc/rsync.password

-rw——- 1 root root 23 Jan 22 20:51 /etc/rsync.password

3.1.5 第五个里程碑:创建备份目录,并进行授权

在备份或恢复时,服务端要允许客户端有写入权限,否则也不能在客户端直接对服务端进行恢复

[root@backup ~]# mkdir /backup

[root@backup ~]# chown -R rsync.rsync /backup/

[root@backup ~]# ll /backup/ -d

drwxr-xr-x 2 rsync rsync 4096 Jan 22 20:56 /backup/

3.1.6 第六个里程碑:启动rsync守护进程服务

[root@backup ~]# rsync –daemon

[root@backup ~]# ps -ef|grep rsync

root       1870      1  0 20:59 ?        00:00:00 rsync –daemon

root       1879   1228  0 21:00 pts/0    00:00:00 grep rsync

[root@backup ~]#  netstat -lntup|grep rsync

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

tcp        0      0 :::873                 :::*                     LISTEN      1870/rsync

3.2 客户端部署

4.6 chdir failed 

[root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup

Password:

@ERROR: chdir failed

rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]

    异常问题解决:

1. 备份存储目录没有建立

2. 建立的备份存储目录和配置文件定义不一致

说明:如果没有备份存储目录

点击“Next”按钮后,选中“Registered components”单选项

3.2.1 进行测试传输备份数据

[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup

Password:

sending incremental file list

hosts

 

sent 201 bytes  received 27 bytes  24.00 bytes/sec

total size is 372  speedup is 1.63

[root@backup ~]# ll /backup/

total 4

-rw-r–r– 1 rsync rsync 372 Jan 19 11:55 hosts

 4.7 invalid uid rsync

[root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup

Password:

@ERROR: invalid uid rsync

rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]

    异常问题解决:

rsync服务对应rsync虚拟用户不存在了

图片 9

3.3  rsync守护进程模式数据传输原理

图片 10 

4.8 客户端已经配置了密码文件,但免秘钥登录方式,依旧需要输入密码

password file must
not be other-accessible

[root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup –password-file=/etc/rsync.password

password file must not be other-accessible

continuing without password file

Password:

sending incremental file list

 

sent 26 bytes  received 8 bytes  5.23 bytes/sec

total size is 349  speedup is 10.26

    异常问题解决:

rsync客户端的秘钥文件也必须是600权限

4.9 rsync客户端连接慢问题

错误日志输出

2017/03/08 20:14:43 [3422] params.c:Parameter() – Ignoring badly formed line in configuration file: ignore errors

2017/03/08 20:14:43 [3422] name lookup failed for 172.16.1.31: Name or service not known

2017/03/08 20:14:43 [3422] connect from UNKNOWN (172.16.1.31)

2017/03/08 20:14:43 [3422] rsync to backup/ from rsync_backup@unknown (172.16.1.31)

2017/03/08 20:14:43 [3422] receiving file list

2017/03/08 20:14:43 [3422] sent 76 bytes  received 83 bytes  total size 349

正确日志输出

2017/03/08 20:16:45 [3443] params.c:Parameter() – Ignoring badly formed line in configuration file: ignore errors

2017/03/08 20:16:45 [3443] connect from nfs02 (172.16.1.31)

2017/03/08 20:16:45 [3443] rsync to backup/ from rsync_backup@nfs02 (172.16.1.31)

2017/03/08 20:16:45 [3443] receiving file list

2017/03/08 20:16:45 [3443] sent 76 bytes  received 83 bytes  total size 349

  客户端连接慢原因:主机名未被解析

    异常问题解决:

查看日志进行分析,配置/etc/hosts文件,写入对应主机名与IP的映射关系

4.10 rsync服务没有正确启动

Connection refused
(111)

[root@wuhuang-muban ~]#  rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup

rsync: failed to connect to 172.16.1.41: Connection refused (111)

rsync error: error in socket IO (code 10) at clientserver.c(124) [sender=3.0.6]

解决 rsync服务没开启

[root@wuhuang-muban ~]# rsync –daemon

[root@wuhuang-muban ~]# ss -lntup |grep rsync

tcp    LISTEN     0      5               :::873               :::*   users:(("rsync",1434,5))

tcp    LISTEN     0      5               *:873              *:*    users:(("rsync",1434,4))

[root@wuhuang-muban ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup

Password:

sending incremental file list

hosts

 

sent 196 bytes  received 27 bytes  49.56 bytes/sec

total size is 349  speedup is 1.57

第5章 rsync扩展应用说明

图片 11

第4章 杀进程的三种方式

5.1 rsync服务特殊启动方法

1.  让rsync守护进程开机自启动

echo “rsync
–daemon” >>/etc/rc.local

 

利用xinetd服务启动rsync守护进程服务流程

4.1 kill

kill命令用来删除执行中的程序或工作。kill可将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。程序或工作的编号可利用ps指令或job指令查看。

   kill杀手:针对进程号,杀死进程,并且会提示进程已杀死

   kill 进程号

5.1.1 第一个里程碑:确认是否安装了xinetd服务软件

   rpm -qa|grep
xinetd

      yum install -y
xinetd

[root@backup ~]# rpm -qa|grep xinetd

[root@backup ~]# yum install xinetd -y

5.1.2 第二个里程碑:配置xinetd文件,让rsync服务允许被超级守护进程管理

   vim
/etc/xinetd.d/rsync

   disable = yes
  ===>  disable = no

[root@backup ~]# vim /etc/xinetd.d/rsync

# default: off

# description: The rsync server is a good addition to an ftp server, as it \

#       allows crc checksumming etc.

service rsync

{

        disable =no

        flags           = IPv6

        socket_type     = stream

        wait            = no

        user            = root

        server          = /usr/bin/rsync

        server_args     = –daemon

        log_on_failure  += USERID

}   

5.1.3 第三个里程碑:确保rsync守护进程服务关闭了

[root@backup ~]# netstat -lntup|grep rsync                                                                

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

tcp        0      0 :::873                      :::*                        LISTEN      1294/rsync          

[root@backup ~]# killall rsync

[root@backup ~]# killall rsync

rsync: no process killed

5.1.4 第四个里程碑:启动xinetd服务

[root@backup ~]# /etc/init.d/xinetd start

Starting xinetd:                                           [  OK  ]

[root@backup ~]#  netstat -lntup|grep 873

tcp        0      0 :::873               :::*                      LISTEN      1353/xinetd  

5.2 守护进程多模块功能配置

4.1.1 语法

kill(选项)(参数)

5.2.1 第一个里程碑-修改配置文件

[root@backup ~]# cat /etc/rsyncd.conf

#rsync_config

#created by HQ at 2017

##rsyncd.conf start##

 

uid = rsync

gid = rsync

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

ignore errors

read only = false

list = false

hosts allow = 172.16.1.0/24

 

hosts deny = 0.0.0.0/32

auth users = rsync_backup

secrets file = /etc/rsync.password

[backup]

comment = "backup dir by wuhuang"

path = /backup

[devbackup]

comment = "backup dir by wuhuang"

path = /devbackup

[sabackup]

comment = "backup dir by wuhuang"

path = /sabackup

4.1.2 选项

-a:当处理当前进程时,不限制命令名和进程号的对应关系;

-l <信息编号>:若不加<信息编号>选项,则-l参数会列出全部的信息名称;

-p:指定kill 命令只打印相关进程的进程号,而不发送任何信号;

-s <信息名称或编号>:指定要送出的信息;

-u:指定用户。

5.2.2 第二个里程碑-创建数据备份目录,修改备份目录属主和属组权限为管理用户

[root@backup ~]# mkdir /{backup,devbackup,sabackup}/ -p

[root@backup ~]# chown -R rsync.rsync /{backup,devbackup,sabackup}/

[root@backup ~]#  ll /backup/ -d

drwxr-xr-x 3 rsync rsync 4096 Jan 23 21:08 /backup/

[root@backup ~]# ll /devbackup/ -d

drwxr-xr-x 2 rsync rsync 4096 Jan 23 23:17 /devbackup/

[root@backup ~]# ll /sabackup/ -d

drwxr-xr-x 2 rsync rsync 4096 Jan 23 23:17 /sabackup/

4.1.3 参数

进程或作业识别号:指定要删除的进程或作业。

5.2.3 第三个里程碑-重启rsync服务

[root@backup ~]# /etc/init.d/xinetd restart

Stopping xinetd:                                           [  OK  ]

Starting xinetd:                                            [  OK  ]

4.1.4 实例

列出所有信号名称:

[root@backup ~]# kill -l

 1) SIGHUP  2) SIGINT  3) SIGQUIT  4) SIGILL  5) SIGTRAP

 6) SIGABRT  7) SIGBUS  8) SIGFPE  9) SIGKILL 10) SIGUSR1

11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM

16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP

21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ

26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR

31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3

38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8

43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13

48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12

53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7

58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2

63) SIGRTMAX-1 64) SIGRTMAX

只有第9种信号(SIGKILL)才可以无条件终止进程,其他信号进程都有权利忽略,下面是常用的信号:


  HUP     1    终端断线

   INT     2    中断(同 Ctrl + C)

   QUIT    3    退出(同 Ctrl + \)

   TERM   15    终止

   KILL    9    强制终止

   CONT   18    继续(与STOP相反, fg/bg命令)

   STOP   19    暂停(同 Ctrl + Z)

 

先用ps查找进程,然后用kill杀掉:

[root@backup ~]# ps -ef | grep vim

root      3268  2884  0 16:21 pts/1    00:00:00 vim install.log

root      3370  2822  0 16:21 pts/0    00:00:00 grep vim

[root@backup ~]# kill 3268

[root@backup ~]# kill 3268

-bash: kill: (3268) – 没有那个进程

4.2 killall

killall命令使用进程的名称来杀死进程,使用此指令可以杀死一组同名进程。我们可以使用kill命令杀死指定进程PID的进程,如果要找到我们需要杀死的进程,我们还需要在之前使用ps等命令再配合grep来查找进程,而killall把这两个过程合二为一,是一个很好用的命令。


  killall杀手:针对进程名,杀死进程,并且会提示进程已杀死

  killall sshd

 4.2.1 语法

killall(选项)(参数)

说明:

   
 1. 如果是由rsync
–daemon启动的,重启时使用 killall rsync && rsync –daemon

2. 如果是由 /etc/init.d/xinetd
start启动的,重启时使用 /etc/init.d/xinetd restart

4.2.2 选项

-e:对长名称进行精确匹配;

-l:忽略大小写的不同;

-p:杀死进程所属的进程组;

-i:交互式杀死进程,杀死进程前需要进行确认;

-l:打印所有已知信号列表;

-q:如果没有进程被杀死。则不输出任何信息;

-r:使用正规表达式匹配要杀死的进程名称;

-s:用指定的进程号代替默认信号“SIGTERM”;

-u:杀死指定用户的进程。

5.2.4 第四个里程碑-rsync客户端测试

[root@nfs01 ~]# rsync –delete -avz /etc/hosts rsync_backup@172.16.1.41::devbackup –password-file=/etc/rsync.password

sending incremental file list

hosts

 

sent 205 bytes  received 27 bytes  464.00 bytes/sec

total size is 372  speedup is 1.60

[root@nfs01 ~]# rsync –delete -avz /etc/hosts rsync_backup@172.16.1.41::sabackup –password-file=/etc/rsync.password

sending incremental file list

hosts

 

sent 205 bytes  received 27 bytes  464.00 bytes/sec

total size is 372  speedup is 1.60

[root@nfs01 ~]#  rsync –delete -avz /etc/hosts rsync_backup@172.16.1.41::backup –password-file=/etc/rsync.password

sending incremental file list

hosts

 

sent 205 bytes  received 27 bytes  464.00 bytes/sec

total size is 372  speedup is 1.60

[root@backup ~]# ll /backup/ /devbackup/ /sabackup/

/backup/:

total 4

-rw-r–r– 1 rsync rsync 372 Jan 19 11:55 hosts

/devbackup/:

total 4

-rw-r–r– 1 rsync rsync 372 Jan 19 11:55 hosts

/sabackup/:

total 4

-rw-r–r– 1 rsync rsync 372 Jan 19 11:55 hosts

4.2.3 参数

进程名称:指定要杀死的进程名称。

5.3 守护进程的排除功能实践

  创建一个测试环境:nfs服务器(客户端)上操作

[root@nfs01 ~]# tree /wuhuang/

/wuhuang/

├── a

│   ├── 1

│   ├── 2

│   └── 3

├── b

│   ├── 1

│   ├── 2

│   └── 3

├── c

│   ├── 1

│   ├── 2

│   └── 3

└── d

    ├── 1

    ├── 2

└── 3

4 directories, 12 files

 

实现数据同步传输排除方法

1. –exclude
      参数指定排除的文件或目录信息

2. –exclude-from
 参数指定排除的多个数据信息文件

4.2.4 实例

杀死所有同名进程

[root@backup ~]# killall vi

4.3 pkill

 pkill杀手:针对进程名,杀死进程,但是一个模糊的杀手,残暴的杀手(不会有提示信息)

 pkill
sshd

[root@backup ~]# ps -ef |grep sh

root        536      2  0 17:57 ?        00:00:00 [flush-8:0]

root       1188      1  0 17:57 ?        00:00:00 /usr/sbin/sshd

root       1229   1188  0 17:58 ?        00:00:00 sshd: root@pts/0

root       1231   1229  0 17:58 pts/0    00:00:00 -bash

root       1734   1188  0 19:54 ?        00:00:00 sshd: root@pts/1

root       1736   1734  0 19:54 pts/1    00:00:00 -bash

root       1908   1231  1 21:28 pts/0    00:00:00 grep sh

[root@backup ~]# pkill sh

此命令同时杀死了以上进程


5.3.1 –exclude=PATTETN

 –exclude实现排除需求:不要a和b,只要c目录所有数据,d目录中只要1和3文件

[root@nfs01 ~]# rsync -avz /wuhuang/ –exclude=a –exclude=b –exclude=d/2   rsync_backup@172.16.1.41::backup  –password-file=/etc/rsync.password

sending incremental file list

./

c/

c/1

c/2

c/3

d/

d/1

d/3

 

sent 292 bytes  received 114 bytes  270.67 bytes/sec

total size is 0  speedup is 0.00

[root@backup ~]# ll -R /backup/

/backup/:

total 8

drwxr-xr-x 2 rsync rsync 4096 Jan 23 17:54 c

drwxr-xr-x 2 rsync rsync 4096 Jan 23 17:54 d

 

/backup/c:

total 0

-rw-r–r– 1 rsync rsync 0 Jan 23 17:54 1

-rw-r–r– 1 rsync rsync 0 Jan 23 17:54 2

-rw-r–r– 1 rsync rsync 0 Jan 23 17:54 3

 

/backup/d:

total 0

-rw-r–r– 1 rsync rsync 0 Jan 23 17:54 1

-rw-r–r– 1 rsync rsync 0 Jan 23 17:54 3

 以上命令精简化:

rsync -avz /wuhuang/ –exclude={a..b} –exclude=d/2   rsync_backup@172.16.1.41::backup  –password-file=/etc/rsync.password

rsync -avz /wuhuang/ –exclude={a,b} –exclude=d/2   rsync_backup@172.16.1.41::backup  –password-file=/etc/rsync.password

5.3.2 –exclude-from=FILE


–exclude-from实现排除需求:不要a和b
只要c目录所有数据 d目录中只要1和3文件

[root@nfs01 wuhuang]# pwd

/wuhuang

[root@nfs01 wuhuang]# vim exclude.txt

[root@nfs01 wuhuang]# cat exclude.txt

a

b

d/2

[root@nfs01 wuhuang]# rsync -avz /wuhuang/ –exclude-from=/wuhuang/exclude.txt  rsync_backup@172.16.1.41::backup  –password-file=/etc/rsync.password 

sending incremental file list

./

exclude.txt

c/

c/1

c/2

c/3

d/

d/1

d/3

 

sent 368 bytes  received 133 bytes  1002.00 bytes/sec

total size is 8  speedup is 0.02

[root@backup ~]# ll -R /backup/

/backup/:

total 12

drwxr-xr-x 2 rsync rsync 4096 Jan 23 17:54 c

drwxr-xr-x 2 rsync rsync 4096 Jan 23 17:54 d

-rw-r–r– 1 rsync rsync    8 Jan 23 23:54 exclude.txt

 

/backup/c:

total 0

-rw-r–r– 1 rsync rsync 0 Jan 23 17:54 1

-rw-r–r– 1 rsync rsync 0 Jan 23 17:54 2

-rw-r–r– 1 rsync rsync 0 Jan 23 17:54 3

/backup/d:

total 0

-rw-r–r– 1 rsync rsync 0 Jan 23 17:54 1

-rw-r–r– 1 rsync rsync 0 Jan 23 17:54 3

说明:如果在排除同步过程中,出现了指定的exclude.txt文件,两种方法解决:

01.
将exclude.txt文件从同步数据目录中移出

02.
在exclude.txt文件中写入排除自身文件信息

5.3.3 守护进程来创建备份目录

[root@backup ~]# ll /backup/

total 0

[root@nfs01 ~]#  rsync -av /wuhuang/a  rsync_backup@172.16.1.41::backup/01/  –password-file=/etc/rsync.password  

sending incremental file list

created directory 01

a/

a/1

a/2

a/3

 

sent 176 bytes  received 69 bytes  163.33 bytes/sec

total size is 0  speedup is 0.00

[root@nfs01 ~]# rsync -avz /wuhuang/b  rsync_backup@172.16.1.41::backup/02/  –password-file=/etc/rsync.password

sending incremental file list

created directory 02

b/

b/1

b/2

b/3

 

sent 167 bytes  received 69 bytes  472.00 bytes/sec

total size is 0  speedup is 0.00

[root@backup ~]# tree /backup/

/backup/

├── 01

│   └── a

│       ├── 1

│       ├── 2

│       └── 3

└── 02

    └── b

        ├── 1

        ├── 2

        └── 3

 

4 directories, 6 files

 

说明:rsync客户端无法实现mkdir -p参数功能,即无法实现创建多级目录

[root@nfs01 ~]# rsync -avz /wuhuang/c  rsync_backup@172.16.1.41::backup/03/w/h  –password-file=/etc/rsync.password

sending incremental file list

rsync: mkdir "03/w/h" (in backup) failed: No such file or directory (2)

rsync error: error in file IO (code 11) at main.c(576) [receiver=3.0.6]

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

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

5.3.4 守护进程的访问控制配置

[root@backup ~]# cat /etc/rsyncd.conf 

#rsync_config

#created by HQ at 2017

##rsyncd.conf start##

 

uid = rsync

gid = rsync

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

ignore errors

read only = false

list = false

hosts allow = 172.16.1.0/24

hosts deny = 0.0.0.0/32

auth users = rsync_backup

secrets file = /etc/rsync.password

[backup]

comment = "backup dir by wuhuang"

path = /backup

[devbackup]

comment = "backup dir by wuhuang"

path = /devbackup

[sabackup]

comment = "backup dir by wuhuang"

path = /sabackup

图片 12 

第三种情况测试

[root@nfs01 ~]# rsync –delete -avz /etc/hosts rsync_backup@10.0.0.41::backup –password-file=/etc/rsync.password

sending incremental file list

hosts

 

sent 205 bytes  received 27 bytes  154.67 bytes/sec

total size is 372  speedup is 1.60                              10.0.0.41网段可以实现传输

5.4 守护进程无差异同步配置

  无差异同步通俗的讲:

1. 我有的数据,你也有;我没有的数据,你也不能有(删除)

2. 存储与备份服务数据完全一致(一模一样)

5.4.1 实现无差异同步的方法:利用–delete

我有的数据,你也有:实践过程

rsync客户端操作命令:

[root@nfs01 ~]# rsync -avz –delete /wuhuang/ rsync_backup@172.16.1.41::backup  –password-file=/etc/rsync.password

sending incremental file list

./

exclude.txt

a/

a/1

a/2

a/3

b/

b/1

b/2

b/3

c/

c/1

c/2

c/3

d/

d/1

d/2

d/3

 

sent 705 bytes  received 274 bytes  1958.00 bytes/sec

total size is 8  speedup is 0.01

rsync服务端检查:

[root@backup ~]# tree /backup/

/backup/

├── a

│   ├── 1

│   ├── 2

│   └── 3

├── b

│   ├── 1

│   ├── 2

│   └── 3

├── c

│   ├── 1

│   ├── 2

│   └── 3

├── d

│   ├── 1

│   ├── 2

│   └── 3

└── exclude.txt

 

4 directories, 13 files

 

我没有的数据,你也不能有(删除):实践过程

[root@nfs01 ~]# cd /wuhuang/

[root@nfs01 wuhuang]# rm -rf a

[root@nfs01 wuhuang]# ll

total 16

drwxr-xr-x 2 root root 4096 Jan 23 17:54 b

drwxr-xr-x 2 root root 4096 Jan 23 17:54 c

drwxr-xr-x 2 root root 4096 Jan 23 17:54 d

-rw-r–r– 1 root root    8 Jan 23 23:54 exclude.txt

[root@nfs01 wuhuang]# rsync -avz –delete /wuhuang/ rsync_backup@172.16.1.41::backup  –password-file=/etc/rsync.password

sending incremental file list

./

deleting a/3

deleting a/2

deleting a/1

deleting a/

 

sent 177 bytes  received 14 bytes  382.00 bytes/sec

total size is 8  speedup is 0.04

rsync服务端检查:

[root@backup ~]# tree /backup/

/backup/

├── b

│   ├── 1

│   ├── 2

│   └── 3

├── c

│   ├── 1

│   ├── 2

│   └── 3

├── d

│   ├── 1

│   ├── 2

│   └── 3

└── exclude.txt

 

3 directories, 10 files


发表评论

电子邮件地址不会被公开。 必填项已用*标注