日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
【Debian參考手冊】第?10?章?數(shù)據(jù)管理

目錄

創(chuàng)新互聯(lián)建站企業(yè)建站,10余年網(wǎng)站建設經(jīng)驗,專注于網(wǎng)站建設技術(shù),精于網(wǎng)頁設計,有多年建站和網(wǎng)站代運營經(jīng)驗,設計師為客戶打造網(wǎng)絡企業(yè)風格,提供周到的建站售前咨詢和貼心的售后服務。對于成都網(wǎng)站設計、成都做網(wǎng)站中不同領(lǐng)域進行深入了解和探索,創(chuàng)新互聯(lián)在網(wǎng)站建設中充分了解客戶行業(yè)的需求,以靈動的思維在網(wǎng)頁中充分展現(xiàn),通過對客戶行業(yè)精準市場調(diào)研,為客戶提供的解決方案。

10.1. 共享,拷貝和存檔
10.1.1. 存檔和壓縮工具
10.1.2. 復制和同步工具
10.1.3. 歸檔語法
10.1.4. 復制語法
10.1.5. 查找文件的語法
10.1.6. 歸檔媒體
10.1.7. 可移動存儲設備
10.1.8. 選擇用于分享數(shù)據(jù)的文件系統(tǒng)
10.1.9. 網(wǎng)絡上的數(shù)據(jù)分享
10.2. 備份和恢復
10.2.1. 備份和恢復策略
10.2.2. 實用備份套件
10.2.3. 個人備份
10.3. 數(shù)據(jù)安全基礎(chǔ)
10.3.1. GnuPG 密鑰管理
10.3.2. 在文件上使用 GnuPG
10.3.3. 在 Mutt 中使用 GnuPG
10.3.4. 在 Vim 中使用 GnuPG
10.3.5. MD5 校驗和
10.3.6. 密碼密鑰環(huán)
10.4. 源代碼合并工具
10.4.1. 從源代碼文件導出差異
10.4.2. 源代碼文件移植更新
10.4.3. 交互式移植
10.5. Git
10.5.1. 配置 Git 客戶端
10.5.2. 基本的 Git 命令
10.5.3. Git 技巧
10.5.4. Git 參考
10.5.5. 其它的版本控制系統(tǒng)

以下是關(guān)于在 Debian 系統(tǒng)上管理二進制和文本數(shù)據(jù)的工具及其相關(guān)提示。

10.1. 共享,拷貝和存檔

警告

為避免 競爭情況,不應當對正在進行寫操作的設備和文件,多個進程進行不協(xié)調(diào)的寫操作。采用flock(1) 的 文件鎖定 機制可用于避免這種情況。

數(shù)據(jù)的安全和它的受控共享有如下幾個方面。

  • 存檔文件的建立

  • 遠程存儲訪問

  • 復制

  • 跟蹤修改歷史

  • 促進數(shù)據(jù)共享

  • 防止未經(jīng)授權(quán)的文件訪問

  • 檢測未經(jīng)授權(quán)的文件修改

這些可以通過使用工具集來實現(xiàn)。

  • 存檔和壓縮工具

  • 復制和同步工具

  • 網(wǎng)絡文件系統(tǒng)

  • 移動存儲媒介

  • 安全 shell

  • 認證體系

  • 版本控制系統(tǒng)工具

  • 哈希算法和加密工具

10.1.1. 存檔和壓縮工具

以下是 Debian 系統(tǒng)上可用的存檔和壓縮工具的預覽。

表 10.1. 存檔和壓縮工具列表

軟件包 流行度 大小 擴展名 命令 描述
tar V:907, I:999 3152 .tar tar(1) 標準的歸檔工具(默認)
cpio V:383, I:998 1140 .cpio cpio(1) Unix System V 風格的歸檔器,與 find(1) 一起使用
binutils V:148, I:652 99 .ar ar(1) 創(chuàng)建靜態(tài)庫的歸檔工具
fastjar V:2, I:22 183 .jar fastjar(1) Java 歸檔工具(類似 zip)
pax V:11, I:20 170 .pax pax(1) 新的 POSIX 歸檔工具,介于 tarcpio 之間
gzip V:878, I:999 242 .gz gzip(1), zcat(1), … GNU LZ77 壓縮工具(默認)
bzip2 V:161, I:973 120 .bz2 bzip2(1), bzcat(1), … Burrows-Wheeler block-sorting 壓縮工具有著比 gzip(1) 更高的壓縮率 (跟 gzip 有著相似的語法但速度比它慢)
lzma V:2, I:23 149 .lzma lzma(1) LZMA 壓縮工具有著比 gzip(1) 更高的壓縮率(不推薦)
xz-utils V:436, I:980 612 .xz xz(1), xzdec(1), … XZ 壓縮工具有著比 bzip2(1) 更高的壓縮率(壓縮速度慢于 gzip 但是比 bzip2 快; LZMA 壓縮工具的替代品)
zstd V:7, I:34 1898 .zstd zstd(1), zstdcat(1), … Zstandard 快速無損壓縮工具
p7zip V:83, I:468 987 .7z 7zr(1), p7zip(1) 有著更高壓縮率的 7-zip 文件歸檔器(LZMA 壓縮)
p7zip-full V:116, I:478 4664 .7z 7z(1), 7za(1) 有著更高壓縮率的 7-Zip 文件歸檔器(LZMA 壓縮和其他)
lzop V:14, I:120 164 .lzo lzop(1) LZO 壓縮工具有著比 gzip(1) 更高的壓縮和解壓縮速度 (跟 gzip 有著相似的語法但壓縮率比它低)
zip V:49, I:414 623 .zip zip(1) InfoZip:DOS 歸檔器和壓縮工具
unzip V:142, I:788 385 .zip unzip(1) InfoZIP:DOS 解檔器和解壓縮工具

