linux系统scp和rsync同步命令介绍

scp

一、scp 简介

scp 是 secure copy 的缩写,是 基于 ssh 协议进行安全的远程文件拷贝命令。

scp 想要免密进行复制,需要发送密钥给相应的节点。

scp 是加密的,rcp 是不加密的,scp 是 rcp 的加强版。

二、scp 命令语法

scp [-options] [[user@]host1:]source_file [[user@]host2:]target_file2

三、参数说明:

1、常用参数

-r: 递归复制整个目录。

-P port:注意是大写的P, port是指定数据传输用到的端口号。

-v:详细方式显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。

2、其他参数

-1: 强制scp命令使用协议ssh1

-2: 强制scp命令使用协议ssh2

-4: 强制scp命令只使用IPv4寻址

-6: 强制scp命令只使用IPv6寻址

-B: 使用批处理模式(传输过程中不询问传输口令或短语)

-C: 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)

-p:保留源文件的修改时间,访问时间和访问权限。

-q:不显示传输进度条。

-c cipher:以cipher将数据传输进行加密,这个选项将直接传递给ssh。

-F ssh_config:指定一个替代的ssh配置文件,此参数直接传递给ssh。

-i identity_file:从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。

-l limit: 限定用户所能使用的带宽,以Kbit/s为单位。

-o ssh_option: 如果习惯于使用ssh_config(5)中的参数传递方式。

-S program: 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。

实例1

scp  源文件 目标

## 推文件
[root@web02 ~]# scp /root/1.txt root@10.0.0.41:/root/
这里注意写上文件的绝对路径
## 推目录
推目录要加上-r选项
[root@web02 ~]# scp -r /root/123 root@10.0.0.41:/tmp
root@10.0.0.41's password: 
456                        

## 拉目录
把10.0.0.41机器上面的/etc目录拷贝到本地/tmp下
[root@web02 ~]# scp -r root@10.0.0.41:/etc /tmp
## 拉文件
把10.0.0.41机器上面的/tmp/yum.log文件拷贝到web02机器下的/root目录下
[root@web02 ~]# scp root@10.0.0.41:/tmp/yum.log /root/
root@10.0.0.41's password: 
yum.log                                                                                             100%    0     0.0KB/s   00:00    
[root@web02 ~]# ll /root/
total 8
drwxr-xr-x  2 root root   17 May  7 00:13 123
-rw-------. 1 root root 1444 Apr 30 20:50 anaconda-ks.cfg
-rw-r--r--. 1 root root  287 May  3 20:07 host_ip.sh
-rw-------  1 root root    0 May  7 00:24 yum.log


rsync

rsync是同步工具,把一台机器上的文件传输到另一台。

备份类型

  1. 支持全量备份
  2. 支持增量备份
  3. 不支持差异备份

全量备份介绍

全量备份

  完全备份(full backup)」,每个档案都会被写进备份档去。如上所述,如果两个时间点备份之间,数据没有任何更动,那么所有备份数据都是一样的。

  这问题出自备份系统不会检查自上次备份后,档案有没有被更动过;它只是机械性地将每个档案读出、写入,不管档案有没有被修改过。备份全部选中的文件及文件夹,并不依赖文件的存盘属性来确定备份哪些文件。

  (在备份过程中,任何现有的标记都被清除,每个文件都被标记为已备份,换言之,清除存盘属性)。

  这是我们不会一味采取完全备份的原因 — 每个档案都会被写到备份装置上。这表示即使所有档案都没有变动,还是会占据许多存储空间。如果每天变动的档案只有 10 MB,每晚却要花费 100 GB 的存储空间做备份,这绝对不是个好方法;这也就是推出「增量备份(incremental backups) 的主要原因。

增量备份介绍

