2019-04-15Day32 課后筆記

Rsync復制軟件應用和實踐

1、什么是rsync?

Rsync,Rsync英文全稱為Remote?? synchronization? rsync

開源的、高速的、可實現本地以及遠程,全量以及增量的數據復制(拷貝)工具

2、全量和增量的區別

全量復制:

[root@nfs01 ~]# cp -a /etc/ /opt/

[root@nfs01 ~]# \cp -a /etc/ /opt

[root@nfs01 ~]# touch /etc/oldboy.txt

[root@nfs01 ~]# \cp -a /etc/ /opt/

增量復制:

只復制oldboy.txt

3、rsync的作用?

工作中需要定時/實時數據備份。本地服務器目錄、不同機器、不同機房之間的數據備份。都可以用rsync來完成。

4、rsync的功能特性?

(1)、支持拷貝普通文件與特殊文件,如:鏈接文件、設備文件等

(2)、支持排除指定文件或目錄同步的功能,相當于打包命令tar的組排功能

(3)、可以做到保持源文件或目錄權限、時間、軟鏈接、屬主、組等所有屬性均不改變

(4)、可實現增量復制,即只復制發生變化的數據,因此數據傳輸效率很高

(5)、可使用rcp,rsh,ssh等方式來配合進行隧道加密文件(rsync本身不對數據加密)

(6)、可以通過socket(進程方式)傳輸文件和數據(服務端和客戶端)

(7)、支持匿名或認證(無需系統用戶)進程模式傳輸,安全的進行數據備份及鏡像

5、增量復制原理

使用quick check算法,只對增量的部分復制,根據大小屬性的變化進行復制。

2.x比對差異后復制;3.x一邊比對一邊復制

6、rsync三種工作模式介紹

(1)、本地(local)

Rsync就是一個命令

rsync ? ? ? ? [OPTION...] ? ? ? ? SRC... ?? [DEST]

rsync命令 ? 參數選項 ?? [源目錄或文件] 目的目錄或文件

A、把數據從一個地方復制到另一個地方(僅在一臺機器增量),相當于cp。

B、通過加參數實現刪除的功能,相當于rm命令

C、查看屬性信息功能,相當于LS

實踐:

a、拷貝實踐

[root@backup01~]# rsync /etc/hosts /opt

[root@backup01~]# ls /opt

hosts

[root@backup01~]# \cp /etc/hosts /opt

保持屬性

[root@backup01~]# rsync -zrtopg /etc/hosts /opt

[root@backup01~]# ls -l /etc/hosts

/opt/hosts

-rw-r--r--. 1 root root 332 4月? 12 11:24 /etc/hosts

-rw-r--r--?1 root root 332 4月?12 11:24 /opt/hosts

b、刪除實踐

[root@backup01/]# touch null.txt

[root@backup01/]# cat /opt/hosts

127.0.0.1???localhost localhost.localdomain localhost4 localhost4.localdomain4

::1?????????localhost localhost.localdomain localhost6 localhost6.localdomain6

172.16.1.5 lb01

172.16.1.6 lb02

172.16.1.7 web01

172.16.1.8 web02

172.16.1.9 web03

172.16.1.31 nfs01

172.16.1.41 backup

172.16.1.51 db01 db01.etiantian.org

172.16.1.61 m01

[root@backup01/]# rsync --delete /null.txt? /opt/hosts

<===讓前面的null.txt和后面的hosts一樣

rsync: --delete does not work without--recursive (-r) or --dirs (-d).

rsync error: syntax or usage error (code 1)at main.c(1567) [client=3.1.2]

[root@backup01/]# rsync -r --delete /null.txt /opt/hosts

[root@backup01/]# cat /opt/hosts

刪除目錄下的所有文件:

[root@backup01 ~]# mkdir /null

[root@backup01 ~]# rsync -r --delete /null/ /opt/? ? ? #讓后面opt和前面null目錄內容保持一致

[root@backup01 ~]# ls /opt/

c.查看屬性

[root@backup01 ~]# rsync /etc/hosts

-rw-r--r--? ? ? ? ? ? 332 2019/04/12 11:24:41 hosts

(2)、遠程shell模式

借助類似ssh隧道傳輸數據,適合不同的機器之間復制。

Pull,拉:從遠端拉取到本地。

Push,推:從本地推到遠端。

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

rsync命令 參數選項 ? ?? 本地路徑 [認證用戶]@[主機地址]:[目標路徑]

Push實踐:

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

The authenticity of host '172.16.1.41