警告

除非你知道將會發(fā)生什么,否則不要設置 "$TAPE" 變量。它會改變 tar(1) 的行為。

  • gzipped tar(1) 歸檔器用于擴展名是 ".tgz" 或者 ".tar.gz" 的文件。

  • xz-compressed tar(1) 歸檔器用于擴展名是 ".txz" 或者 ".tar.xz" 的文件。

  • FOSS 工具,例如 tar(1),中的主流壓縮方法已經(jīng)按如下所示的遷移: gzipbzip2xz

  • cp(1),scp(1) 和 tar(1) 工具可能并不適用于一些特殊的文件。cpio(1) 工具的適用范圍是最廣的。

  • cpio(1) 是被設計為與 find(1) 和其它命令一起使用,適合于創(chuàng)建備份腳本的場景,因此,腳本的文件選擇部分能夠被獨立測試。

  • Libreoffice 數(shù)據(jù)文件的內(nèi)部結(jié)構(gòu)是 ".jar" 文件,它也可以使用 unzip 工具來打開。

  • 事實上跨平臺支持最好的存檔工具是 zip。按照“zip -rX”的方式調(diào)用可以獲得最大的兼容性。如果最大文件大小需要納入考慮范圍,請同時配合“-s”選項使用。

10.1.2. 復制和同步工具

以下是 Debian 系統(tǒng)上的可用的簡單復制和備份工具的預覽。

表 10.2. 復制和同步工具列表

軟件包 流行度 大小 工具 功能
coreutils V:898, I:999 17372 GNU cp 復制本地文件和目錄("-a" 參數(shù)實現(xiàn)遞歸)
openssh-client V:828, I:997 5650 scp 復制遠端文件和目錄(客戶端,"-r" 參數(shù)實現(xiàn)遞歸)
openssh-server V:709, I:832 1806 sshd 復制遠端文件和目錄(遠程服務器)
rsync V:280, I:566 737 單向遠程同步和備份
unison V:3, I:16 14 雙向遠程同步和備份

在復制文件的時候, rsync(8) 比其他工具提供了更多的特性。

  • 差分傳輸算法只會發(fā)送源文件與已存在的目標文件之間的差異部分

  • 快速檢查算法 (默認) 會查找大小或者最后的修改時間有變化的文件

  • "--exclude" 和 "--exclude-from" 選項類似于 tar(1)

  • 在源目錄中添加反斜杠的語法能夠避免在目標文件中創(chuàng)建額外的目錄級別。

提示

在 表 10.14 “其它版本控制系統(tǒng)工具列表” 中的版本控制系統(tǒng) (VCS) 可以被認為是多路拷貝和同步工具。

10.1.3. 歸檔語法

以下是用不同的工具壓縮和解壓縮整個 "./source" 目錄中的內(nèi)容。

GNU tar(1):

$ tar -cvJf archive.tar.xz ./source
$ tar -xvJf archive.tar.xz

或者,如下所示。

$ find ./source -xdev -print0 | tar -cvJf archive.tar.xz --null -F -

cpio(1):

$ find ./source -xdev -print0 | cpio -ov --null > archive.cpio; xz archive.cpio
$ zcat archive.cpio.xz | cpio -i

10.1.4. 復制語法

如下是用不同的工具復制整個 "./source" 目錄中的內(nèi)容。

  • 本地復制: "./source" 目錄 → "/dest" 目錄

  • 遠程復制:本地主機上的 "./source" 目錄 → "user@host.dom" 主機上的 "/dest" 目錄

rsync(8):

# cd ./source; rsync -aHAXSv . /dest
# cd ./source; rsync -aHAXSv . user@host.dom:/dest

你能夠選擇使用“源目錄上的反斜杠”語法。

# rsync -aHAXSv ./source/ /dest
# rsync -aHAXSv ./source/ user@host.dom:/dest

或者,如下所示。

# cd ./source; find . -print0 | rsync -aHAXSv0 --files-from=- . /dest
# cd ./source; find . -print0 | rsync -aHAXSv0 --files-from=- . user@host.dom:/dest

GNU cp(1) 和 openSSH scp(1):

# cd ./source; cp -a . /dest
# cd ./source; scp -pr . user@host.dom:/dest

GNU tar(1):

# (cd ./source && tar cf - . ) | (cd /dest && tar xvfp - )
# (cd ./source && tar cf - . ) | ssh user@host.dom '(cd /dest && tar xvfp - )'

cpio(1):

# cd ./source; find . -print0 | cpio -pvdm --null --sparse /dest

你能夠在所有包含 "." 的例子里用 "foo" 替代 ".",這樣就可以從 "./source/foo" 目錄復制文件到 "/dest/foo" 目錄。