跟完全备份不同,增量备份在做数据备份前会先判断,档案的最后修改时间是否比上次备份的时间来得晚。如果不是的话,那表示自上次备份后,这档案并没有被更动过,所以这次不需要备份。换句话说,如果修改日期「的确」比上次更动的日期来得晚,那么档案就被更动过,需要备份。

  增量备份常常跟完全备份合用(例如每个星期做完全备份,每天做增量备份)差异备份是针对完全备份:备份上一次的完全备份后发生变化的所有文件。

  (差异备份过程中,只备份有标记的那些选中的文件和文件夹。它不清除标记,既:备份后不标记为已备份文件,换言之,不清除存盘属性)。

  使用增量备份最大的好处在于备份速度:它的速度比完整备份快上许多,同时由于增量备份在做备份前会自动判断备份时间点及文件是否已作改动,所以相对于完全备份其对于节省存储空间也大有益处。增量备份的不足之处在于数据还原的时间较长,效率相对较低,例如,如果您要还原一个备份档案,您必须把所有增量备份的磁盘都找一遍,直到找到为止,如果您要复原整个档案系统,那就得先复原最近一次的完整备份,然后复原一个又一个的增量备份。

  要避免复原一个又一个的递增数据,提升数据的复原的效率,把做法稍微改变一下,就变成了「差异备份(differential backup)」。

差异备份介绍

差异备份

  差异备份与增量备份一样,都只备份更动过的数据。但前者的备份是「累积(cumulative)」的—— 一个档案只要自上次完整备份后,曾被更新过,那么接下来每次做差异备份时,这个档案都会被备份(当然,直到下一次完整备份为止)。

  这表示差异备份中的档案,都是自上次完全备份之后,曾被改变的档案。如果要复原整个系统,那么您只要先复原完全备份,再复原最后一次的差异备份即可。增量备份是针对于上一次备份(无论是哪种备份):备份上一次备份后,所有发生变化的文件。

  (增量备份过程中,只备份有标记的选中的文件和文件夹,它清除标记,既:备份后标记文件,换言之,清除存盘属性。)

  跟增量备份所使用的策略一样,您平时只要定期做一次完全备份,再定时做差异备份即可。

  所以,差异备份的大小,会随着时间过去而不断增加(假设在完全备份间,每天修改的档案都不一样)。以备份空间与速度来说,差异备份介于递增备份与完全备份之间;但不管是复原一个档案或是整个系统,速度通常比完全备份、增量备份快(因为要搜寻 / 复原的磁盘数目比较少)。

  基于这些特点,差异备份是值得考虑的方案,增量备份与差异备份技术在部分中高端的网络附加存储设备如IBM、HP、及自由遁等品牌的部分产品的附带软件中已内置。

rsync的传输模式

## 本地传输相当于cp命令
传输目录加-a选项,把/root目录下的123目录传输到/tmp目录下
[root@web02 ~]# rsync -a /root/123 /tmp
把/tmp/yum.log文件传输到/root目录下
[root@web02 ~]# rsync /tmp/yum.log /root
## 远程传输相当于scp命令
把本地的/root/123目录传输到10.0.0.41机器的/tmp目录下
[root@web02 ~]# rsync -a /root/123 root@10.0.0.41:/tmp/
root@10.0.0.41's password: 这里是输入密码的地方
看一下有没有传输过去
[root@backup tmp]# ll
total 4
drwxr-xr-x  2 root root  17 May  7 00:13 123
把10.0.0.41机器上面的/tmp/yum.log文件拉到本机的/root目录下
[root@backup ~]# rsync root@10.0.0.41:/tmp/yum.log /root
The authenticity of host '10.0.0.41 (10.0.0.41)' can't be established.
ECDSA key fingerprint is SHA256:0LmJJQAFxWMarCtpHr+bkYdqoSpp3j7O+TDbK1chOqI.
ECDSA key fingerprint is MD5:a1:a9:30:13:5f:44:ad:da:fb:a1:65:34:b5:dd:a3:d3.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.0.41' (ECDSA) to the list of known hosts.
root@10.0.0.41's password: 
[root@backup ~]# ll
total 8
-rw-------. 1 root root 1444 Apr 30 20:50 anaconda-ks.cfg
-rw-r--r--. 1 root root  287 May  3 20:07 host_ip.sh
-rw-------  1 root root    0 May  7 00:56 yum.log

## 关于权限不足的报错
rsync: mkstemp "/root/.host_ip.sh.nrcrr0" failed: Permission denied (13)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1179) [sender=3.1.2]

守护进程模式(服务)

## 语法:
## Access via rsync daemon:
	Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
	# 拉:rsync [-avz] zls_bak@10.0.0.41::[模块] 源文件 目标
          rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST](忘记它)
         
	Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
	# 推:rsync [-avz] 源文件 zls_bak@10.0.0.41::[模块] 目标
          rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST(忘记它)
          
     注意:推和拉的区别,就是源文件的位置在哪里,拉:源文件在后面。


