2019-09-05Rsync

1.什么是備份?
就是給源文件 增加 一個 副本.
U盤
D --> E

2.為什么要做備份?
1.數(shù)據(jù)重要?
2.防止誤操作
3.能夠快速恢復

3.能不能不做備份?
可以, 不重要的數(shù)據(jù)可以不用考慮?

4.備份使用什么方式?
全量備份,每次都是完全拷貝,效率低下
增量備份,每次僅拷貝發(fā)生變化的文件,效率高

5.備份使用的工具有哪些?
本地備份: cp
遠程備份: scp rsync sz rz

6.rsync 遠程同步工具
實現(xiàn)主機與主機之間的同步, 實現(xiàn)增量的同步. linux\windows\mac
PS: 如果將rsync當一個服務來使用,則需要知道 rsync 是個 c/s架構

7.rsync 推和拉 兩種方式


推和拉結合使用

8.rsync傳輸模式
1.本地傳輸 ---> cp
2.遠程傳輸 ---> scp
3.守護進程 --->

#等價于cp命令
Local:  rsync [OPTION...] SRC... [DEST]
        命令   選項      源      目標

[root@backup ~]# rsync -avz anaconda-ks.cfg  /tmp/


遠程傳輸

Access via remote shell:
上傳 Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
命令 選項 源 系統(tǒng)用戶 主機IP 目標位置
1.我要將我本地的那個文件,推送至那臺服務器的那個目錄,使用的是什么用戶
[root@backup ~]# rsync -avz ./backup_file root@172.16.1.31:/opt/
root@172.16.1.31's password: #輸入31的root密碼

下載    Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
              命令    選項     系統(tǒng)用戶 主機IP  
        2.我要下載那個主機的那個目錄下的文件,使用的是什么系統(tǒng)用戶.  然后下載到我本地的那個位置 
        [root@backup ~]# rsync -avz root@172.16.1.31:/opt/backup_file   ./file.txt
        root@172.16.1.31's password:    #輸入31的root密碼


目錄:  /etc/  /etc    區(qū)別? 
#推送/etc目錄下的所有文件
[root@backup ~]# rsync -avz /etc/ root@172.16.1.31:/opt

#推送/etc目錄以及目錄下的所有文件
[root@backup ~]# rsync -avz /etc root@172.16.1.31:/opt

Rsync借助SSH協(xié)議同步數(shù)據(jù)存在的缺陷    (  使用對端主機的用戶名和密碼   系統(tǒng)  )
    1.使用系統(tǒng)用戶(不安全)
    2.使用普通用戶(會導致權限不足情況)
    
問題:
    1.rsync -avz /etc/ root@172.16.1.31:/opt          ---> 172.168.1.31
    2.路徑問題
    3.普通用戶權限


守護進程模式--->一直在后臺持續(xù)的運行

Access via rsync daemon:
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST

1.安裝
[root@backup ~]# yum install rsync -y


2.配置   ( 改變程序運行軌跡  )
[root@backup ~]# cat /etc/rsyncd.conf
uid = rsync
gid = rsync
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users = rsync_backup
secrets file = /etc/rsync.passwd
log file = /var/log/rsyncd.log
#####################################
[backup]
comment = welcome to oldboyedu backup!
path = /backup

3.根據(jù)配置創(chuàng)建一些初識環(huán)境:
    3.1創(chuàng)建rsync用戶    rsync程序需要rsync這個用戶來運行
    [root@backup ~]# groupadd rsync
    [root@backup ~]# useradd -M -s /sbin/nologin rsync -g rsync
    [root@backup ~]# id rsync
    uid=1000(rsync) gid=1000(rsync) groups=1000(rsync)

    3.2 虛擬用戶    /etc/rsync.passwd      username:password
    [root@backup ~]# echo "rsync_backup:123456" > /etc/rsync.passwd
    [root@backup ~]# chmod 600 /etc/rsync.passwd
    
    3.3 創(chuàng)建一個/backup目錄
    [root@backup ~]# mkdir /backup
    [root@backup ~]# chown -R rsync.rsync /backup/