在所有包含 "." 的列子里,你能夠使用絕對路徑 "/path/to/source/foo" 來代替 ".",這樣可以去掉 "cd ./source;". 如下所示,這些文件會根據(jù)工具的不同,拷貝到不同的位置。

  • "/dest/foo": rsync(8), GNU cp(1), 和 scp(1)

  • "/dest/path/to/source/foo": GNU tar(1), 和 cpio(1)

提示

rsync(8) 和 GNU cp(1) 可以用 "-u" 選項來忽略接受端上更新的文件。

10.1.5. 查找文件的語法

find(1) 被用作從歸檔中篩選文件也被用作拷貝命令 (參見第 10.1.3 節(jié) “歸檔語法”和第 10.1.4 節(jié) “復制語法”) 或者用于 xargs(1) (參見第 9.4.9 節(jié) “使用文件循環(huán)來重復一個命令”)。通過 find 的命令行參數(shù)能夠使其功能得到加強。

以下是 find(1)基本語法的總結(jié)。

  • find 條件參數(shù)的運算規(guī)則是從左到右。

  • 一旦輸出是確定的,那么運算就會停止。

  • “邏輯 OR" (由條件之間的 "-o" 參數(shù)指定的)優(yōu)先級低于 "邏輯 AND" (由 "-a" 參數(shù)指定或者條件之間沒有任何參數(shù))。

  • ”邏輯 NOT" (由條件前面的 "!" 指定) 優(yōu)先級高于 “邏輯 AND”。

  • "-prune" 總是返回邏輯 TRUE 并且如果這個目錄是存在的,將會搜索除這個目錄以外的文件。

  • "-name" 選項匹配帶有 shell 通配符 (參見第 1.5.6 節(jié) “Shell 通配符”) 的文件名但也匹配帶有類似 "*" 和 "?" 元字符的 ."。(新的 POSIX 特性)

  • "-regex" 匹配整個文件路徑,默認采用 emacs 風格的 BRE (參見第 1.6.2 節(jié) “正則表達式”)。

  • "-size" 根據(jù)文件大小來匹配 (值前面帶有 "+" 號匹配更大的文件,值前面帶有 "-" 號匹配更小的文件)

  • "-newer" 參數(shù)匹配比參數(shù)名中指定的文件還要新的文件。

  • "-print0" 參數(shù)總是返回邏輯 TRUE 并將完整文件名 (null terminated) 打印到標準輸出設備上。

如下是 find(1) 語法格式。

# find /path/to \
    -xdev -regextype posix-extended \
    -type f -regex ".*\.cpio|.*~" -prune -o \
    -type d -regex ".*/\.git" -prune -o \
    -type f -size +99M -prune -o \
    -type f -newer /path/to/timestamp -print0

這些命令會執(zhí)行如下動作。

  1. 查找 "/path/to" 下的所有文件

  2. 限定全局查找的文件系統(tǒng)并且使用的是 ERE (參見第 1.6.2 節(jié) “正則表達式”)

  3. 通過停止處理的方式來排除匹配 ".*\.cpio" 或 ".*~" 正則表達式的文件

  4. 通過停止處理的方式來排除匹配 ".*/\.git" 正則表達式的目錄

  5. 通過停止處理的方式來排除比 99MB (1048576字節(jié)單元) 更大的文件

  6. 顯示文件名,滿足以上搜索條件并且比 "/path/to/timestamp" 新的文件

請留心以上例子中的 "-prune -o" 排除文件的習慣用法。

注意

對于非 Debian 系的 Unix-like 系統(tǒng),有些參數(shù)可能不被 find(1) 命令所支持。在這種情況下,應該考慮調(diào)整匹配方法并用 "-print" 替代 "-print0"。你可能同樣需要更改其他相關(guān)的命令。

10.1.6. 歸檔媒體

為重要的數(shù)據(jù)存檔尋找 存儲設備 時,你應該注意它們的局限性。對于小型的個人數(shù)據(jù)備份,我使用品牌公司的 CD-R 和 DVD-R 然后把它放在陰涼、干燥、清潔的地方。(專業(yè)的一般使用磁帶存檔介質(zhì))

注意

防火安全是對于紙質(zhì)文檔來說的,大多數(shù)的計算機數(shù)據(jù)存儲媒介耐熱性比紙差。我經(jīng)常依賴存儲在多個安全地點的加密拷貝。

網(wǎng)上(主要是來源于供應商信息)可以查看存儲介質(zhì)的最大使用壽命。

  • 大于100年:用墨水的無酸紙

  • 100年:光盤存儲(CD/DVD,CD/DVD-R)

  • 30年:磁帶存儲(磁帶,軟盤)

  • 20年:相變光盤存儲(CD-RW)

這不包括由于人為導致的機械故障等等。

網(wǎng)上(主要來源于供應商信息)可以查看存儲介質(zhì)的最大的寫次數(shù)。

  • 大于250,000次:硬盤驅(qū)動器

  • 大于10,000次:閃存

  • 1,000次:CD/DVD-RW

  • 1次:CD/DVD-R,紙

小心

這里的存儲壽命和寫次數(shù)的數(shù)據(jù)不應該被用來決定任何用于關(guān)鍵數(shù)據(jù)的存儲媒介,請翻閱制造商提供的特定產(chǎn)品的說明。

提示