## rsync 重要选项
-a           #归档模式传输, 等于-tropgDl
-v           #详细模式输出, 打印速率, 文件数量等
-z           #传输时进行压缩以提高效率
--delete     #让目标目录和源目录数据保持一致
--password-file=xxx #使用密码文件

------------------- -a 包含 ------------------
-r           #递归传输目录及子目录,即目录下得所有目录都同样传输。
-t           #保持文件时间信息
-o           #保持文件属主信息
-p           #保持文件权限
-g           #保持文件属组信息
-l           #保留软连接
-D           #保持设备文件信息
----------------------------------------------

-L           #保留软连接指向的目标文件
-e           #使用的信道协议,指定替代rsh的shell程序
--exclude=PATTERN   #指定排除不需要传输的文件模式
--exclude-from=file #文件名所在的目录文件

环境准备

主机名 外网ip 内网ip 角色
backup 10.0.0.41 172.16.1.41 服务端
web01 10.0.0.7 172.16.1.7 客户端
web02 10.0.0.8 172.16.1.8 客户端

安装服务端

服务端介绍

服务端(Server)是为客户端服务的,服务的内容诸如向客户端提供资源,保存客户端数据。一般大型的服务端都是在linux环境下搭建。服务端不具备运算能力,因为服务端同时会与多个客户端建立连接,一旦服务端进行运算的话,就会占用大量的资源,从而影响到其他客户端的通信。

客户端

就比如QQ我们下载安装的那个就是客户端
我们发送的内容是先从我们这边发到服务器那边,然后再发到对方那边的

浏览器服务器模式又叫BS模式,直接用浏览器IE等就可以直接连接到服务器;
客户端服务器模式又叫CS模式,客户端必专须先安装客户端软属件才可以连接到服务器.


在服务端安装rsync

## 安装rsync
yun install -y rsync 

## 安装完成修改配置文件,一般配置文件是以.conf 或 .cnf 或 .cfg结尾
[root@backup ~]# vim /etc/rsyncd.conf
## 指定进程启动uid
uid = rsync
## 指定进程启动gid
gid = rsync
## rsync服务的端口
port = 873
## 无需让rsync以root身份运行,允许接收文件的完整属性
fake super = yes
## 禁锢指定的目录
use chroot = no
## 最大连接数
max connections = 200
## 超时时间
timeout = 600
## 忽略错误
ignore errors
## 不只读(可读可写)
read only = false
## 不允许别人查看模块名
list = false
## 传输文件的用户
auth users = wzh_bak
## 传输文件的用户和密码文件
secrets file = /etc/rsync.passwd
## 日志文件
log file = /var/log/rsyncd.log
#####################################
## 模块名
[wzh]
## 注释,没啥用
comment = 123
## 备份的目录
path = /backup

# 3.根据配置文件内容,创建出来需要的用户,目录,密码文件...
# 3.1 创建用户
[root@backup ~]# useradd rsync -s /sbin/nologin -M
# 3.2 创建备份目录
[root@backup ~]# mkdir /backup
# 3.3 修改属组和属主
[root@backup ~]# chown -R rsync.rsync /backup/
# 3.4 创建用户名和密码存放的文件
[root@backup ~]# vim /etc/rsync.passwd
wzh_bak:123

[root@backup ~]# echo 'wzh_bak:123' > /etc/rsync.passwd
# 3.5 修改密码文件的权限为600
[root@backup ~]# chmod 600 /etc/rsync.passwd

# 4.启动服务并且加入开机自启
[root@backup ~]# systemctl start rsyncd
[root@backup ~]# systemctl enable rsyncd

# 5.检测端口
[root@backup ~]# netstat -lntup|grep 873
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      18373/rsync         
tcp6       0      0 :::873                  :::*                    LISTEN      18373/rsync        
# 6.检测进程
[root@backup ~]# ps -ef|grep [r]sync
root      18373      1  0 20:48 ?        00:00:00 /usr/bin/rsync --daemon --no-detach



安装客户端