(172.16.1.41)' can't be established.

ECDSA key fingerprint is

SHA256:3T7m4j67Ht0atDzvJH+kVWMV0nklv8OeKgpkID0fY6Q.

ECDSA key fingerprint is

MD5:9a:72:5b:30:02:22:a1:65:b7:03:70:a3:7a:27:e8:e0.

Are you sure you want to continue

connecting (yes/no)? yes

Warning: Permanently added '172.16.1.41'

(ECDSA) to the list of known hosts.

root@172.16.1.41's password:

sending incremental file list

hosts


sent 218 bytes? received 35 bytes? 20.24 bytes/sec

total size is 332? speedup is 1.31

檢查:

[root@backup01/]# ll /opt

總用量 4

-rw-r--r-- 1 root root 332 4月? 12 11:24 hosts

rsync -avz /etc/hosts -e "ssh -p 22" root@172.16.1.41:/opt/

上述命令是等價的。-e 指定通道? ssh ssh服務連接客戶端? -p 22指定22端口。

推拉:

A、參照物,執行命令的機器

B、root@172.16.1.41?? 使用的用戶和主機,就用主機和用戶的密碼

強調一個重點:適合rsync

Null和null/? 區別:null是目錄和目錄下的內容

null/ 只是目錄下的內容,不含本身。

(3)、rsync守護進程模式

首先要搭建rsync服務端(要有守護進程),然后才能在客戶端實現推拉數據

企業運維的重要模式:

Rsync服務模式:*****開啟后臺進程,接受別人訪問

7、rsync命令參數

企業常用參數組合:-avz或者-vzrtopg

8、rsync守護進程模式應用實踐

第一步:以下操作都是在backup服務器

(1)、安裝

[root@backup01/]# rsync --version

rsync?version 3.1.2? protocol version 31

(2)、配置配置文件/etc/rsyncd.conf

備份

[root@backup01/]# cp /etc/rsyncd.conf

{,.ori}

[root@backup01/]# cat

>/etc/rsyncd.conf<<EOF

> #rsync_config_______________start

> #created by oldboy

> #site: http://www.oldboyedu.com

> uid = rsync

> gid = rsync

> use chroot = no

> max connections = 200

> timeout = 600

> 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 = welcome to oldboyedu backup!

> path = /backup/

> EOF

[root@backup01/]# cat /etc/rsyncd.conf -n

????1??? #rsync_config_______________start

????2??? #created by oldboy

????3??? #site: http://www.oldboyedu.com

????4??? uid = rsync???????????????????? < === 管理備份目錄的用戶

????5??? gid = rsync??????????????????? ?< ===管理備份目錄的用戶組

????6??? use chroot = no??????????????? ?< ===安全功能,數據是否鎖定到備份目錄

????7??? max connections = 200?????????? <

=== 并發連接,同時多少客戶端訪問

????8??? timeout = 600??????????????????< === 超時實踐

????9??? pid file = /var/run/rsyncd.pid?????? <

=== 進程號所在文件

10??? lock file = /var/run/rsync.lock?????? <

=== 鎖文件?? ????

11??? log file = /var/log/rsyncd.log?????? < === 日志文件,查看報錯等

???12??? ignore errors???????????????????? < === 忽略錯誤

???13??? read only = false????????????????? < === 可寫

???14??? list = false??????????????????????? < === 不允許列表

???15??? hosts allow = 172.16.1.0/24???????? <

=== 授權那些主機可以訪問

???16??? hosts deny = 0.0.0.0/32??????????? ?< ===拒絕哪些主機不允許訪問

???17??? auth users = rsync_backup????????? <

=== 遠程虛擬連接用戶

18??? secrets file = /etc/rsync.password???

< === 存放密碼的文件。格式:用戶名:密碼?權限:必須600

???19??? [backup]????????????????????????? < ===【模塊】遠程訪問時使用模塊名訪問

???20??? comment = welcome tooldboyedu backup!??????? ?<===說明注釋

21??? path = /backup/??? <

===服務器端用于備份的目錄。用戶和組:rsync.rsync

要了解知識的源頭:

Man rsync?查命令的參數

Man? rsyncd.conf???查配置參數

(3)、啟動和檢查

Rsync -daemon(c6及以前)

systemctl enable

rsyncd

systemctl status

rsyncd


[root@backup ~]#ps -ef|grep sync|grep -v grep? #檢查進程

root???? 7521???1? 0 11:39 ?????00:00:00 /usr/bin/rsync --daemon--no-detach