因為 CD/DVD-R 和 紙只能寫一次,它們從根本上阻止了因為重寫導致的數(shù)據(jù)意外丟失。這是優(yōu)點!

提示

如果你需要更快更頻繁的進行大數(shù)據(jù)備份,那么通過高速網(wǎng)絡連接的遠端主機上的硬盤來實現(xiàn)備份,可能是唯一可行的方法。

提示

如果你在使用一個可重復寫入的介質(zhì)作為你的備份介質(zhì),使用支持只讀快照的 btrfs 或 zfs 文件系統(tǒng),也許是一個好注意。

10.1.7. 可移動存儲設備

可移動存儲設備可能是以下的任何一種。

  • USB 閃存盤

  • 硬盤驅(qū)動器

  • 光盤驅(qū)動器

  • 數(shù)碼相機

  • 數(shù)字音樂播放器

它們可以通過以下的方式來進行連接。

  • USB

  • IEEE 1394 / FireWire

  • PC 卡

像 GNOME 和 KDE 這樣的現(xiàn)代桌面環(huán)境能夠在 "/etc/fstab" 文件中沒有匹配條目的時候,自動掛載這些可移動設備。

  • udisks2 包提供了守護進程和相關(guān)的實用程序來掛載和卸載這些設備。

  • D-bus 創(chuàng)建事件來觸發(fā)自動處理。

  • PolicyKit 提供了所需的特權(quán)。

提示

umount(8) 在自動掛載設備的時候可能會帶有 "uhelper=" 參數(shù)。

提示

只有當這些可移動設備沒有在 "/etc/fstab" 文件中列出時,桌面環(huán)境下才會自動掛載。

現(xiàn)代桌面環(huán)境下的掛載點被選為 "/media/username/disk_label",它可以被如下所示的來定制。

  • FAT 格式的文件系統(tǒng)使用 mlabel(1) 命令

  • ISO9660 文件系統(tǒng)使用帶有 "-V" 選項的 genisoimage(1) 命令

  • ext2/ext3/ext4 文件系統(tǒng)使用帶有 "-L" 選項的 tune2fs(1) 命令

提示

掛載時可能需要提供編碼選項(參見 第 8.1.3 節(jié) “文件名編碼”)。

提示

在圖形界面菜單上移除文件系統(tǒng),可能會移除它的動態(tài)設備節(jié)點例如 "/dev/sdc"。如果你想要保留它的設備節(jié)點,你應該在命令行提示符上輸入 umount(8) 命令來卸載它。

10.1.8. 選擇用于分享數(shù)據(jù)的文件系統(tǒng)

當你通過可移動存儲設備與其他系統(tǒng)分享數(shù)據(jù)的時候,你應該先把它格式化為被兩種操作系統(tǒng)都支持的通用的 文件系統(tǒng)。下面是文件系統(tǒng)的列表。

表 10.3. 典型使用場景下可移動存儲設備可選擇的文件系統(tǒng)列表

文件系統(tǒng)名 典型使用場景
FAT12 軟盤(<32MiB)上跨平臺的數(shù)據(jù)分享
FAT16 在小硬盤(<2GiB)上的跨平臺的數(shù)據(jù)分享
FAT32 在大硬盤(<8TiB,被 MS Windows95 OSR2 以上的操作系統(tǒng)所支持) 上的跨平臺的數(shù)據(jù)分享
exFAT 在大硬盤類設備上跨平臺共享數(shù)據(jù)(<512TiB,被 WindowsXP, Mac OS X Snow Leopard 10.6.5 和 Linux 內(nèi)核 5.4 版本以上的操作系統(tǒng)所支持)
NTFS 在大硬盤類設備上的跨平臺共享數(shù)據(jù) (在 MS Windows NT 和后續(xù)版本原生支持;在 Linux 上,通過使用 FUSE 的 NTFS-3G 支持。)
ISO9660 在 CD-R 和 DVD+/-R 上的跨平臺的靜態(tài)數(shù)據(jù)分享
UDF CD-R 和 DVD+/-R (新)上的增量數(shù)據(jù)寫入
MINIX 軟盤上磁盤空間高利用率的 unix 文件數(shù)據(jù)存儲
ext2 在裝有老舊 linux 系統(tǒng)的硬盤上的數(shù)據(jù)分享
ext3 在裝有老舊 linux 系統(tǒng)的硬盤上的數(shù)據(jù)分享
ext4 在裝有較新的 linux 系統(tǒng)的硬盤上的數(shù)據(jù)分享
btrfs 使用只讀快照在裝有較新的 Linux 系統(tǒng)的硬盤上共享數(shù)據(jù)

提示

查看第 9.9.1 節(jié) “使用 dm-crypt/LUKS 加密移動磁盤”來獲得關(guān)于使用設備級加密的跨平臺的數(shù)據(jù)共享的信息。

FAT 文件系統(tǒng)被絕大多數(shù)的現(xiàn)代操作系統(tǒng)支持,它對于通過可移動硬盤進行的數(shù)據(jù)交換是非常有用的。