## rsync客户端不用修改配置文件
# 1.安装rsync
[root@web01 ~]# yum install -y rsync
# 2.客户端需要创建一个密码文件
[root@web01 ~]# vim /etc/rsync.pass
123
# 3.修改密码文件的权限为600
[root@web01 ~]# chmod 600 /etc/rsync.pass 

# 4.从客户端往服务端推送重要备份文件
rsync [-avz] 源文件 wzh_bak@10.0.0.41::[模块]
rsync -avz /etc/shadow wzh_bak@10.0.0.41::zls --password-file=/etc/rsync.pass

以上内容是今天学习总结,下面内容是作业操作过程

要求:web01,web02 作为客户端安装rsync,backup作为服务端安装rsync

安装完成后写脚本,每天晚上23:00备份,给etc目录打包,推送到backup服务器的/backup目录下

web01文件名:2020-05-06_web01_etc.tar.gz

web02文件名: 2020-05-06_web02_etc.tar.gz

首先使用yum install -y rsync 分别在这三台机器上安装服务,好像有一个办法能同时同步多台机器做同一种工作

但是......我忘了,尴尬而不失礼貌的微笑......

因为我之前已经安装过了,所以再安装会有提示就像下面这样

##第一步安装
[root@web02 ~]# yum install -y rsync
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
Package rsync-3.1.2-10.el7.x86_64 already installed and latest version
Nothing to do
## 这不是报错,是因为已经安装过了
## 第二步编辑一个密码文件
[root@web02 ~]# vim /etc/rsync.pass
[root@web02 ~]# cat /etc/rsync.pass 
123
## 第三步给上面的密码文件授权600
[root@web02 ~]# chmod 600 /etc/rsync.pass
## 第四步先试着把web02上面的密码文件/etc/passwd传输到backup机器上
[root@web02 ~]# rsync -avz /etc/passwd wzh_bak@10.0.0.41::wzh --password-file=/etc/rsync.pass
sending incremental file list
passwd

sent 510 bytes  received 43 bytes  1,106.00 bytes/sec
total size is 986  speedup is 1.78
[root@web02 ~]# echo $?
0
## 已经成功了,看一下backup机器上面的/backup目录有没有文件
[root@backup backup]# ll
total 4
-rw-r--r-- 1 rsync rsync 986 May  3 20:01 passwd


web01和上面的这个操作步骤一样

现在我们就来写个脚本加入定时任务

## 脚本内容如下
[root@web02 ~]# vim db.sh
[root@web02 ~]# cat db.sh
#!/bin/bash
dir=$(date +%Y-%m-%d)_$(hostname)
/bin/tar zcPf  "$dir"_etc.tar.gz /etc
/bin/rsync -avz "$dir"_etc.tar.gz wzh_bak@10.0.0.41::wzh --password-file=/etc/rsync.pass
## 加入定时任务,要求是每天23:00备份,为了保证不出差错先设置下每分钟备份一次
[root@web02 ~]# crontab -l
#每天23:00备份etc目录到backup服务器的/backup目录下 
*/1 * * * * /bin/sh  /root/db.sh

## 现在backup服务器的backup目录是空的
[root@backup backup]# ll
total 0
## 过了一会儿之后我们再看下backup目录
[root@backup backup]# ll
total 9924
-rw-r--r-- 1 rsync rsync 10161898 May  7  2020 2020-05-07_web02_etc.tar.gz
##可以看到命令执行成功了,那这时候就可以改成每天23:00备份了
[root@web02 ~]# crontab -l
#每天23:00备份etc目录到backup服务器的/backup目录下 
0 23 * * * /bin/sh  /root/db.sh


ok,web01和上面操作步骤一样

最后总结下backup服务器的安装,因为比客户端要多点东西

首先下载完rsync之后要修改配置文件,当然我是复制粘贴的,因为不会写呀
我把我的配置文件拿出来说

