- Linux 系統管理員教程
- 首頁
- CentOS 概述
- 基本的 CentOS Linux 命令
- 檔案/資料夾管理
- 使用者管理
- 配額管理
- Systemd 服務啟動和停止
- 使用 systemctl 進行資源管理
- 使用 cgroups 進行資源管理
- 程序管理
- 防火牆設定
- 在 CentOS Linux 中配置 PHP
- 在 CentOS Linux 中設定 Python
- 在 CentOS Linux 中配置 Ruby
- 為 CentOS Linux 設定 Perl
- 安裝和配置 Open LDAP
- 建立 SSL 證書
- 安裝 Apache Web 伺服器 CentOS 7
- 在 CentOS 7 上設定 MySQL
- 設定 Postfix MTA 和 IMAP/POP3
- 安裝匿名 FTP
- 遠端管理
- CentOS 中的流量監控
- 日誌管理
- 備份與恢復
- 系統更新
- Shell 指令碼
- 包管理
- 卷管理
- Linux 系統管理員實用資源
- Linux 系統管理員 - 快速指南
- Linux 系統管理員 - 實用資源
- Linux 系統管理員 - 討論
Linux 系統管理員 - 備份與恢復
在探索 CentOS 中部署標準備份計劃的特定方法之前,讓我們首先討論標準級備份策略的典型考慮因素。我們首先要熟悉的是3-2-1 備份規則。
3-2-1 備份策略
在整個行業中,您經常會聽到 3-2-1 備份模型這個術語。在實施備份計劃時,這是一個非常好的方法。3-2-1 定義如下:3份資料副本;例如,我們可能有工作副本;一個使用 rsync 在 CentOS 伺服器上設計的用於冗餘的副本;以及從備份伺服器上的資料建立的輪換的異地 USB 備份。2種不同的備份介質。在這種情況下,我們實際上會有三種不同的備份介質:筆記型電腦或工作站的 SSD 上的工作副本,RADI6 陣列上的 CentOS 伺服器資料,以及放在 USB 驅動器上的異地備份。1份異地資料副本;我們每天晚上將 USB 驅動器輪換到異地。另一種現代方法可能是雲備份提供商。
系統恢復
裸機恢復計劃僅僅是 CentOS 管理員制定的一項計劃,用於使關鍵系統線上並確保所有資料完整。假設 100% 的系統故障和所有過去系統硬體的丟失,管理員必須制定一個計劃來實現正常執行時間並保持使用者資料完整,同時將停機時間降到最低。Linux 中使用的單片核心實際上使使用系統映像進行裸機恢復比 Windows 容易得多。而 Windows 使用的是微核心架構。
完整的 資料恢復 和裸機恢復通常是透過多種方法的組合來完成的,包括關鍵操作伺服器的已配置的工作生產磁碟映像、符合 3-2-1 規則的使用者資料的冗餘備份。甚至一些敏感檔案也可能儲存在安全的防火保險箱中,只有受信任的公司人員才能有限地訪問。
使用原生 CentOS 工具的多階段裸機恢復和資料恢復計劃可能包括 -
使用 dd 建立和恢復已配置伺服器的生產磁碟映像
使用 rsync 建立所有使用者資料的增量備份
使用 tar & gzip 儲存帶有管理員密碼和註釋的加密檔案備份。通常,這可以放在 USB 驅動器上,加密並鎖在一個高階經理可以訪問的保險箱中。此外,這確保瞭如果當前管理員中了彩票並消失到某個陽光明媚的島嶼上,其他人也會知道重要的安全憑據。
如果系統因硬體故障或災難而崩潰,則恢復操作的不同階段將如下所示 -
使用已配置的裸機映像構建工作伺服器
從備份中將資料恢復到工作伺服器
能夠物理訪問執行前兩個操作所需的憑據
使用 rsync 進行檔案級備份
rsync 是一個用於在本地或到另一臺伺服器同步檔案目錄的優秀實用程式。rsync 已被系統管理員使用多年,因此它非常適合用於備份資料。在我看來,sync 最好的功能之一是它能夠從命令列進行指令碼化。
在本教程中,我們將以各種方式討論 rsync -
- 探索並討論一些常見選項
- 建立本地備份
- 透過 SSH 建立遠端備份
- 恢復本地備份
rsync 以其用途命名:遠端同步,並且用途強大且靈活。
以下是透過 ssh 進行的基本rsync 遠端備份 -
MiNi:~ rdc$ rsync -aAvz --progress ./Desktop/ImportantStuff/ rdc@192.168.1.143:home/rdc/ Documents/RemoteStuff/ rdc@192.168.1.143's password: sending incremental file list 6,148 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=23/25) 2017-02-14 16_26_47-002 - Veeam_Architecture001.png 33,144 100% 31.61MB/s 0:00:00 (xfr#2, to-chk=22/25) A Guide to the WordPress REST API | Toptal.pdf 892,406 100% 25.03MB/s 0:00:00 (xfr#3, to-chk=21/25) Rick Cardon Technologies, LLC..webloc 77 100% 2.21kB/s 0:00:00 (xfr#4, to-chk=20/25) backbox-4.5.1-i386.iso 43,188,224 1% 4.26MB/s 0:08:29 sent 2,318,683,608 bytes received 446 bytes 7,302,941.90 bytes/sec total size is 2,327,091,863 speedup is 1.00 MiNi:~ rdc$
以下同步透過我們的區域網傳送了近 2.3GB 的資料。rsync 的優點在於它在檔案的基礎上以塊級增量方式工作。這意味著,如果我們在 1MB 的文字檔案中只更改了兩個字元,那麼在下一次同步時,只有 1 或 2 個塊將透過區域網傳輸!
此外,可以停用增量功能,以便使用更多的網路頻寬以減少 CPU 利用率。如果每 10 分鐘在 1Gb 專用備份區域網上不斷複製幾個 10MB 的資料庫檔案,這可能被證明是可取的。原因是:這些檔案將始終發生變化,並且將每 10 分鐘增量傳輸一次,這可能會增加遠端 CPU 的負載。由於總傳輸負載不會超過 5 分鐘,我們可能只需要完全同步資料庫檔案。
以下是rsync 最常用的開關 -
rsync syntax: rsync [options] [local path] [[remote host:remote path] or [target path
| 開關 | 操作 |
|---|---|
| -a | 歸檔模式,並假設 -r、-p、-t、-g、-l |
| -d | 僅同步目錄樹,不包括檔案 |
| -r | 遞迴進入目錄 |
| -l | 將符號連結複製為符號連結 |
| -p | 保留許可權 |
| -g | 保留組 |
| -v | 詳細輸出 |
| -z | 透過網路連結壓縮 |
| -X | 保留擴充套件屬性 |
| -A | 保留 ACL |
| -t | 保留時間戳 |
| -W | 傳輸整個檔案,而不是增量塊 |
| -u | 不要覆蓋目標上的檔案 |
| --progress | 顯示傳輸進度 |
| --delete | 刪除目標上的舊檔案 |
| --max-size = XXX | 要同步的最大檔案大小 |
何時使用 rsync
我個人偏好rsync用於將源主機上的檔案備份到目標主機。例如,所有用於資料恢復的主目錄,甚至用於災難恢復的異地和雲端。
使用 rsync 進行本地備份
我們已經瞭解瞭如何將檔案從一臺主機傳輸到另一臺主機。相同的方法可用於在本地同步目錄和檔案。
讓我們手動對/etc/進行增量備份到我們的 root 使用者目錄。
首先,我們需要在 ~/root 中為同步備份建立一個目錄 -
[root@localhost rdc]# mkdir /root/etc_baks
然後,確保有足夠的可用磁碟空間。
[root@localhost rdc]# du -h --summarize /etc/ 49M /etc/ [root@localhost rdc]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/cl-root 43G 15G 28G 35% /
我們可以同步整個 /etc/ 目錄 -
rsync -aAvr /etc/ /root/etc_baks/
我們同步的 /etc/ 目錄 -
[root@localhost etc_baks]# ls -l ./
total 1436
drwxr-xr-x. 3 root root 101 Feb 1 19:40 abrt
-rw-r--r--. 1 root root 16 Feb 1 19:51 adjtime
-rw-r--r--. 1 root root 1518 Jun 7 2013 aliases
-rw-r--r--. 1 root root 12288 Feb 27 19:06 aliases.db
drwxr-xr-x. 2 root root 51 Feb 1 19:41 alsa
drwxr-xr-x. 2 root root 4096 Feb 27 17:11 alternatives
-rw-------. 1 root root 541 Mar 31 2016 anacrontab
-rw-r--r--. 1 root root 55 Nov 4 12:29 asound.conf
-rw-r--r--. 1 root root 1 Nov 5 14:16 at.deny
drwxr-xr-x. 2 root root 32 Feb 1 19:40 at-spi2
--{ condensed output }--
現在讓我們進行增量 rsync -
[root@localhost etc_baks]# rsync -aAvr --progress /etc/ /root/etc_baks/ sending incremental file list test_incremental.txt 0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=1145/1282) sent 204620 bytes received 2321 bytes 413882.00 bytes/sec total size is 80245040 speedup is 387.77 [root@localhost etc_baks]#
僅複製了我們的test_incremental.txt檔案。
使用 rsync 進行遠端差異備份
讓我們將初始 rsync 完全備份到已部署備份計劃的伺服器上。此示例實際上是將 Mac OS X 工作站上的資料夾備份到 CentOS 伺服器。rsync 的另一個優點是它可以在任何已移植 rsync 的平臺上使用。
MiNi:~ rdc$ rsync -aAvz Desktop/ImportanStuff/ rdc@192.168.1.143:Documents/RemoteStuff rdc@192.168.1.143's password: sending incremental file list ./ A Guide to the WordPress REST API | Toptal.pdf Rick Cardon Tech LLC.webloc VeeamDiagram.png backbox-4.5.1-i386.iso dhcp_admin_script_update.py DDWRT/ DDWRT/.DS_Store DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin DDWRT/ddwrt_mod_notes.docx DDWRT/factory-to-ddwrt.bin open_ldap_config_notes/ open_ldap_config_notes/ldap_directory_a.png open_ldap_config_notes/open_ldap_notes.txt perl_scripts/ perl_scripts/mysnmp.pl php_scripts/ php_scripts/chunked.php php_scripts/gettingURL.php sent 2,318,281,023 bytes received 336 bytes 9,720,257.27 bytes/sec total size is 2,326,636,892 speedup is 1.00 MiNi:~ rdc$
我們現在已將工作站上的資料夾備份到執行 RAID6 卷的伺服器上,並在異地儲存了輪換的災難恢復介質。使用 rsync 使我們能夠僅使用一臺伺服器獲得標準的 3-2-1 備份,該伺服器具有昂貴的冗餘磁碟陣列和輪換的差異備份。
現在,讓我們在新增名為test_file.txt的新檔案後,使用 rsync 對同一資料夾進行另一次備份。
MiNi:~ rdc$ rsync -aAvz Desktop/ImportanStuff/ rdc@192.168.1.143:Documents/RemoteStuff rdc@192.168.1.143's password: sending incremental file list ./ test_file.txt sent 814 bytes received 61 bytes 134.62 bytes/sec total size is 2,326,636,910 speedup is 2,659,013.61 MiNi:~ rdc$
如您所見,只有新檔案透過rsync傳遞到伺服器。差異比較是在檔案的基礎上進行的。
需要注意的是:這隻會複製新檔案:test_file.txt,因為它是在唯一更改的檔案。rsync 使用 ssh。我們從未需要在任何機器上使用 root 帳戶。
簡單、強大且有效,rsync非常適合備份整個資料夾和目錄結構。但是,rsync本身並不會自動執行此過程。這就是我們需要深入我們的工具箱並找到最適合、最簡單、最小的工具來完成這項工作的地方。
要使用cronjobs自動執行 rsync 備份,必須使用 SSH 金鑰進行身份驗證來設定 SSH 使用者。這與 cronjobs 相結合,使 rsync 能夠在定時間隔自動執行。
使用 DD 進行逐塊裸機恢復映像
DD 是一個 Linux 實用程式,它自 Linux 核心誕生之初就一直與 GNU 實用程式一起使用。
簡單來說,dd複製選定磁碟區域的映像。然後提供複製物理磁碟選定塊的能力。因此,除非您有備份,否則一旦 dd 覆蓋磁碟,所有塊都將被替換。即使是價格昂貴的專業級資料恢復也無法恢復之前的資料丟失。
使用dd建立可啟動系統映像的整個過程如下 -
- 從具有可啟動 Linux 發行版的 CentOS 伺服器啟動
- 找到要成像的可啟動磁碟的名稱
- 確定恢復映像的儲存位置
- 找到磁碟上使用的塊大小
- 啟動 dd 映像操作
在本教程中,為了節省時間和簡便起見,我們將從 CentOS 虛擬機器建立主引導記錄的 ISO 映像。然後我們將此映像儲存在異地。如果我們的 MBR 損壞且需要恢復,則可以將相同過程應用於整個可啟動磁碟或分割槽。但是,對於本教程而言,所需的時間和磁碟空間確實有點過分。
建議 CentOS 管理員在測試環境中熟練掌握恢復完全可啟動的磁碟/分割槽,並執行裸機恢復。這將在最終需要在現實生活中與管理人員和幾十個終端使用者一起完成此實踐時減輕很多壓力,並計算停機時間。在這種情況下,10 分鐘的摸索可能顯得像一個永恆,讓人感到緊張。
注意 - 使用 dd 時,請確保不要混淆源卷和目標卷。您可以透過將備份位置複製到引導驅動器來銷燬資料和可引導伺服器。或者可能更糟糕的是,使用 DD 在非常低的級別覆蓋資料,從而永遠銷燬資料。
以下是dd常用的命令列開關和引數 -
| 開關 | 操作 |
|---|---|
| if= | 要複製的輸入檔案或原始檔 |
| of= | 輸出檔案或輸入檔案的副本 |
| bs | 設定輸入和輸出塊大小 |
| obs | 設定輸出檔案塊大小 |
| ibs | 設定輸入檔案塊大小 |
| count | 設定要複製的塊數 |
| conv | 要新增的其他成像選項 |
| Noerror | 不要在發生錯誤時停止處理 |
| sync | 在發生錯誤或未對齊時填充不合適的輸入塊 |
關於塊大小的說明 − dd 的預設塊大小為 512 位元組。這是低密度硬碟驅動器的標準塊大小。如今,更高密度的硬碟驅動器已增加到 4096 位元組(4kB)的塊大小,以支援 1TB 及更大的磁碟。因此,在使用 dd 操作更新、更高容量的硬碟時,我們需要檢查磁碟的塊大小。
在本教程中,我們不會在生產伺服器上使用dd,而是使用在 VMWare 中執行的 CentOS 安裝。我們還將配置 VMWare 以引導可啟動的 Linux ISO 映象,而不是使用可啟動的 USB 快閃記憶體盤。
首先,我們需要下載名為CentOS Gnome ISO的 CentOS 映象。該映象大小接近 3GB,建議始終保留一份副本,用於建立可啟動的 USB 快閃記憶體盤以及引導虛擬伺服器安裝以進行故障排除和裸機映象。
其他可啟動的 Linux 發行版也可以正常工作。Linux Mint 可用於可啟動 ISO 映象,因為它具有出色的硬體支援和完善的 GUI 磁碟維護工具。
CentOS GNOME Live 可啟動映象可以從以下地址下載:http://buildlogs.centos.org/rolling/7/isos/x86_64/CentOS-7-x86_64-LiveGNOME.iso
讓我們配置我們的 VMWare Workstation 安裝以從我們的 Linux 可啟動映象引導。這些步驟適用於 OS X 上的 VMWare。但是,它們在 Linux、Windows 上的 VMWare Workstation 以及 Virtual Box 上都類似。
注意 − 使用 Virtual Box 或 VMWare Workstation 等虛擬桌面解決方案是設定學習 CentOS 管理任務的實驗室場景的好方法。它提供了安裝多個 CentOS 安裝的功能,幾乎無需硬體配置,從而使人們能夠專注於管理,甚至可以在進行更改之前儲存伺服器狀態。
首先,讓我們配置一個虛擬 CD-ROM 並連線我們的 ISO 映象以引導,而不是虛擬 CentOS 伺服器安裝 −
現在,設定啟動磁碟 −
現在引導後,我們的虛擬機器將從 CentOS 可啟動 ISO 映象引導,並允許訪問先前配置的虛擬 CentOS 伺服器上的檔案。
讓我們檢查我們的磁碟,看看我們想從哪裡複製 MBR(壓縮輸出如下)。
MiNt ~ # fdisk -l Disk /dev/sda: 60 GiB, 21474836480 bytes, 41943040 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes
我們已經找到我們的物理磁碟:sda 和 sdb。每個磁碟的塊大小都是 512 位元組。因此,我們現在將執行dd命令來複制 SDA1 上 MBR 的前 512 位元組。
最好的方法是 −
[root@mint rdc]# dd if=/dev/sda bs=512 count=1 | gzip -c > /mnt/sdb/images/mbr.iso.gz 1+0 records in 1+0 records out 512 bytes copied, 0.000171388 s, 3.0 MB/s [root@mint rdc]# ls /mnt/sdb/ mbr-iso.gz [root@mint rdc]#
就這樣,我們獲得了主引導記錄的完整映象。如果我們有足夠的空間來映象引導驅動器,我們可以輕鬆地建立完整的系統引導映象 −
dd if=/dev/INPUT/DEVICE-NAME-HERE conv=sync,noerror bs=4K | gzip -c > /mnt/sdb/boot-server-centos-image.iso.gz
當位元組必須對齊到物理介質時,使用conv=sync。在這種情況下,如果未讀取精確的 4K 對齊(例如,僅 3K 但需要在磁碟上佔用至少一個 4K 塊的檔案。或者,讀取時出現錯誤並且 dd 無法讀取該檔案),則 dd 可能會出錯。因此,帶有conv=sync,noerror的dd將用微不足道但有用的資料填充 3K 到 4K 塊對齊的物理介質中。同時不會出現可能終止大型操作的錯誤。
在處理來自磁碟的資料時,我們始終希望包含:conv=sync,noerror引數。
這僅僅是因為磁碟不像 TCP 資料那樣是流。它們由對齊到特定大小的塊組成。例如,如果我們有 512 位元組的塊,則只有 300 位元組的檔案仍然需要 512 位元組的磁碟空間(可能是 2 個塊用於 inode 資訊,如許可權和其他檔案系統資訊)。
使用 gzip 和 tar 進行安全儲存
gzip 和 tar 是 CentOS 管理員必須習慣使用的兩個實用程式。它們不僅用於解壓縮存檔。
在 CentOS Linux 中使用 Gnu Tar
Tar 是一種歸檔實用程式,類似於 Windows 上的winrar。它的名稱Tape Archive(縮寫為tar)幾乎概括了該實用程式。tar將獲取檔案並將它們放入存檔以方便邏輯操作。因此,我們可以將儲存在 /etc 中的數十個檔案“tar”成一個存檔,以便於備份和儲存。
多年來,tar一直是 Unix 和 Linux 上儲存存檔檔案的標準。因此,將 tar 與gzip或bzip一起使用被認為是每個系統上存檔的最佳實踐。
以下是與 tar 一起使用的常用命令列開關和選項列表 −
| 開關 | 操作 |
|---|---|
| -c | 建立新的 .tar 存檔 |
| -C | 解壓到不同的目錄 |
| -j | 使用 bzip2 壓縮 |
| -z | -z |
| -v | 使用 gzip 壓縮 |
| -t | -v |
| 詳細顯示歸檔進度 | -t |
| 列出存檔內容 | -f |
存檔的檔名
tar -cvf [tar archive name]
-x
解壓 tar 存檔
| 以下是建立tar存檔的基本語法。 | 關於 tar 的壓縮機制的說明 − 建議在使用 tar 時堅持使用兩種常見的壓縮方案之一:gzip 和 bzip2。gzip 檔案消耗更少的 CPU 資源,但通常檔案較大。而 bzip2 壓縮需要更長時間,會佔用更多 CPU 資源,但會導致最終檔案尺寸更小。 |
| 以下是建立tar存檔的基本語法。 | 在使用檔案壓縮時,我們始終希望使用標準副檔名,讓包括我們自己在內的每個人都知道(而不是透過反覆試驗猜測)需要使用哪種壓縮方案來解壓存檔。 |
| 以下是建立tar存檔的基本語法。 | bzip2 |
| .tbz | .tar.tbz |
| .tbz | .tb2 |
gzip
.tar.gz
[rdc@mint Documents]$ tar -cvz -f RemoteStuff.tgz ./RemoteStuff/ ./RemoteStuff/ ./RemoteStuff/.DS_Store ./RemoteStuff/DDWRT/ ./RemoteStuff/DDWRT/.DS_Store ./RemoteStuff/DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin ./RemoteStuff/DDWRT/ddwrt_mod_notes.docx ./RemoteStuff/DDWRT/factory-to-ddwrt.bin ./RemoteStuff/open_ldap_config_notes/ ./RemoteStuff/open_ldap_config_notes/ldap_directory_a.png ./RemoteStuff/open_ldap_config_notes/open_ldap_notes.txt ./RemoteStuff/perl_scripts/ ./RemoteStuff/perl_scripts/mysnmp.pl ./RemoteStuff/php_scripts/ ./RemoteStuff/php_scripts/chunked.php ./RemoteStuff/php_scripts/gettingURL.php ./RemoteStuff/A Guide to the WordPress REST API | Toptal.pdf ./RemoteStuff/Rick Cardon Tech LLC.webloc ./RemoteStuff/VeeamDiagram.png ./RemoteStuff/backbox-4.5.1-i386.iso ./RemoteStuff/dhcp_admin_script_update.py ./RemoteStuff/test_file.txt [rdc@mint Documents]$ ls -ld RemoteStuff.tgz -rw-rw-r--. 1 rdc rdc 2317140451 Mar 12 06:10 RemoteStuff.tgz
.tgz
當需要在 Windows 機器上或用於 Windows 時可能需要解壓存檔時,建議使用.tar.tbz或.tar.gz,因為大多數三個字元的單一副檔名會讓 Windows 和僅限 Windows 的管理員感到困惑(但是,這有時是期望的結果)。
[root@centos ~]# tar -zxvf RemoteStuff.tgz ./RemoteStuff/ ./RemoteStuff/.DS_Store ./RemoteStuff/DDWRT/ ./RemoteStuff/DDWRT/.DS_Store ./RemoteStuff/DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin ./RemoteStuff/DDWRT/ddwrt_mod_notes.docx ./RemoteStuff/DDWRT/factory-to-ddwrt.bin ./RemoteStuff/open_ldap_config_notes/ ./RemoteStuff/open_ldap_config_notes/ldap_directory_a.png ./RemoteStuff/open_ldap_config_notes/open_ldap_notes.txt ./RemoteStuff/perl_scripts/ ./RemoteStuff/perl_scripts/mysnmp.pl ./RemoteStuff/php_scripts/ ./RemoteStuff/php_scripts/chunked.php ./RemoteStuff/php_scripts/gettingURL.php ./RemoteStuff/A Guide to the WordPress REST API | Toptal.pdf ./RemoteStuff/Rick Cardon Tech LLC.webloc ./RemoteStuff/VeeamDiagram.png ./RemoteStuff/backbox-4.5.1-i386.iso ./RemoteStuff/dhcp_admin_script_update.py ./RemoteStuff/test_file.txt [root@mint ~]# ping www.google.com
讓我們從 Mac 工作站複製的遠端備份建立gzip壓縮的 tar 存檔 −
[root@centos ~]# ls -l total 2262872 -rw-------. 1 root root 1752 Feb 1 19:52 anaconda-ks.cfg drwxr-xr-x. 137 root root 8192 Mar 9 04:42 etc_baks -rw-r--r--. 1 root root 1800 Feb 2 03:14 initial-setup-ks.cfg drwxr-xr-x. 6 rdc rdc 4096 Mar 10 22:20 RemoteStuff -rw-r--r--. 1 root root 2317140451 Mar 12 07:12 RemoteStuff.tgz -rw-r--r--. 1 root root 9446 Feb 25 05:09 ssl.conf [root@centos ~]#
注意 − 我們沒有將所有檔案直接新增到存檔中,而是將整個RemoteStuff資料夾歸檔。這是最簡單的方法。因為解壓時,整個RemoteStuff目錄及其中的所有檔案都將解壓到當前工作目錄中,即./currentWorkingDirectory/RemoteStuff/。
現在讓我們在/root/主目錄中解壓存檔。
如上所示,所有檔案都只是解壓到了當前工作目錄中的包含目錄中。
使用 gzip 壓縮檔案備份
| 開關 | 操作 |
|---|---|
| -c | 如前所述,我們可以使用 tar 的-j或-z命令列開關使用 bzip2 或 gzip。我們還可以使用 gzip 壓縮單個檔案。但是,單獨使用 bzip 或 gzip 並不像與tar組合使用時那樣提供那麼多功能。 |
| -l | 使用gzip時,預設操作是刪除原始檔案,並用添加了 .gz 副檔名的壓縮版本替換每個檔案。 |
| -r | gzip 的一些常用命令列開關是 − |
| -k | 將檔案放入存檔後保留檔案 |
-l
獲取壓縮存檔的統計資訊
-r
遞迴壓縮目錄中的檔案
[root@centos Documents]# tar -cvf RemoteStuff.tar ./RemoteStuff/ [root@centos Documents]# ls RemoteStuff.tar RemoteStuff/
-1 到 9
[root@centos Documents]# gzip -c RemoteStuff.tar > RemoteStuff.tar.gz [root@centos Documents]# ls RemoteStuff RemoteStuff.tar RemoteStuff.tar.gz We now have our original directory, our tarred directory and finally our gziped tarball.
指定 1 到 9 範圍內的壓縮級別
[root@centos Documents]# gzip -l RemoteStuff.tar.gz
compressed uncompressed ratio uncompressed_name
2317140467 2326661120 0.4% RemoteStuff.tar
[root@centos Documents]#
gzip或多或少按檔案為單位工作,而不是像某些 Windows 作業系統 zip 實用程式那樣按存檔為單位工作。這樣做的主要原因是tar已經提供了高階的歸檔功能。gzip旨在僅提供壓縮機制。
[root@centos Documents]# ls text_files/ file1.txt file2.txt file3.txt file4.txt file5.txt [root@centos Documents]#
因此,當想到gzip時,請考慮單個檔案。當想到多個檔案時,請考慮tar存檔。現在讓我們用我們之前的tar存檔來探索這一點。
[root@centos Documents]# gzip -9 -r text_files/ [root@centos Documents]# ls ./text_files/ file1.txt.gz file2.txt.gz file3.txt.gz file4.txt.gz file5.txt.gz [root@centos Documents]#
注意 − 經驗豐富的 Linux 專業人員通常將 tar 存檔稱為 tarball。
讓我們從我們的rsync備份建立另一個tar存檔。
[root@centos Documents]# tar -C /tmp -zxvf RemoteStuff.tar.gz ./RemoteStuff/ ./RemoteStuff/.DS_Store ./RemoteStuff/DDWRT/ ./RemoteStuff/DDWRT/.DS_Store ./RemoteStuff/DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin ./RemoteStuff/DDWRT/ddwrt_mod_notes.docx ./RemoteStuff/DDWRT/factory-to-ddwrt.bin ./RemoteStuff/open_ldap_config_notes/ ./RemoteStuff/open_ldap_config_notes/ldap_directory_a.png ./RemoteStuff/open_ldap_config_notes/open_ldap_notes.txt ./RemoteStuff/perl_scripts/ ./RemoteStuff/perl_scripts/mysnmp.pl ./RemoteStuff/php_scripts/ ./RemoteStuff/php_scripts/chunked.php
為了演示的目的,讓我們gzip新建立的 tarball,並告訴gzip保留舊檔案。預設情況下,如果沒有-c選項,gzip 將用.gz檔案替換整個 tar 存檔。
[root@centos Documents]# ls /tmp hsperfdata_root RemoteStuff
讓我們嘗試使用gzip的-l開關進行測試。
為了演示gzip與 Windows Zip 實用程式的不同之處,讓我們對一個文字檔案資料夾執行 gzip。
現在讓我們使用 -r 選項遞迴壓縮目錄中的所有文字檔案。
看到了嗎?這可能不是一些人預期的結果。所有原始文字檔案都被刪除,並且每個檔案都被單獨壓縮。由於這種行為,最好在需要處理單個檔案時單獨考慮gzip。
使用tarball,讓我們將rsynced的 tarball 解壓到一個新目錄中。
如上所示,我們將 tarball 解壓並解壓縮到 /tmp 目錄中。
加密 TarBall 存檔
[root@centos Documents]# yum -y install p7zip.x86_64 p7zip-plugins.x86_64 Loaded plugins: fastestmirror, langpacks base | 3.6 kB 00:00:00 epel/x86_64/metalink | 13 kB 00:00:00 epel | 4.3 kB 00:00:00 extras | 3.4 kB 00:00:00 updates | 3.4 kB 00:00:00 (1/2): epel/x86_64/updateinfo | 756 kB 00:00:04 (2/2): epel/x86_64/primary_db | 4.6 MB 00:00:18 Loading mirror speeds from cached hostfile --> Running transaction check ---> Package p7zip.x86_64 0:16.02-2.el7 will be installed ---> Package p7zip-plugins.x86_64 0:16.02-2.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved
加密 tarball 存檔以儲存可能需要由組織的其他員工訪問的安全文件(以防災難恢復)可能是一個棘手的概念。基本上有三種方法可以做到這一點:使用 GnuPG,或使用 openssl,或使用第三方實用程式。
GnuPG 主要用於非對稱加密,並且考慮了身份關聯,而不是密碼。誠然,它可以與對稱加密一起使用,但這並不是 GnuPG 的主要優勢。因此,當需要多人訪問(例如,可能是一位公司經理,希望防止管理員以槓桿的方式持有所有金鑰)時,我會排除 GnuPG 用於儲存具有物理安全性的存檔。
7z a -p <output filename><input filename>
與 GnuPG 一樣,Openssl 可以滿足我們的需求,並且與 CentOS 一起提供。但同樣,它並非專門設計用於滿足我們的需求,並且加密在安全社群中也受到質疑。
[root@centos Documents]# 7z a -p RemoteStuff.tgz.7z RemoteStuff.tar.gz 7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21 p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,1 CPU Intel(R) Core(TM) i5-4278U CPU @ 2.60GHz (40651),ASM,AES-NI) Scanning the drive: 1 file, 2317140467 bytes (2210 MiB) Creating archive: RemoteStuff.tgz.7z Items to compress: 1 Enter password (will not be echoed): Verify password (will not be echoed) : Files read from disk: 1 Archive size: 2280453410 bytes (2175 MiB) Everything is Ok [root@centos Documents]# ls RemoteStuff RemoteStuff.tar RemoteStuff.tar.gz RemoteStuff.tgz.7z slapD text_files [root@centos Documents]#
我們的選擇是一個名為7zip的實用程式。7zip 是一種類似於gzip的壓縮實用程式,但具有更多功能。與 Gnu Gzip 一樣,7zip 及其標準也存在於開源社群中。我們只需要從我們的 EHEL 儲存庫中安裝 7zip(下一章將詳細介紹安裝擴充套件企業儲存庫)。
在 Centos 上安裝 7zip
對於較大的檔案,進一步加密和重新壓縮的過程可能需要一些時間。
7zip 是一款功能更強大的工具,比 gzip 或 bzip2 具有更多功能。但是,它在 CentOS 或 Linux 世界中並不像其他工具那樣標準。因此,應儘可能多地使用其他實用程式。