當格式化像裝有 FAT 文件系統(tǒng)的跨平臺數(shù)據(jù)共享的可移動設備時,以下應該是保險的選擇。

  • fdisk(8),cfdisk(8) 或者 parted(8) 命令(參見第 9.6.2 節(jié) “硬盤分區(qū)配置”)把它們格式化為單個的主分區(qū)并對把它做如下標記。

    • 標記小于 2GB 的 FAT 設備為 字符"6"。

    • 標記更大的 FAT32 設備為字符 "c"。

  • 如下所示是用 mkfs.vfat(8) 命令格式化主分區(qū)的。

    • 它的設備名字,例如 "/dev/sda1" 用于 FAT16 設備

    • 明確的選項和它的設備名,例如 "-F 32 /dev/sda1" 用于 FAT32 設備

當使用 FAT 或 ISO9660 文件系統(tǒng)分享數(shù)據(jù)時,如下是需要注意的安全事項。

  • tar(1),或cpio(1)命令壓縮文件,目地是為了保留文件名,符號鏈接,原始的文件權(quán)限和文件所有者信息。

  • split(1) 命令把壓縮文件分解成若干小于 2GiB的小文件,使其免受文件大小限制。

  • 加密壓縮文件保護其內(nèi)容免受未經(jīng)授權(quán)的訪問。

注意

因為 FAT 文件系統(tǒng)的設計,最大的文件大小為 (2^32 - 1) bytes = (4GiB -1 byte)。對于一些老舊的 32 位系統(tǒng)上的應用程序而言,最大的文件大小甚至更小(2^31 -1) bytes = (2GiB -1 byte)。Debian 沒有遇到后者的問題。

注意

微軟系統(tǒng)本身并不建議在超過 200MB 的分區(qū)或者驅(qū)動器上使用 FAT。他們的 " Overview of FAT, HPFS, and NTFS File Systems 這篇文章突出顯示了微軟系統(tǒng)的缺點,例如低效的磁盤空間利用。當然了,我們在 Linux 系統(tǒng)上還是應該使用 ext4 文件系統(tǒng)。

提示

有關(guān)文件系統(tǒng)和訪問文件系統(tǒng)的更多信息,請參考 "Filesystems HOWTO"。

10.1.9. 網(wǎng)絡上的數(shù)據(jù)分享

當使用網(wǎng)絡來分享數(shù)據(jù)的時候,你應該使用通用的服務。這里有一些提示。

表 10.4. 典型使用場景下可選擇的網(wǎng)絡服務列表

網(wǎng)絡服務 典型使用場景描述
SMB/CIFS 用 Samba 掛載網(wǎng)絡文件系統(tǒng) 通過 “Microsoft Windows 網(wǎng)絡” 分享文件,參見 smb.conf(5) 和 官方 Samba 3.x.x 指導和參考手冊(The Official Samba 3.x.x HOWTO and Reference Guide) 或 samba-doc 軟件包
NFS 用 Linux 內(nèi)核掛載網(wǎng)絡文件系統(tǒng) 通過 “Unix/Linux 網(wǎng)絡" 分享文件,參見 exports(5) 和 Linux NFS-HOWTO
HTTP 服務 在 web 服務器/客戶端之間分享文件
HTTPS 服務 在有加密的安全套接層 (SSL) 或者安全傳輸層 (TLS) 的網(wǎng)絡服務器/客戶端中分享文件
FTP 服務 在 FTP 服務器/客戶端之間分享文件

盡管對于文件分享來說,通過網(wǎng)絡掛載文件系統(tǒng)和傳輸文件是相當方便的,但這可能是不安全的。它們的網(wǎng)絡連接必須通過如下所示的加強安全性。

  • 用 SSL/TLS 加密

  • 建立 SSH 通道

  • 建立 VPN 通道

  • 網(wǎng)絡之間需要有安全的防火墻

參見 第 6.5 節(jié) “其它網(wǎng)絡應用服務” 和 第 6.6 節(jié) “其它網(wǎng)絡應用客戶端”。

10.2. 備份和恢復

我們都熟知計算機有時會出問題,或者由于人為的錯誤導致系統(tǒng)和數(shù)據(jù)損壞。備份和恢復操作是成功的系統(tǒng)管理中非常重要的一部分??赡苡幸惶炷愕碾娔X就會出問題。

提示

保持你的備份系統(tǒng)簡潔并且經(jīng)常備份你的系統(tǒng),有備份數(shù)據(jù)比你采用的備份方法的技術(shù)先進要重要的多。

10.2.1. 備份和恢復策略