上面就是我的配置文件,我改了传输文件的用户和模块名,最下面的path= /backup是备份文件的目录
首先要先把这个目录创建出来,使用命令mkdir /backup ,然后创建出rsync用户使用命令useradd rsync -s /sbin/nologin -M ,完成后使用chown rsync.rsync /backup 给/backup目录授权,然后编辑一个密码文件
vim /etc/rsync.passwd 里面输入用户名字和密码我的是wzh_bak:123 ,保存退出然后给这个密码文件授权600
chmod 600 /etc/rsync.passwd完成后启动rsync服务systemctl start rsyncd 再加入开机自启systemctl enable rsyncd 完后后使用ss -an|grep 873或netstat -lntup|grep 873 检查端口,因为rsync的默认端口是873再用ps -ef|grep [r]sync检查有没有rsync的进程,配置服务端的基本操作这样就可以了
其他服务默认端口mySQL:3306 ssh:22 ftp:21
C/S 架构:Client/Server
B/SBrowser/Server
小提示:利用rsync还可以实现删除文件和目录的功能,这又相当于rm命令,一个rsync相当于scp、cp、rm,但是还优于他们的每一个命令。

定时任务脚本和截图

linux9期架构day03


作业要求

Rsync备份案例
使用3台服务器主机名分别为web01、backup 、nfs主机信息见下表:

角色 外网IP 内网IP 主机名
WEB 10.0.0.7 172.16.1.7 web01
NFS 10.0.0.31 172.16.1.31 nfs01
Rsync 10.0.0.41 172.16.1.41 backup

客户端需求
1.客户端提前准备存放的备份的目录,目录规则如下:/backup/nfs_172.16.1.31_2018-09-02
2.客户端在本地打包备份(系统配置文件、应用配置等)拷贝至/backup/nfs_172.16.1.31_2018-09-02
3.客户端最后将备份的数据进行推送至备份服务器
4.客户端每天凌晨1点定时执行该脚本
5.客户端服务器本地保留最近7天的数据, 避免浪费磁盘空间

服务端需求
1.服务端部署rsync,用于接收客户端推送过来的备份数据
2.服务端需要每天校验客户端推送过来的数据是否完整
3.服务端需要每天校验的结果通知给管理员
4.服务端仅保留6个月的备份数据,其余的全部删除

脚本解决

##客户端需求

1.1首先在客户端编辑一个备份的脚本

[root@nfs ~]# vim bf.sh

注意:编辑脚本的时候一定要现在命令行实现,成功之后再加入到脚本里面,写一步实验一步,及时找到错误并改正。

1.2每天凌晨一点把备份目录传输到backup服务器

## 服务端需求

1.1:配置邮箱

下载mailx
[root@backup backup]# yum install -y mailx
下载完成修改配置文件并手机打开邮箱账户通过手机短信方式
获取授权码
#发件人
set from=714845658@qq.com
#邮件服务器
set smtp=smtp.qq.com
#发件人用户名
set smtp-auth-user=714845658@qq.com
#发件人密码(QQ邮箱不可以使用密码,只能使用授权码)
set smtp-auth-password=xxx
#登录方式
set smtp-auth=login
#邮件服务器协议及端口
set smtp=smtps://smtp.qq.com:465
#忽略证书
set ssl-verify=ignore
#指定证书位置
set nss-config-dir=/root/.certs
##########下面是获取证书############

第一步:mkdir -p /root/.certs
第二步:cd ./.certs/
 第三步: echo -n | openssl s_client -connect smtp.qq.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/qq.crt
 
 第四步:certutil -A -n "GeoTrust SSL CA" -t "C,,"  -d  ~/.certs  -i  ~/.certs/qq.crt
  第五步:  certutil -A -n "GeoTrust Global CA" -t "C,,"  -d  ~/.certs  -i  ~/.certs/qq.crt
  第六步:  certutil -L -d /root/.certs
  第七步:certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ~/.certs -i ~/.certs/qq.crt
  ########获取证书之后发测试邮件#########
 echo wzh |mail -s '测试邮件' 714845658@qq.com


OK,测试成功

1.2:测试校验结果,因为在客户端的脚本里已经写了校验部分,所以传输过来的文件是有检验文件的

测试结果也是OK的,那这样就可以把测试文件写进脚本l,根据要求

需要保留6个月的备份数据,其余的删除

1.3:测试脚本是否成功

命令行输入sh md5.sh

1.4:最后添加到定时任务,因为客户端是每天凌晨一点发送备份数据,那在服务端就把时间向后推迟五分钟


首先要学会修改rsync 服务端配置文件

安装rsync
yun install -y rsync 

