1. 程式人生 > 實用技巧 >linux系統scp和rsync同步命令介紹

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 [email protected]:/root/
這裡注意寫上檔案的絕對路徑
## 推目錄
推目錄要加上-r選項
[root@web02 ~]# scp -r /root/123 [email protected]:/tmp
[email protected]'s password: 
456                        

## 拉目錄
把10.0.0.41機器上面的/etc目錄拷貝到本地/tmp下
[root@web02 ~]# scp -r [email protected]:/etc /tmp
## 拉檔案
把10.0.0.41機器上面的/tmp/yum.log檔案拷貝到web02機器下的/root目錄下
[root@web02 ~]# scp [email protected]:/tmp/yum.log /root/
[email protected]'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 [email protected]:/tmp/
[email protected]'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 [email protected]:/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.
[email protected]'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] [email protected]::[模組] 原始檔 目標
          rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST](忘記它)
         
	Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
	# 推:rsync [-avz] 原始檔 [email protected]::[模組] 目標
          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] 原始檔 [email protected]::[模組]
rsync -avz /etc/shadow [email protected]::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 [email protected]::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 [email protected]::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 [email protected]
#郵件伺服器
set smtp=smtp.qq.com
#發件人使用者名稱
set [email protected]
#發件人密碼(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 '測試郵件' [email protected]


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 [email protected]::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的讀寫速度