有3個關(guān)鍵的因素決定實際的備份和恢復策略。

  1. 知道要備份和恢復什么。

    • 你自己創(chuàng)建的數(shù)據(jù)文件:在 "~/" 下的數(shù)據(jù)

    • 你使用的應用程序創(chuàng)建的數(shù)據(jù)文件:在 "/var/" 下的數(shù)據(jù)(除了 "/var/cache/","/var/run/" 和 "/var/tmp/")

    • 系統(tǒng)配置文件:在 "/etc/” 下的數(shù)據(jù)

    • 本地程序:在 "/usr/local/" 或 "/opt/" 下的數(shù)據(jù)

    • 系統(tǒng)安裝信息:關(guān)鍵步驟 (分區(qū),...) 的純文本備忘錄

    • 驗證數(shù)據(jù)結(jié)果:通過實驗性的恢復操作來預先驗證

      • 用戶進程的 Cron 工作,文件在 "/var/spool/cron/crontabs" 目錄,并且重啟 cron(8)。參見第 9.4.14 節(jié) “定時任務安排”來獲得關(guān)于 cron(8) 和 crontab(1) 的信息。

      • 用戶進程的 Systemd 計時器工作:文件在 "~/.config/systemd/user" 目錄。參見 systemd.timer(5) 和 systemd.service(5)。

      • 用戶進程的自動啟動工作:文件在 "~/.config/autostart" 目錄。參見 Desktop Application Autostart Specification。

  2. 知道怎樣去備份和恢復。

    • 安全的數(shù)據(jù)存儲:保護其免于覆蓋和系統(tǒng)故障

    • 經(jīng)常備份:有計劃的備份

    • 冗余備份:數(shù)據(jù)鏡像

    • 傻瓜式操作:單個簡單命令備份

  3. 評估涉及的風險和成本。

    • 數(shù)據(jù)丟失的風險

      • 數(shù)據(jù)至少是應該在不同的磁盤分區(qū)上,最好是在不同的磁盤和機器上,來承受文件系統(tǒng)發(fā)生的損壞。重要數(shù)據(jù)最好存儲在一個只讀文件系統(tǒng)上。[4]

    • 數(shù)據(jù)非法訪問的風險

      • 敏感的身份數(shù)據(jù),比如 "/etc/ssh/ssh_host_*_key", "~/.gnupg/*", "~/.ssh/*", "~/.local/share/keyrings/*", "/etc/passwd", "/etc/shadow", "popularity-contest.conf", "/etc/ppp/pap-secrets", and "/etc/exim4/passwd.client" 應當使用加密備份。[5] (參見 第 9.9 節(jié) “數(shù)據(jù)加密提示”。)

      • 即使在信任的系統(tǒng)上,也不能夠硬編碼系統(tǒng)登錄密碼或者加密密碼到任何腳本里面。(參見 第 10.3.6 節(jié) “密碼密鑰環(huán)”。)

    • 數(shù)據(jù)丟失的方式及其可能性

      • 硬件(特別是硬盤)將會損壞

      • 文件系統(tǒng)可能會損壞,里面的數(shù)據(jù)可能被丟失

      • 對違規(guī)安全訪問而言,遠程存儲系統(tǒng)不能夠被信任

      • 弱的密碼保護能夠被輕松的破解

      • 文件權(quán)限系統(tǒng)可以被破解

    • 備份所需的資源:人力,硬件,軟件,…

      • 使用 cron 任務或者 systemd 計時器任務來自動化調(diào)度備份工作

注意

除非你知道自己做的是什么,否則不要備份 /proc, /sys, /tmp, 和 /run 目錄下的偽文件系統(tǒng)(參見 第 1.2.12 節(jié) “procfs 和 sysfs” 和 第 1.2.13 節(jié) “tmpfs”)。它們是龐大且無用的數(shù)據(jù)。

注意

當備份數(shù)據(jù)的時候,你可能希望停止一些應用程序的守護進程例如 MTA(參見第 6.2.4 節(jié) “郵件傳輸代理 (MTA)”)。

10.2.2. 實用備份套件

以下是 Debian 系統(tǒng)上值得注意的實用備份程序套件的列表。

表 10.5. 實用備份程序套件列表

軟件包 流行度 大小 說明
dump V:1, I:5 351 4.4 BSD dump(8) 和 restore(8) 命令用于 ext2/ext3/ext4 文件系統(tǒng)
xfsdump V:0, I:8 865 在 GNU/Linux 和 IRIX 上用 xfsdump(8) 和 xfsrestore(8) 命令來備份和恢復 XFS 文件系統(tǒng)
backupninja V:3, I:4 367 輕量的可擴展的 meta-backup 系統(tǒng)
bacula-common V:10, I:13 2158 Bacula: 網(wǎng)絡數(shù)據(jù)備份,恢復和核查-常見的支持文件
bacula-client I:3 183 Bacula: 網(wǎng)絡數(shù)據(jù)備份,恢復和核查-客戶端元軟件包
bacula-console V:1, I:4 107 Bacula: 網(wǎng)絡數(shù)據(jù)備份,恢復和核查-文本終端
bacula-server I:1 183 Bacula: 網(wǎng)絡數(shù)據(jù)備份,恢復和核查-服務器端元軟件包
amanda-common V:0, I:2 10090 Amanda: 馬里蘭大學開發(fā)的高級自動化網(wǎng)絡磁盤歸檔器(庫)
amanda-client V:0, I:2 1149 Amanda: 馬里蘭大學開發(fā)的高級自動化網(wǎng)絡磁盤歸檔器(客戶端)
amanda-server V:0, I:0 1117 Amanda: 馬里蘭大學開發(fā)的高級自動化網(wǎng)絡磁盤歸檔器(服務器端)
backup-manager V:0, I:1 571 命令行備份工具
backup2l V:0, I:1 115 用于可掛載媒介 (基于磁盤的) 的低維護的備份/恢復工具
backuppc V:2, I:3 3184 BackupPC 是用于備份 PC 機數(shù)據(jù)(基于磁盤)的高性能的企業(yè)級工具
duplicity V:15, I:36 1867 (遠程) 增量備份
flexbackup V:0, I:0 243 (遠程) 增量備份
rdiff-backup V:5, I:13 769 (遠程) 增量備份
restic V:2, I:4 21080 (遠程) 增量備份
slbackup V:0, I:0 151 (遠程) 增量備份