## 安装完成修改配置文件,一般配置文件是以.conf 或 .cnf 或 .cfg结尾
[root@backup ~]# vim /etc/rsyncd.conf
## 指定进程启动uid
uid = rsync
## 指定进程启动gid
gid = rsync
## rsync服务的端口
port = 873
## 无需让rsync以root身份运行,允许接收文件的完整属性
fake super = yes
## 禁锢指定的目录
use chroot = no
## 最大连接数
max connections = 200
## 超时时间
timeout = 600
## 忽略错误
ignore errors
## 不只读(可读可写)
read only = false
## 不允许别人查看模块名
list = false
## 传输文件的用户
auth users = wzh_bak
## 传输文件的用户和密码文件
secrets file = /etc/rsync.passwd
## 日志文件
log file = /var/log/rsyncd.log
#####################################
## 模块名
[wzh]
## 注释,没啥用
comment = 123
## 备份的目录
path = /backup

# 3.根据配置文件内容,创建出来需要的用户,目录,密码文件...
# 3.1 创建用户
[root@backup ~]# useradd rsync -s /sbin/nologin -M
# 3.2 创建备份目录
[root@backup ~]# mkdir /backup
# 3.3 修改属组和属主
[root@backup ~]# chown -R rsync.rsync /backup/
# 3.4 创建用户名和密码存放的文件
[root@backup ~]# vim /etc/rsync.passwd
wzh_bak:123

[root@backup ~]# echo 'wzh_bak:123' > /etc/rsync.passwd
# 3.5 修改密码文件的权限为600
[root@backup ~]# chmod 600 /etc/rsync.passwd

# 4.启动服务并且加入开机自启
[root@backup ~]# systemctl start rsyncd
[root@backup ~]# systemctl enable rsyncd

# 5.检测端口
[root@backup ~]# netstat -lntup|grep 873
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      18373/rsync         
tcp6       0      0 :::873                  :::*                    LISTEN      18373/rsync        
# 6.检测进程
[root@backup ~]# ps -ef|grep [r]sync
root      18373      1  0 20:48 ?        00:00:00 /usr/bin/rsync --daemon --no-detach


知道修改客户端的环境变量

export RSYNC_PASSWORD=123
没修改之前是这样传输的
[root@web01 ~]#  rsync -avz /etc/passwd wzh_bak@10.0.0.41::wzh --password-file=/etc/rsync.pass
修改完之后是这样传输的

3.从服务端向客户端的/backup目录拉文件

4.学会了md5sum校验文件,首先创建了一个1.txt文件

然后把这个文件使用md5sum追加到一个md5.txt校验文件里

md5sum -c md5.txt检查文件,如果没有改动那么结果就是OK

然后echo 123 >>1.txt 把123追加到1.txt文件里

再次检查就会出现提示

1.txt:失败

md5sum:警告:1计算的校验和不匹配

5.用到了脚本

脚本开头#!/bin/bash表示此脚本使用/bin/bash解释执行

然后设置环境变量我理解是密码的变量export RSYNC_PASSWORD=123

第三步根据需求自己设置普通变量

第四步做判断使用if [ ! -d 目录名 ] ;then

mkdir -p 目录名

结尾用fi

[ ]里面的内容要和[ ]有空格,把then写在第一行要加分号,结尾fi和if相对应,

简单的判断就是如果这个目录不存在则用mkdir -p 创建

6.打包用到了tar命令,tar打包格式

tar zcf 包名.tat.gz 打包的目录或文件

7.用到了find命令

find 查找 -type d 类型是目录,文件用f -mtime -7 最近7天之内的文件

| 将查找到的结果交给后面命令执行 xargs 把前面找到的结果作为后面命令的参数

8.无差异同步这种做法很危险,可能造成数据丢失

所谓无差异同步就是客户端和服务端实现同等数据共存,如果我的客户端的目录里有

很多文件,这时候我把服务端的目录同步到我的客户端目录里,那么这些数据就会丢失,

我的客户端目录内容和服务端目录里的内容一样


我把backup服务器无差别同步到了我的web机器,这时候我里面的内容和backup一样,我原来的1.txt文件就丢失了

9.限制I/o读写,这样会让同步速度变得很慢

卡住了,因为限制了I/O的读写速度

posted @ 2020-07-13 16:59  王顺子  阅读(1862)  评论(0编辑  收藏  举报