[root@backup ~]#

netstat -lntup|grep 873 #檢查端口

tcp??? 0??0? 0.0.0.0:873??????? 0.0.0.0:*?????????????? LISTEN????? 7521/rsync?????????

tcp6?? 0??0? :::873???????????? :::*??????????????????? LISTEN????? 7521/rsync


[root@backup ~]#

lsof -i :873 #檢查端口

COMMAND? PID USER??FD?? TYPE DEVICE SIZE/OFF NODE NAME

rsync?? 7521 root???3u? IPv4? 41439?????0t0? TCP *:rsync (LISTEN)

rsync?? 7521 root???5u? IPv6? 41440?????0t0? TCP *:rsync (LISTEN)

(4)、配置密碼文件

[root@backup01~]# echo

"rsync_backup:oldboy" > /etc/rsync.password

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

[root@backup01~]# cat /etc/rsync.password

rsync_backup:oldboy

[root@backup01~]# ls -l /etc/rsync.password

-rw------- 1 root root 20 4月? 15 11:52 /etc/rsync.password


[root@backup01~]# useradd rsync

[root@backup01~]# id rsync

uid=1001(rsync) gid=1001(rsync) 組=1001(rsync)

[root@backup01~]# mkdir -p /backup

[root@backup01~]# chown -R rsync.rsync

/backup/

[root@backup01~]# ls -ld /backup/

drwxr-xr-x 2 rsync rsync 6 4月? 15 12:13 /backup/

服務端配置完成。。。

第二步:以下操作都是在客戶端服務器

認證密碼文件

方法一:

[root@nfs01~]# echo "oldboy" >

/etc/rsync.password

[root@nfs01~]# chmod 600

/etc/rsync.password

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

oldboy

[root@nfs01~]# ls -l /etc/rsync.password

-rw------- 1 root root 7 4月? 15 11:55 /etc/rsync.password

方法二:

[root@nfs01~]# echo? ' export RSYNC_PASSWORD=oldboy'>>/etc/bashrc

[root@nfs01~]# echo $UID

0

[root@nfs01~]# tail -1 /etc/bashrc

?export RSYNC_PASSWORD=oldboy

[root@nfs01~]# . /etc/bashrc

[root@nfs01~]# echo $RSYNC_PASSWORD

Oldboy

rsync客戶端nfs01配置完成

第三步:守護進程模式,客戶端rsync的命令語法

配置服務器端守護進程,實現數據傳輸:

1、服務器端守護進程2、客戶端執行命令

pull,拉:從遠端拉取到本地。

語法1(常用):

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

rsync命令 參數選項 [虛擬用戶]@[主機地址]::[模塊名] ? ? 本地路徑

語法2:

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

rsync命令 參數選項 rsync://[虛擬用戶]@[主機地址]/[模塊名] 本地路徑

push,推:從本地推到遠端。

語法1(常用):? ? ? ? ? ? ? ?

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

rsync命令 參數選項 ? 本地路徑? ? ? [虛擬用戶]@[主機地址]::[模塊名] ? ?

語法2:? ? ? ? ? ? ? ? ? ?

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

rsync命令 參數選項 ? 本地路徑 rsync://[虛擬用戶]@[主機地址]/[模塊名]

第四步:測試成果

[root@nfs01~]# rsync -avz /etc/hosts

rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

sending incremental file list

hosts


sent 222 bytes? received 43 bytes? 176.67 bytes/sec

total size is 332? speedup is 1.25

服務端檢查:

[root@backup01~]# ls /opt

hosts



?

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • rsync復制軟件應用與實踐 1、什么是rsync? 全稱Remote synchr...
    故此曦閱讀 476評論 0 1
  • 1,rsync:英文全稱為Remote synchronization,縮寫rsync。是開源、高速的、可實現本地...
    十一月_w閱讀 659評論 0 0
  • rsync復制軟件應用與實踐 what 什么是? why 為什么要用? 1、什么是rsync? rsync,全稱為...
    Zh_bd92閱讀 257評論 0 0
  • 七月是瑪雅歷的新年,八月剛剛是新年過后的黃種子日,適合種下種子。 大家一般都會在新年就開始許下很多的愿望,原因是讓...
    高藝菲Sophia閱讀 304評論 0 0
  • 一個內心的獨白。 說白了就是自己的選擇到最后自己受。 那時候的愛情觀跟大多數人一樣,喜歡就想在一起,在...
    悄悄草閱讀 108評論 0 0