上篇python
Rsyncweb
rysnc查看版本 --version面試
全量 與增量在效率上有區別算法
cp mv scp --全量複製shell
rsync --增量複製vim
rsync利用的是quick check算法安全
rsync能夠替換的命令 scp cp ls rmbash
cp與rsync rsyncs 是增量部分 利用quick check算法服務器
cp文件架構
[root@backup ~]# cp /etc/hosts /oldboy_dir/
[root@backup ~]# ls /oldboy_dir/
hosts
[root@backup ~]# rm -fr /oldboy_dir/hosts
[root@backup ~]# rsync /etc/hosts /oldboy_dir/
[root@backup ~]# ll /oldboy_dir/
total 4
-rw-r--r-- 1 root root 379 May 3 10:12 hosts
cp目錄
注意帶/和不帶/的區別
注意此處帶/和不帶/的區別 帶/ 是拷貝了oldboy_dir下的文件 目錄下的內容
不帶/ 是拷貝oldboy_dir這個文件夾 目錄及其數據
[root@backup ~]# cp -a /oldboy_dir/ /tmp/
[root@backup ~]# ls /tmp/
etc etc.tar.gz oldboy_dir yum.log
[root@backup ~]# rm -fr /tmp/oldboy_dir/
[root@backup ~]# ls /tmp/
etc etc.tar.gz yum.log
[root@backup ~]# rsync -a /oldboy_dir/ /tmp/
[root@backup ~]# ls /tmp/
10.txt 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt etc etc.tar.gz yum.log
[root@backup ~]# rsync -a /oldboy_dir /tmp/
[root@backup ~]# ls /tmp/
10.txt 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt etc etc.tar.gz oldboy_dir yum.log
ls 與rsync
[root@backup ~]# ls /oldboy/
ext jeacen oldboy test wodi.gz xiaodong xiaofan xingfujie yingsui.gz
[root@backup ~]# rsync /oldboy/
drwxr-xr-x 4096 2018/03/24 11:53:23 .
-rw-r--r-- 0 2018/03/24 11:53:23 jeacen
-rw-r--r-- 0 2018/03/24 11:53:23 oldboy
-rw-r--r-- 0 2018/03/24 11:53:23 wodi.gz
-rw-r--r-- 0 2018/03/24 11:53:23 yingsui.gz
drwxr-xr-x 4096 2018/03/24 11:53:23 ext
drwxr-xr-x 4096 2018/03/24 11:53:23 test
drwxr-xr-x 4096 2018/03/24 11:53:23 xiaodong
drwxr-xr-x 4096 2018/03/24 11:53:23 xiaofan
drwxr-xr-x 4096 2018/03/24 11:53:23 xingfujie
rm與rsync
rm
[root@backup oldboy_dir]# touch {1..10}.txt
[root@backup oldboy_dir]# ls
10.txt 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt
[root@backup oldboy_dir]# cd
[root@backup ~]# rm -fr /oldboy_dir/*
[root@backup ~]# ls /oldboy_dir/
[root@backup ~]# touch /oldboy_dir/{1..10}.txt
[root@backup ~]# ls /oldboy_dir/
10.txt 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt
rysnc
[root@backup ~]# mkdir /null
[root@backup ~]# rsync --delete -r /null /oldboy_dir/
[root@backup ~]# ls /oldboy_dir/
10.txt 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt null
[root@backup ~]# rsync --delete -r /null/ /oldboy_dir/
[root@backup ~]# ll /oldboy_dir/
total 0
注意此處的--delete屬性 能夠快速清空,效率高,刪除大文件
scp與rsync
拷貝文件:
[root@backup ~]# scp -rp /etc/hosts 172.16.1.31:/tmp/
The authenticity of host '172.16.1.31 (172.16.1.31)' can't be established.
RSA key fingerprint is c8:17:90:8d:90:a4:f7:5b:10:19:36:7a:6c:5d:b8:7b.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.16.1.31' (RSA) to the list of known hosts.
root@172.16.1.31's password:
hosts 100% 379 0.4KB/s 00:00
[root@backup ~]# rsync -rp /etc/hosts 172.16.1.31:/tmp/
root@172.16.1.31's password:
拷貝目錄:
scp拷貝172.16.1.31下的history目錄
[root@backup ~]# scp -rp 172.16.1.31:/home/history /backup/
注意 此處history後加不加/ 效果是同樣的
rsync拷貝172.16.1.31下的history目錄
注意此處帶/和不帶/的區別 帶/ 是拷貝了history下的文件 目錄下的內容
不帶/ 是拷貝history這個文件夾 目錄及其數據
[root@backup ~]# rsync -rp 172.16.1.31:/home/history/ /backup/
root@172.16.1.31's password:
[root@backup ~]# cd /backup/
[root@backup backup]# ls
0329.txt dec.py delphi.py func.py home luna.py nod.py.bak python seq.txt test.txt
b.txt dectorator.py func1.py history0330.tar.gz hosts nod.py passwd.txt python.py test.py
[root@backup backup]# rm -fr *
[root@backup backup]# ls
[root@backup backup]# cd
[root@backup ~]# rsync -rp 172.16.1.31:/home/history /backup/
root@172.16.1.31's password:
[root@backup ~]# cd /backup/
[root@backup backup]# ls
history
總結: rsync命令不只能夠替換cp scp rm ls 命令 並且比他們的四個命令更爲優秀
利用rsync刪除目錄下的數據要比rm刪除目錄中的數據效率高
===============================================
03. rsync服務特色說明
1)支持拷貝普通文件與特殊文件如連接文件,設備等。
2)能夠有排除指定文件或目錄同步的功能,至關於打包命令tar的排除功能。
#tar zcvf backup_1.tar.gz /opt/data -exclude=oldboy
說明:在打包/opt/data時就排除了oldboy命名的目錄和文件。
3)能夠作到保持原文件或目錄的權限、時間、軟硬連接、屬主、組等全部屬性均不改變-p。
4)可實現增量同步,既只同步發生變化的數據,所以數據傳輸效率很高(tar -N)。
# 將備份/home 目錄自 2008-01-29 以來修改過的文件
# tar -N 2008-01-29 -zcvf /backups/inc-backup_$(date +%F).tar.gz /home
# 將備份 /home 目錄昨天以來修改過的文件
# tar -N $(date -d yesterday "+%F") -zcvf /backups/inc-backup_$(date +%F).tar.gz /home
# 添加文件到已經打包的文件
# tar -rf all.tar *.gif
說明:這條命令是將全部.gif的文件增長到all.tar的包裏面去。-r是表示增長文件的意思。
5)可使用rcp,rsh,ssh等方式來配合進行隧道加密傳輸文件(rsync自己不對數據加密)
6)能夠經過socket(進程方式)傳輸文件和數據(服務端和客戶端)*****。重點掌握 監聽模式
7)支持匿名的或認證(無需系統用戶)的進程模式傳輸,可實現方便安全的進行數據備份及鏡像。
Rsync的企業工做場景說明
1 利用定時任務+rsync方式實現數據同步
對於網站內部技術人員建立的數據材料,能夠採用定時任務的方式
2 利用實時任務+rsync方式實現數據同步
對於網站外部訪問用戶建立的數據,能夠採起實時同步的方式
Rsync的工做方式介紹與實踐
01 本地方式
02 經過遠程shell方式
03 經過rsync daemon方式
rsync三種工做方式(使用方法)
# 1 本地備份數據方式(相似cp功能)
Local: rsync [OPTION...] SRC... [DEST]
rsync ---備份數據命令
[OPTION...] ---命令參數信息
src ---要備份的數據信息,源信息
[DEST] ---將備份的數據保存到哪,目標信息(目錄)
舉例:rsync /etc/hosts /opt/
# 2 遠程備份數據方式(相似scp功能)
先理解推和拉的關係 懟就是推 恏就是拉
Access via remote shell:
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
rsync ---備份數據命令
[OPTION...] ---命令參數信息
[USER@] ---以什麼身份遠程登錄到主機上,以當前用戶身份進行登錄
要確保遠程主機上有相應用戶信息
HOST ---遠程主機IP地址或者主機名稱信息
:SRC ---要備份的數據信息,源信息
[DEST] ---將備份的數據保存到本地相應目錄中,目標信息(目錄)
推: rsync -rp /etc/hosts root@172.16.1.31:/opt 此處root表示進來的身份
@前定義傳輸數據的身份 傳輸數據的身份信息
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
rsync ---備份數據命令
[OPTION...] ---命令參數信息
:SRC ---要備份的數據信息,源信息(本地數據信息)
[USER@] ---以什麼身份遠程登錄到主機上,以當前用戶身份進行登錄
要確保遠程主機上有相應用戶信息
HOST ---遠程主機IP地址或者主機名稱信息
:SRC ---要備份的數據信息,源信息
[DEST] ---將備份的數據保存到遠程主機相應目錄中,目標信息(目錄)
拉: rsync -rp root@172.16.1.31:/opt/hosts /etc/hosts 拉到本地而且更名
對於目錄的操做:
rsync -rp /etc/sysconfig 172.16.1.31:/opt
若是sysconfig後帶/ 表示是將目錄下的內容推送過去
若是不帶/ 是將目錄自己和目錄下的內容推送過去 注意2者的區別
#3 守護進程方式備份數據
守護進程:能夠在後臺看到進程 而且建立了socket
Access via rsync daemon:
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync ---備份數據命令
[OPTION...] ---命令參數信息
[USER@] ---認證用戶信息
HOST ---遠程主機IP地址或者主機名稱信息
::SRC ---要備份的模塊信息
[DEST] ---將備份的數據保存到本地相應目錄中,目標信息(目錄
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync ---備份數據命令
[OPTION...] ---命令參數信息
[USER@] ---認證用戶信息
HOST ---遠程主機IP地址或者主機名稱信息
SRC ---要備份的數據目錄或者文件信息
[DEST] ---備份的模塊信息
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
守護進程部署方式分爲2部分
1 服務端的部署 ---rsync
2 客戶端的部署 ---web服務 採用推的方式
rsync服務器做爲服務端
其餘服務器做爲客戶端
服務端:
1 第一個里程碑:查看有沒有這個軟件
rpm -qa rsync
2 第二個里程碑:安裝rsync軟件
yum install -y rsync
3 第三個里程碑:編寫配置文件(編寫好配置文件,後續操做步驟能夠按照配置文件進行):
默認沒有 須要手工建立
配置文件詳解:
#第三個里程碑
配置文件:
#rsync_config #created by Nod at 2018 ##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 exclude=a b d/3.txt [backup] comment = "backup dir by oldboy" path = /backup [backupdev] comment = "backup dir by oldboy" path = /backupdev [backupdba] comment = "backup dir by oldboy" path = /backupdba [backupsa] comment = "backup dir by oldboy" path = /backupsa
[root@backup ~]# vim /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 oldboy"
path = /backup
~
~
~
"/etc/rsyncd.conf" [New] 22L, 445C written
# 4 第四個里程碑 建立備份目錄的管理用戶 此處爲虛擬用戶
[root@backup ~]# useradd -s /sbin/nologin -M rsync
[root@backup ~]# id rsync
uid=502(rsync) gid=502(rsync) groups=502(rsync)
# 5 第五個里程碑:建立安全認證文件
[root@backup ~]# echo "rsync_backup:oldboy123">>/etc/rsync.password
[root@backup ~]# cat /etc/rsync.password
rsync_backup:oldboy123
#5.1 修改權限
[root@backup ~]# chmod 600 /etc/rsync.password
#6 第六個里程碑:建立備份目錄
至此服務端配置操做完成
[root@backup ~]# mkdir -p /backup
[root@backup ~]# chown -R rsync.rsync /backup/
[root@backup ~]# ll /backup/
total 4
-rw-r--r-- 1 rsync rsync 379 May 2 16:51 hosts
#7 第七個里程碑:啓動rsync服務
[root@backup ~]# rsync --daemon
[root@backup ~]# netstat -lntup | grep rsync
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 2932/rsync
tcp 0 0 :::873 :::* LISTEN 2932/rsync
[root@backup ~]# netstat -lutup | grep rsync
tcp 0 0 *:rsync *:* LISTEN 3593/rsync
tcp 0 0 *:rsync *:* LISTEN 3593/rsync
[root@backup ~]# ps -ef | grep rsync
root 3593 1 0 03:57 ? 00:00:00 rsync --daemon
客戶端:
#第一個里程碑:查看有無rsync這個軟件
#第二個里程碑:yum -y install rsync
#第三個里程碑:客戶端建立安全認證文件
[root@nfs01 ~]# echo "oldboy123">/etc/rsync.password
[root@nfs01 ~]# chmod 600 /etc/rsync.password
至此客戶端配置完畢
#進行數據推送的測試
拉:nfs: rsync -avz rsync_backup@172.16.1.41::backup/oldboy.txt /tmp/
推:nfs rsync -avz /etc rsync_backup@172.16.1.41::backup
1 須要進行交互的方式 就是須要輸入密碼
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
Password:
sending incremental file list
hosts
sent 202 bytes received 27 bytes 35.23 bytes/sec
total size is 379 speedup is 1.66
2 不須要輸入密碼 免交互
[root@nfs01 ~]# echo "oldboy123">/etc/rsync.password
[root@nfs01 ~]# chmod 600 /etc/rsync.password
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
hosts
sent 202 bytes received 27 bytes 458.00 bytes/sec
total size is 379 speedup is 1.66
===========================================================================
Rsync的參數說明
小結:
服務端:
第一個歷程:檢查軟件是否安裝
rpm -qa rsync
yum install -y rsync
第二個歷程:編寫配置文件
vim /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 oldboy"
path = /backup
第三個歷程:建立備份目錄管理用戶(虛擬用戶)
useradd -s /sbin/nologin -M rsync
id rsync
第四個歷程:建立服務密碼文件,並修改權限爲600
echo "rsync_backup:oldboy123" >>/etc/rsync.password
chmod 600 /etc/rsync.password
第五個歷程:建立備份目錄
mkdir /backup
第六個歷程:啓動rsync守護進程服務
rsync --daemon
netstat -lntup|grep rsync
rsync的三種工做方式:使用方法
# 遠程備份數據方式(相似scp功能)
Access via remote shell:
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
rsync ---備份數據命令
[OPTION...] ---命令參數信息
[USER@] ---以什麼身份遠程登錄到主機上,以當前用戶身份進行登錄
要確保遠程主機上有相應用戶信息
HOST ---遠程主機IP地址或者主機名稱信息
:SRC ---要備份的數據信息,源信息
[DEST] ---將備份的數據保存到本地相應目錄中,目標信息(目錄)
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
rsync ---備份數據命令
[OPTION...] ---命令參數信息
:SRC ---要備份的數據信息,源信息(本地數據信息)
[USER@] ---以什麼身份遠程登錄到主機上,以當前用戶身份進行登錄
要確保遠程主機上有相應用戶信息
HOST ---遠程主機IP地址或者主機名稱信息
:SRC ---要備份的數據信息,源信息
[DEST] ---將備份的數據保存到遠程主機相應目錄中,目標信息(目錄)
===================================================add begin 0504==============================================
殺進程方式:
殺進程方式(三種)
第一個殺手:kill
kill 進程號pid
[root@backup etc]# kill 2347
[root@backup etc]# kill 2347
-bash: kill: (2347) - No such process
說明:kill殺進程會有提示信息。
第二個殺手:killall(優選)
killall 進程名
[root@backup etc]# killall rsync
[root@backup etc]# killall rsync
rsync: no process killed
說明:killall殺進程會有提示信息。
第三個殺手:pkill(模糊殺手)殺人範圍太廣(慎用)
pkill 進程名
說明:pkill殺進程不會有提示信息。
02. rsync命令參數說明
rsync -avz -e "ssh -p22" /etc/hosts 172.16.1.41:/tmp/ --- -e實現數據加密傳輸
無差別同步:(同步數據雙方,數據信息高度一致)
我有一個蘋果手機,也給你買一個,你也有
個人蘋果手機壞了,你的手機也要砸了
03. rsync守護進程模式企業應用實踐
1. 守護進程模式架構部署方式
1)將服務端部署在備份服務器上 客戶端部署在架構中其餘服務器上 將數據推送到服務端(優選)
2)將服務端部署在架構中其餘服務器上,客戶端部署在備份服務器上 將數據從服務端拉取
生成多個配置文件的模塊
19,21copy21
19,21move11
2. rsync服務端多模塊配置實踐
第一個歷程:編寫rsync服務端配置文件 添加多模塊
[backup]
comment = "backup dir by oldboy"
path = /backup
[backupdba]
comment = "backup dir by oldboy"
path = /backupdba
[backupdev]
comment = "backup dir by oldboy"
path = /backupdev
第二個歷程:rsync服務端建立備份目錄
服務端:
命令:
mkdir /{backupdev,backupdba,backupsa}
chown -R rsync.rsync /{backupdev,backupdba,backupsa}
ll -d /{backupdev,backupdba,backupsa}
[root@backup ~]# mkdir /backupdba
[root@backup ~]# mkdir /backupsa
[root@backup ~]# mkdir /backupdev
[root@backup ~]# chown -R rsync.rsync /backupdba
[root@backup ~]# chown -R rsync.rsync /backupsa
[root@backup ~]# chown -R rsync.rsync /backupdev
第三個歷程:重啓rsync服務
分步式:
killall rsync 殺掉進程
rsync --daemon 重啓服務
一鍵式:
killall rsync;sleep 3;rsync --daemon --- 服務重啓腳本中的命令
[root@backup ~]# killall rsync;sleep 2; rsync --daemon
第四個歷程:進行測試
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backupdba --password-file=/etc/rsync.password
sending incremental file list
hosts
sent 202 bytes received 27 bytes 458.00 bytes/sec
total size is 379 speedup is 1.66
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backupsa --password-file=/etc/rsync.password
sending incremental file list
hosts
sent 202 bytes received 27 bytes 458.00 bytes/sec
total size is 379 speedup is 1.66
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backupdev --password-file=/etc/rsync.password
sending incremental file list
hosts
sent 202 bytes received 27 bytes 458.00 bytes/sec
total size is 379 speedup is 1.66
注意:此處是copy到一個目錄下的子目錄;注意要逐層建立,若是backupdev/1/2 必需要創建在backupdev/1/有的前提下
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backupdev/1/ --password-file=/etc/rsync.password
sending incremental file list
created directory 1
hosts
sent 202 bytes received 27 bytes 152.67 bytes/sec
total size is 379 speedup is 1.66
[root@backup ~]# ls /backup*
/backup:
history
/backupdba:
hosts
/backupdev:
1 hosts
/backupsa:
hosts
3. rsync服務端自動建立目錄信息
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backupdev/1/ --password-file=/etc/rsync.password
sending incremental file list
created directory 1
hosts
sent 200 bytes received 27 bytes 454.00 bytes/sec
total size is 379 speedup is 1.67
強調:不能建立多級目錄;
注意:此處是copy到一個目錄下的子目錄;注意要逐層建立,若是backupdev/1/2 必需要創建在backupdev/1/有的前提下
4. rsync守護進程模式實現數據排除功能
客戶端排除方式 --exclude
環境建立在nfs上 :
建立好測試環境:
[root@nfs01 ~]# mkdir /oldboy_dir/{a..d}
[root@nfs01 ~]# touch /oldboy_dir/a/{1..3}.txt
[root@nfs01 ~]# touch /oldboy_dir/b/{1..3}.txt
[root@nfs01 ~]# touch /oldboy_dir/c/{1..3}.txt
[root@nfs01 ~]# touch /oldboy_dir/d/{1..3}.txt
[root@nfs01 ~]# tree /oldboy_dir/
/oldboy_dir/
├── a
│ ├── 1.txt
│ ├── 2.txt
│ └── 3.txt
├── b
│ ├── 1.txt
│ ├── 2.txt
│ └── 3.txt
├── c
│ ├── 1.txt
│ ├── 2.txt
│ └── 3.txt
└── d
├── 1.txt
├── 2.txt
└── 3.txt
# 排除a b目錄不須要同步備份,d目錄中3.txt文件不須要同步
--exclude=a |
表示的是排除a文件夾 |
--exclude=b |
表示的是排除b文件夾 |
--exclude=d/3.txt |
表示的是排除d文件夾下的3.txt文件 |
客戶端
[root@nfs01 ~]# rsync -avz /oldboy_dir --exclude=a --exclude=b --exclude=d/3.txt rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
oldboy_dir/
oldboy_dir/c/
oldboy_dir/c/1.txt
oldboy_dir/c/2.txt
oldboy_dir/c/3.txt
oldboy_dir/d/
oldboy_dir/d/1.txt
oldboy_dir/d/2.txt
sent 330 bytes received 115 bytes 890.00 bytes/sec
total size is 0 speedup is 0.00
此處是簡潔的寫法。將a &b文件夾一塊兒包含
rsync -avz /oldboy_dir --exclude={a,b} --exclude=d/3.txt rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
--exclude-from
根據指定的文件內的內容進行過濾
生成1個文件
cat exclude.txt
a 表示a文件夾不上傳
b 表示b文件夾不上傳
d/3.txt
exclude.txt
[root@nfs01 oldboy_dir]# rsync -avz /oldboy_dir --exclude-from=/oldboy_dir/exclude.txt rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
oldboy_dir/
oldboy_dir/c/
oldboy_dir/c/1.txt
oldboy_dir/c/2.txt
oldboy_dir/c/3.txt
oldboy_dir/d/
oldboy_dir/d/1.txt
oldboy_dir/d/2.txt
sent 330 bytes received 115 bytes 890.00 bytes/sec
total size is 0 speedup is 0.00
總結說明:
利用exclude指定排除信息時,須要寫上排除信息的相對路徑
利用exclude-from指定排除文件時,能夠寫絕對路由也能夠寫相對路徑
服務端排除方式
exclude = a b d/3.txt --- 編寫配置文件排除信息,並進行重啓
[root@nfs01 ~]# rsync -avz /oldboy_dir/ --exclude={a,b} --exclude=d/3.txt rsync_backup@172.16.1.41::backupdba --password-file=/etc/rsync.password
sending incremental file list
./
c/
c/1.txt
c/2.txt
c/3.txt
d/
d/1.txt
d/2.txt
sent 308 bytes received 114 bytes 844.00 bytes/sec
total size is 0 speedup is 0.00
[root@nfs01 ~]# cd /oldboy_dir/
[root@nfs01 oldboy_dir]# vim exclude.txt
a
b
d/3.txt
~
"exclude.txt" [New] 3L, 12C written
[root@nfs01 oldboy_dir]# cd
[root@nfs01 ~]# rsync -avz /oldboy_dir/ --exclude-from=/oldboy_dir/exclude.txt rsync_backup@172.16.1.41::backupsa --password-file=/etc/rsync.password
sending incremental file list
./
exclude.txt
c/
c/1.txt
c/2.txt
c/3.txt
d/
d/1.txt
d/2.txt
sent 384 bytes received 133 bytes 1034.00 bytes/sec
total size is 12 speedup is 0.02
[root@nfs01 ~]# rsync -avz /oldboy_dir/ rsync_backup@172.16.1.41::backupsa --password-file=/etc/rsync.password
sending incremental file list
skipping daemon-excluded directory "a"
*** Skipping any contents from this failed directory ***
skipping daemon-excluded directory "b"
*** Skipping any contents from this failed directory ***
skipping daemon-excluded file "d/3.txt"
sent 258 bytes received 12 bytes 540.00 bytes/sec
total size is 12 speedup is 0.04
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1039) [sender=3.0.6]
[root@nfs01 ~]#
守護進程來建立備份目錄
backup: mkdir {sa,dev,dba} -p
rsync -avz /oldboy/ rsync_backup@172,16.1.41::backup/dev --password-file=/etc/rsync.password
存在的問題:backup下能夠有/dev 可是不能建立多級目錄 沒法實現
會刪除根的命令 rsync -avz --delete rsync_backup@172.16.1.41::backup / --password-file=/etc/rsync.password
建議黑名單在配置文件中只配置一種名單策略便可;
局部配置優於全局配置
5. rsync守護進程實現無差別同步
我有的,你也有
我沒有的,你也不能有
rsync -avz --delete /oldboy_dir rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
總結:實現數據統一一致
使用無差別同步時要當心謹慎
企業面試題:
有1個目錄,存儲空間佔用了1個T,請將這個目錄下面的內容快速清空
rysnc -avz --delete /null/ 172.16.1.41:/data_1T/
有1個目錄,存儲空間佔用了1個T,請將這個文件裏面的內容快速清空
rysnc -avz --delete /null/null.txt 172.16.1.41:/data_1T/file_1T.txt
6. rsync守護進程實現同步數據訪問控制
在配置文件當中實現 rsync.conf
hosts allow = 172.16.1.0/24 --- 白名單
hosts deny = 0.0.0.0/32 --- 黑名單
說明白名單和黑名單同時存在時,權限爲大者優先使用
誰放行的大的 誰優先
白名單和黑名單建議選擇其一使用 不要2個都選
參見圖示理解訪問控制策略原理
建議:在配置文件中只配置一種名單策略便可
# backupdev---172.16.1.0/24 backupdba---10.0.0.0/24
# 全局配置 局部配置
# 全局配置:全部配置信息影響全部模塊
# 局部配置:隻影響指定模塊,其餘模塊不會受到影響
局部配置信息優於全局配置,當全局配置和局部配置相同時,遵循局部配置
[backupdba]
comment = "backup dir by oldboy"
path = /backupdba
hosts allow = 10.0.0.0/24
[backupdev]
comment = "backup dir by oldboy"
path = /backupdev
hosts allow = 172.16.1.0/24
7. rsync守護進程模式列表功能
在配置文件中
list = true --- 表示將服務端模塊信息列表顯示在客戶端
建議:改成false更加安全
8. rsync服務擴展啓動方式
xinetd服務:超級守護進程服務,能夠管理多個守護進程(rsync telnet tftp)
第一個歷程:下載超級守護進程軟件
yum install -y xinetd
第二個歷程:編寫xinetd相關配置文件
cd /etc/xinetd.d/
vim rsync
disable = no --- 願意讓xinetd服務管理
第三個歷程:重啓xined服務(但須要前蹄把rsync服務中止掉)
/etc/init.d/xinetd start|stop|restart
說明:只做爲了解,不建議使用xinetd服務啓動rsync
rsync 是備份服務
下篇