備份工具有各自的專用的用途。

  • Mondo Rescue 是一個備份系統(tǒng),它能夠方便的從備份 CD/DVD 等設備中快速恢復整個系統(tǒng),而不需要經(jīng)過常規(guī)的系統(tǒng)安裝過程。

  • Bacula,Amanda 和 BackupPC 是全功能的備份實用套件,主要用于聯(lián)網(wǎng)的定期備份。

  • 定期備份用戶數(shù)據(jù),可以通過一個簡單的腳本實現(xiàn) (第 10.2.3 節(jié) “個人備份”)。

第 10.1.1 節(jié) “存檔和壓縮工具” 和 第 10.1.2 節(jié) “復制和同步工具” 描述的基礎(chǔ)工具能夠通過自定義腳本來幫助系統(tǒng)備份。這些腳本的功能可以通過如下的工具來增強。

  • restic 軟件包能夠增量備份(遠程)。

  • rdiff-backup 軟件包能夠增量備份(遠程)。

  • dump 軟件包用于高效增量的歸檔和恢復整個文件系統(tǒng)。

提示

參見 "/usr/share/doc/dump/" 和 "Is dump really deprecated?" 來了解 dump 程序。

10.2.3. 個人備份

對于運行 testing 套件的個人 Debian 桌面系統(tǒng)來說,只需要保護個人數(shù)據(jù)和關(guān)鍵數(shù)據(jù)。我不管怎樣每年都會重新安裝一次系統(tǒng)。因此沒理由去備份整個系統(tǒng)或者安裝全功能的備份實用程序。

與此同時,有一定頻率的最近的個人數(shù)據(jù)和系統(tǒng)配置快照的備份,加上偶爾個人數(shù)據(jù)的全備份,是非常有價值的。

我經(jīng)常使用一個簡單的 shell 腳本 bss 來制作這些快照和備份。這個腳本是一個短小的 shell,使用標準工具:btrfs 子卷快照、 rsync。對于加密的數(shù)據(jù),磁盤鏡像由 fallocate(1) 創(chuàng)建并由 cryptsetup(8) 配置。

提示

你能夠用 "debconf-set-selections debconf-selections" 命令恢復 debconf 配置數(shù)據(jù),可以用 "dpkg --set-selection " 命令恢復 dpkg 篩選數(shù)據(jù)。

10.3. 數(shù)據(jù)安全基礎(chǔ)

數(shù)據(jù)安全基礎(chǔ)設施是數(shù)據(jù)加密,訊息摘要和簽名工具的結(jié)合。

表 10.6. 數(shù)據(jù)安全基礎(chǔ)工具列表

軟件包 流行度 大小 命令 說明
gnupg V:543, I:931 864 gpg(1) GNU 隱私衛(wèi)士 - OpenPGP 加密和簽名工具
gpgv V:873, I:999 882 gpgv(1) GNU 隱私衛(wèi)士 - 簽名驗證工具
paperkey V:1, I:14 58 paperkey(1) 從 OpenPGP 私鑰里面,僅僅導出私密信息
cryptsetup V:16, I:79 448 cryptsetup(8), … dm-crypt 塊設備加密支持 LUKS 工具
coreutils V:898, I:999 17372 md5sum(1) 計算與校驗 MD5 訊息摘要
coreutils V:898, I:999 17372 sha1sum(1) 計算與校驗 SHA1 訊息摘要
openssl V:810, I:994 1465 openssl(1ssl) 使用 "openssl dgst" (OpenSSL)計算信息摘要
libsecret-tools V:1, I:10 44 secret-tool(1) 存儲和取回密碼 (CLI)
seahorse V:76, I:254 7812 seahorse(1) 密鑰管理工具(GNOME)

參見 第 9.9 節(jié) “數(shù)據(jù)加密提示” 的 dm-crypt 和 fscrypt,它們通過 Linux 內(nèi)核模塊實現(xiàn)了自動數(shù)據(jù)加密架構(gòu)。

10.3.1. GnuPG 密鑰管理

如下是 GNU 隱私衛(wèi)士 基本的密鑰管理命令。

表 10.7. GNU 隱私衛(wèi)士密鑰管理命令的列表

命令 說明
gpg --gen-key 生成一副新的密鑰對
gpg --gen-revoke my_user_ID 生成 my_user_ID 的一份吊銷證書
gpg --edit-key user_ID 交互式的編輯密鑰,輸入 "help" 來獲得幫助信息
gpg -o file --export 把所有的密鑰輸出到文件
gpg --import file 從文件導入密鑰
gpg --send-keys user_ID 發(fā)送 user_ID 的公鑰到公鑰服務器
gpg --recv-keys user_ID 從公鑰服務器下載 user_ID 的公鑰
gpg --list-keys user_ID 列出 user_ID 的所有密鑰
gpg --list-sigs user_ID 列出 user_ID 的簽字
gpg --check-sigs user_ID 檢查 user_ID 密鑰簽字
gpg --fingerprint user_ID 檢查 user_ID 的指紋
gpg --refresh-keys 更新本地密鑰

信任碼含義.

表 10.8. 信任碼含義列表

代碼 信任描述
- 沒有所有者信任簽名/沒有計算
e 信任計算失敗
q 沒有足夠的信息用于計算
n 從不信任這個鍵
m 最低限度的信任
f 完全信任
u 最終信任

