學習服務前,我們先想一個問題:什麼是備份,我們爲什麼要備份,能不能不做備份,備份有哪幾種,備份的方式有哪幾種
1、什麼是備份
簡單來說備份就是一個文件的的副本,鏡像
2、我們爲什麼要備份
簡單來說,就是因爲數據過於重要, 不能丟失,損壞,其要確保數據的安全,同時保證數據丟失損壞的情況下能快速恢復數據
3、能不能不做備份
在數據龐大切不重要的情況下,我們可以不考慮做備份
4、備份有哪幾種
簡單分爲:數據備份和系統備份
5、備份的方式有哪幾種
方式有全局備份和增量備份
下面,我們來一起學習下rsync這個基礎服務,這是個什麼服務?
一句話簡短的概況一下:遠程同步工具, 支持不同主機系統之間同步。(windows linux mac)並且能實現,全量與增量的同步方式。rsync是C/S 架構 即:客戶端—>服務端 使用端口873/tcp。
1、我們繼續說說rsync三大傳輸模式。
1、本地傳輸模式:類似於cp
[root@yu ~]# rsync -avz 123.txt /tmp/
[root@yu ~]# rsync -avz /etc/ /tmp/
注意: 每次拷貝都是增量,如果有新增,拷貝新增,如果修改歷史拷貝過的文件,則同步修改後的文件
2、遠程傳輸模式:類似於scp,基於ssh協議
[root@yu ~]# rsync -avz [email protected]:/root/123.txt /tmp
3、守護進程模式:以服務的方式運行在後臺
[root@yu ~]# cat /etc/rsyncd.conf
uid = rsync # 運行進程的用戶
gid = rsync # 運行進程的用戶組
use chroot = no #安全功能,數據是否鎖定到備份目錄
fake super = yes #不需要rsync已root身份運行,就可以存儲文件的完整屬性
max connections = 200 #最大連接數,同時多少客戶端訪問
timeout = 600 #超時時間(秒)
pid file = /var/run/rsyncd.pid #pid進程號 所在文件
lock file = /var/run/rsync.lock #鎖文件lock 比如兩個窗口同時運行yum
log file = /var/log/rsyncd.log #日誌文件,查看報錯,排錯必備
ignore errors #忽略錯誤
#read only = false #關閉只讀
read only = true #開啓只讀
list = false #不允許列表
#hosts allow = 172.16.1.0/24 #allow准許哪些主機可以訪問
#hosts deny = 0.0.0.0/32 #deny 拒絕哪些主機不可以訪問
auth users = rsync #指定認證用戶(不存在),遠程虛擬鏈接用戶
secrets file = /etc/rsync.password #存放密碼的文件,權限 必須600
#####################################
[data] #模塊名
path = /data #指定服務端用戶備份的共享目錄
- 創建進程運行的用戶
[root@yu ~]# useradd rsync -M -s /sbin/nologin
- 創建虛擬用戶以及虛擬用戶的密碼/etc/rsync.passwd
[root@yu ~]# cat /etc/rsync.passwd
rsync:1
[root@yu ~]# chmod 600 /etc/rsync.passwd
- 創建一個接收備份數據目錄
[root@yu ~]# mkdir /data
[root@yu ~]# chown -R rsync.rsync /data/
- 啓動與開機自啓動
[root@yu ~]# systemctl start rsyncd
[root@yu ~]# systemctl enable rsyncd
- 檢查端口
[root@yu ~]# netstat -lntp
注意:進程能夠以什麼樣的方式去訪問一個文件,取決於運行該進程的用戶身份,對這個文件擁有什麼權限
錯誤點:目錄後加/與不加/區別
/tmp 目錄和目錄裏的文件
/tmp/ 目錄內的文件(不包含目錄)
2、配置守護進程出現的一些常見報錯
1、防火牆和selinux
2、密碼文件名稱和配置信息內容不符
3、模塊找不到(可能是複製時候使用了vim)
3、rsync作爲服務端一些選項 如何使用?
-a #歸檔模式傳輸, 等於-tropgDl
-v #詳細模式輸出, 打印速率, 文件數量等
-z #傳輸時進行壓縮以提高效率
-r #遞歸傳輸目錄及子目錄,即目錄下得所有目錄都同樣傳輸。
-t #保持文件時間信息
-o #保持文件屬主信息
-p #保持文件權限
-g #保持文件屬組信息
-l #保留軟連接
-P #顯示同步的過程及傳輸時的進度等信息
-D #保持設備文件信息
-L #保留軟連接指向的目標文件
-e #使用的信道協議,指定替代rsh的shell程序 -e 'ssh'
--exclude=PATTERN #指定排除不需要傳輸的文件模式
--exclude-from=file #文件名所在的目錄文件
--bwlimit=100 #限速傳輸
--partial #斷點續傳
--delete #讓目標目錄和源目錄數據保持一致
4、顯示傳輸的每秒的速率:-P
[root@yu ~]# dd if=/dev/zero of=./size_file bs=1M count=300
[root@yu ~]# rsync -avzP size_file [email protected]::data
sending incremental file list
size_file
314,572,800 100% 81.20MB/s 0:00:03 (xfr#1, to-chk=0/1)
5、限速,非常重要:- -bwlimit=10
[root@yu ~]# rsync -avzP --bwlimit=10 size_1G [email protected]::data
....
566,394,880 54% 10.12MB/s 0:00:46
6、強制同步:- -delete
在推送時添加–delete,強制讓服務端與客戶端保持一致,在拉取時添加–delete,強制讓客戶端與服務端保持一致
7、排除:- -exclude 或 - -exclude-from=文件
[root@yu ~]# rsync -avz --exclude=/root/123.txt /root [email protected]::data
8、密碼免交互
第一種方式:
[root@yu ~]# echo "1" > /etc/rsync.pass
[root@yu ~]# chmod 600 /etc/rsync.pass
[root@yu ~]# rsync -avz /root [email protected]::data --password-file=/etc/rsync.pass
第二種方式:
[root@yu ~]# export RSYNC_PASSWORD=1
[root@yu ~]# rsync -avz /root [email protected]::data