4.啟動
    [root@backup ~]# systemctl start rsyncd
    [root@backup ~]# systemctl enable rsyncd

5.檢測
[root@backup ~]# netstat -lntp | grep 873
tcp        0      0 0.0.0.0:873       0.0.0.0:*        LISTEN    8616/rsync          

6.使用
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
[root@nfs ~]# rsync -avz ./anaconda-ks.cfg  rsync_backup@172.16.1.41::backup

Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
[root@nfs ~]# rsync -avz rsync_backup@172.16.1.41::backup /opt

7.客戶端每次都需要使用密碼?
    1.設定變量  RSYNC_PASSWORD  (后面寫腳本的時候)
    [root@nfs ~]# export RSYNC_PASSWORD=123456
    [root@nfs ~]# rsync -avz rsync_backup@172.16.1.41::backup /opt

    2.提前準備一個文件 (只有密碼的文件),  然后使用 --password-file 指定位置
    [root@nfs ~]# echo "123456" >  /etc/rsync.pass
    [root@nfs ~]# chmod 600 /etc/rsync.pass
    [root@nfs ~]# rsync -avz rsync_backup@172.16.1.41::backup /opt --password-file=/etc/rsync.pass


8.-avz 這些選項  怎么理解?
    -a           #歸檔模式傳輸, 等于-tropgDl
    -v           #詳細模式輸出, 打印速率, 文件數(shù)量等
    -z           #傳輸時進行壓縮以提高效率
    -r           #遞歸傳輸目錄及子目錄,即目錄下得所有目錄都同樣傳輸。
    -t           #保持文件時間信息
    -o           #保持文件屬主信息
    -p           #保持文件權限
    -g           #保持文件屬組信息
    -l           #保留軟連接
    -D           #保持設備文件信息
    -P           #顯示同步的過程及傳輸時的進度等信息
    -L           #保留軟連接指向的目標文件
    -e           #使用的信道協(xié)議,指定替代rsh的shell程序
    --exclude=PATTERN   #指定排除不需要傳輸?shù)奈募J?    --exclude-from=file #文件名所在的目錄文件
    --bwlimit=100       #限速傳輸
    --delete            #讓目標目錄和源目錄數(shù)據(jù)保持一致
    
9. --delete   這個參數(shù) (讓目標目錄和源目錄數(shù)據(jù)保持一致)  危險?
    #推:  源有什么,目標就有什么
[root@nfs ~]# rsync -avz /root/ rsync_backup@172.16.1.41::backup --delete
    #拉: 目標主機有什么, 本地就有什么
[root@nfs ~]# rsync -avz rsync_backup@172.16.1.41::backup ./ --delete

10.--bwlimit 限速, 這個參數(shù)?   1000兆    125MB/s     
    虛擬機最高的峰值  25MB/s    5MB/s    ---> 取決于實際的情況
    單位=KB
[root@nfs ~]# rsync  -avzP --bwlimit=5120  ubuntu-18.04.1-desktop-amd64.iso  rsync_backup@172.16.1.41::backup
sending incremental file list
ubuntu-18.04.1-desktop-amd64.iso   159,186,944   8%    5.12MB/s    0:05:41

11.--exclude  這個參數(shù)  --exclude-from ?

[root@nfs ~]# rsync  -avzP --exclude-from=pc.txt  rsync://192.168.0.128/yum  ./
[root@nfs ~]# cat pc.txt 
centos/
code/
docker-ce/
epel/
git/
java/
jenkins/
kubernetes/
mongodb/
mysql/
node/
non-supported/
php/
python/
redis/
sonarqube/
windowstools/
zabbix/
CentOS-7-x86_64-DVD-1810.iso
CentOS-Base.repo
docker-ce.repo
epel.repo
nginx.repo
php.repo
rsync_exclude.txt
zabbix.repo
各種源使用說明.txt

12.使用rsync同步學校內網yum源?
mysql/
nginx/
php/
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容