如下命令上傳我的 "1DD8D791" 公鑰到主流的公鑰服務器 "hkp://keys.gnupg.net"。

$ gpg --keyserver hkp://keys.gnupg.net --send-keys 1DD8D791

默認良好的公鑰服務器在 "~/.gnupg/gpg.conf" (舊的位置在 "~/.gnupg/options")文件中設置,此文件包含了以下信息。

keyserver hkp://keys.gnupg.net

從鑰匙服務器獲取無名鑰匙。

$ gpg --list-sigs --with-colons | grep '^sig.*\[User ID not found\]' |\
  cut -d ':' -f 5| sort | uniq | xargs gpg --recv-keys

有一個錯誤在 OpenPGP 公鑰服務器 (先前的版本 0.9.6),會將鍵中斷為 2 個以上的子鍵。新的 gnupg (>1.2.1-2) 軟件包能夠處理這些中斷的子鍵。參見 gpg(1) 下的 "--repair-pks-subkey-bug" 選項.

10.3.2. 在文件上使用 GnuPG

這里有一些在文件上使用 GNU 隱私衛(wèi)士 命令的例子。

表 10.9. 在文件上使用的 GNU 隱私衛(wèi)士的命令列表

命令 說明
gpg -a -s file ASCII 封裝的簽名文件 file.asc
gpg --armor --sign file 同上
gpg --clearsign file 生成明文簽字信息
gpg --clearsign file|mail foo@example.org 發(fā)送一份明文簽字到 foo@example.org
gpg --clearsign --not-dash-escaped patchfile 明文簽名的補丁文件
gpg --verify file 驗證明文文件
gpg -o file.sig -b file 生成一份分離的簽字
gpg -o file.sig --detach-sig file 同上
gpg --verify file.sig file 使用 file.sig 驗證文件
gpg -o crypt_file.gpg -r name -e file 公鑰加密,從文件里面獲取名字,生成二進制的 crypt_file.gpg
gpg -o crypt_file.gpg --recipient name --encrypt file 同上
gpg -o crypt_file.asc -a -r name -e file 公鑰加密,從文件中獲取名字,生成 ASCII 封裝的 crypt_file.asc
gpg -o crypt_file.gpg -c file 將文件對稱加密到 crypt_file.gpg
gpg -o crypt_file.gpg --symmetric file 同上
gpg -o crypt_file.asc -a -c file 對稱加密,從文件到 ASCII 封裝的 crypt_file.asc
gpg -o file -d crypt_file.gpg -r name 解密
gpg -o file --decrypt crypt_file.gpg 同上

10.3.3. 在 Mutt 中使用 GnuPG

增加下面內(nèi)容到 "~/.muttrc",在自動啟動時,避免一個慢的 GnuPG,在索引菜單中按 "S" 來允許它使用。

macro index S ":toggle pgp_verify_sig\n"
set pgp_verify_sig=no

10.3.4. 在 Vim 中使用 GnuPG

gnupg 插件可以讓你對擴展名為 ".gpg", ".asc", 和 ".ppg"的文件可靠的運行 GnuPG。[6]

$ sudo aptitude install vim-scripts
$ echo "packadd! gnupg" >> ~/.vim/vimrc

10.3.5. MD5 校驗和

md5sum(1) 提供了制作摘要文件的一個工具,它使用 rfc1321 里的方式制作摘要文件.

$ md5sum foo bar >baz.md5
$ cat baz.md5
d3b07384d113edec49eaa6238ad5ff00  foo
c157a79031e1c40f85931829bc5fc552  bar
$ md5sum -c baz.md5
foo: OK
bar: OK
注意

MD5 校驗和的 CPU 計算強度是比 GNU Privacy Guard (GnuPG) 加密簽名要少的.在通常情況下,只有頂級的摘要文件才需要加密簽名來確保數(shù)據(jù)完整性.

10.3.6. 密碼密鑰環(huán)

在 GNOME 系統(tǒng),GUI(圖形用戶界面)工具 seahorse(1) 管理密碼,安全的在密鑰環(huán) ~/.local/share/keyrings/* 里面保存它們。

secret-tool(1) 能夠從命令行存儲密碼到鑰匙環(huán)。

讓我們存儲 LUKS/dm-crypt 加密磁盤鏡像用到的密碼

$ secret-tool store --label='LUKS passphrase for disk.img' LUKS my_disk.img
Password: ********

這個存儲的密碼能夠被獲取并給到其它程序,比如 cryptsetup(8)。

$ secret-tool lookup LUKS my_disk.img | \
  cryptsetup open disk.img disk_img --type luks --keyring -
$ sudo mount /dev/mapper/disk_img /mnt
提示

無論何時,你需要在一個腳本里面提供密碼時,使用 secret-tool 來避免將密碼直接硬編碼到腳本里面。

10.4. 源代碼合并工具

這里有許多源代碼合并工具。如下的是我感興趣的工具。

表 10.10. 源代碼合并工具列表

    軟件包 流行度 大小 命令 說明
    patch V:73, I:711 248 patch(1) 給原文件打補丁
    vim V:100, I:394 網(wǎng)頁題目:【Debian參考手冊】第?10?章?數(shù)據(jù)管理
    URL分享:http://www.5511xx.com/article/cdoiecj.html