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

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

新聞中心

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

目錄

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

10.1. 共享,拷貝和存檔
10.1.1. 存檔和壓縮工具
10.1.2. 復(fù)制和同步工具
10.1.3. 歸檔語法
10.1.4. 復(fù)制語法
10.1.5. 查找文件的語法
10.1.6. 歸檔媒體
10.1.7. 可移動(dòng)存儲(chǔ)設(shè)備
10.1.8. 選擇用于分享數(shù)據(jù)的文件系統(tǒng)
10.1.9. 網(wǎng)絡(luò)上的數(shù)據(jù)分享
10.2. 備份和恢復(fù)
10.2.1. 備份和恢復(fù)策略
10.2.2. 實(shí)用備份套件
10.2.3. 個(gè)人備份
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 校驗(yàn)和
10.3.6. 密碼密鑰環(huán)
10.4. 源代碼合并工具
10.4.1. 從源代碼文件導(dǎo)出差異
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)上管理二進(jìn)制和文本數(shù)據(jù)的工具及其相關(guān)提示。

10.1. 共享,拷貝和存檔

警告

為避免 競(jìng)爭(zhēng)情況,不應(yīng)當(dāng)對(duì)正在進(jìn)行寫操作的設(shè)備和文件,多個(gè)進(jìn)程進(jìn)行不協(xié)調(diào)的寫操作。采用flock(1) 的 文件鎖定 機(jī)制可用于避免這種情況。

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

  • 存檔文件的建立

  • 遠(yuǎn)程存儲(chǔ)訪問

  • 復(fù)制

  • 跟蹤修改歷史

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

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

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

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

  • 存檔和壓縮工具

  • 復(fù)制和同步工具

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

  • 移動(dòng)存儲(chǔ)媒介

  • 安全 shell

  • 認(rèn)證體系

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

  • 哈希算法和加密工具

10.1.1. 存檔和壓縮工具

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

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

軟件包 流行度 大小 擴(kuò)展名 命令 描述
tar V:907, I:999 3152 .tar tar(1) 標(biāo)準(zhǔn)的歸檔工具(默認(rèn))
cpio V:383, I:998 1140 .cpio cpio(1) Unix System V 風(fēng)格的歸檔器,與 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 壓縮工具(默認(rèn))
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 解檔器和解壓縮工具

警告

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

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

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

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

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

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

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

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

10.1.2. 復(fù)制和同步工具

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

表 10.2. 復(fù)制和同步工具列表

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

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

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

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

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

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

提示

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

10.1.3. 歸檔語法

以下是用不同的工具壓縮和解壓縮整個(gè) "./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. 復(fù)制語法

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

  • 本地復(fù)制: "./source" 目錄 → "/dest" 目錄

  • 遠(yuǎn)程復(fù)制:本地主機(jī)上的 "./source" 目錄 → "user@host.dom" 主機(jī)上的 "/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" 目錄復(fù)制文件到 "/dest/foo" 目錄。

在所有包含 "." 的列子里,你能夠使用絕對(duì)路徑 "/path/to/source/foo" 來代替 ".",這樣可以去掉 "cd ./source;". 如下所示,這些文件會(huì)根據(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" 選項(xiàng)來忽略接受端上更新的文件。

10.1.5. 查找文件的語法

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

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

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

  • 一旦輸出是確定的,那么運(yùn)算就會(huì)停止。

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

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

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

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

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

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

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

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

如下是 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

這些命令會(huì)執(zhí)行如下動(dòng)作。

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

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

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

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

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

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

請(qǐng)留心以上例子中的 "-prune -o" 排除文件的習(xí)慣用法。

注意

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

10.1.6. 歸檔媒體

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

注意

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

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

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

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

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

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

這不包括由于人為導(dǎo)致的機(jī)械故障等等。

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

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

  • 大于10,000次:閃存

  • 1,000次:CD/DVD-RW

  • 1次:CD/DVD-R,紙

小心

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

提示

因?yàn)?CD/DVD-R 和 紙只能寫一次,它們從根本上阻止了因?yàn)橹貙憣?dǎo)致的數(shù)據(jù)意外丟失。這是優(yōu)點(diǎn)!

提示

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

提示

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

10.1.7. 可移動(dòng)存儲(chǔ)設(shè)備

可移動(dòng)存儲(chǔ)設(shè)備可能是以下的任何一種。

  • USB 閃存盤

  • 硬盤驅(qū)動(dòng)器

  • 光盤驅(qū)動(dòng)器

  • 數(shù)碼相機(jī)

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

它們可以通過以下的方式來進(jìn)行連接。

  • USB

  • IEEE 1394 / FireWire

  • PC 卡

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

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

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

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

提示

umount(8) 在自動(dòng)掛載設(shè)備的時(shí)候可能會(huì)帶有 "uhelper=" 參數(shù)。

提示

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

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

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

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

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

提示

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

提示

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

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

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

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

文件系統(tǒng)名 典型使用場(chǎng)景
FAT12 軟盤(<32MiB)上跨平臺(tái)的數(shù)據(jù)分享
FAT16 在小硬盤(<2GiB)上的跨平臺(tái)的數(shù)據(jù)分享
FAT32 在大硬盤(<8TiB,被 MS Windows95 OSR2 以上的操作系統(tǒng)所支持) 上的跨平臺(tái)的數(shù)據(jù)分享
exFAT 在大硬盤類設(shè)備上跨平臺(tái)共享數(shù)據(jù)(<512TiB,被 WindowsXP, Mac OS X Snow Leopard 10.6.5 和 Linux 內(nèi)核 5.4 版本以上的操作系統(tǒng)所支持)
NTFS 在大硬盤類設(shè)備上的跨平臺(tái)共享數(shù)據(jù) (在 MS Windows NT 和后續(xù)版本原生支持;在 Linux 上,通過使用 FUSE 的 NTFS-3G 支持。)
ISO9660 在 CD-R 和 DVD+/-R 上的跨平臺(tái)的靜態(tài)數(shù)據(jù)分享
UDF CD-R 和 DVD+/-R (新)上的增量數(shù)據(jù)寫入
MINIX 軟盤上磁盤空間高利用率的 unix 文件數(shù)據(jù)存儲(chǔ)
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 加密移動(dòng)磁盤”來獲得關(guān)于使用設(shè)備級(jí)加密的跨平臺(tái)的數(shù)據(jù)共享的信息。

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

當(dāng)格式化像裝有 FAT 文件系統(tǒng)的跨平臺(tái)數(shù)據(jù)共享的可移動(dòng)設(shè)備時(shí),以下應(yīng)該是保險(xiǎn)的選擇。

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

    • 標(biāo)記小于 2GB 的 FAT 設(shè)備為 字符"6"。

    • 標(biāo)記更大的 FAT32 設(shè)備為字符 "c"。

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

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

    • 明確的選項(xiàng)和它的設(shè)備名,例如 "-F 32 /dev/sda1" 用于 FAT32 設(shè)備

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

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

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

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

注意

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

注意

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

提示

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

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

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

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

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

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

  • 用 SSL/TLS 加密

  • 建立 SSH 通道

  • 建立 VPN 通道

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

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

10.2. 備份和恢復(fù)

我們都熟知計(jì)算機(jī)有時(shí)會(huì)出問題,或者由于人為的錯(cuò)誤導(dǎo)致系統(tǒng)和數(shù)據(jù)損壞。備份和恢復(fù)操作是成功的系統(tǒng)管理中非常重要的一部分。可能有一天你的電腦就會(huì)出問題。

提示

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

10.2.1. 備份和恢復(fù)策略

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

  1. 知道要備份和恢復(fù)什么。

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

    • 你使用的應(yīng)用程序創(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ū),...) 的純文本備忘錄

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

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

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

      • 用戶進(jìn)程的自動(dòng)啟動(dòng)工作:文件在 "~/.config/autostart" 目錄。參見 Desktop Application Autostart Specification。

  2. 知道怎樣去備份和恢復(fù)。

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

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

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

    • 傻瓜式操作:?jiǎn)蝹€(gè)簡(jiǎn)單命令備份

  3. 評(píng)估涉及的風(fēng)險(xiǎn)和成本。

    • 數(shù)據(jù)丟失的風(fēng)險(xiǎn)

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

    • 數(shù)據(jù)非法訪問的風(fēng)險(xiǎn)

      • 敏感的身份數(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" 應(yīng)當(dāng)使用加密備份。[5] (參見 第 9.9 節(jié) “數(shù)據(jù)加密提示”。)

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

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

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

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

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

      • 弱的密碼保護(hù)能夠被輕松的破解

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

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

      • 使用 cron 任務(wù)或者 systemd 計(jì)時(shí)器任務(wù)來自動(dòng)化調(diào)度備份工作

注意

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

注意

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

10.2.2. 實(shí)用備份套件

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

表 10.5. 實(shí)用備份程序套件列表

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

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

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

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

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

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

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

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

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

提示

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

10.2.3. 個(gè)人備份

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

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

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

提示

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

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

數(shù)據(jù)安全基礎(chǔ)設(shè)施是數(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)士 - 簽名驗(yàn)證工具
paperkey V:1, I:14 58 paperkey(1) 從 OpenPGP 私鑰里面,僅僅導(dǎo)出私密信息
cryptsetup V:16, I:79 448 cryptsetup(8), … dm-crypt 塊設(shè)備加密支持 LUKS 工具
coreutils V:898, I:999 17372 md5sum(1) 計(jì)算與校驗(yàn) MD5 訊息摘要
coreutils V:898, I:999 17372 sha1sum(1) 計(jì)算與校驗(yàn) SHA1 訊息摘要
openssl V:810, I:994 1465 openssl(1ssl) 使用 "openssl dgst" (OpenSSL)計(jì)算信息摘要
libsecret-tools V:1, I:10 44 secret-tool(1) 存儲(chǔ)和取回密碼 (CLI)
seahorse V:76, I:254 7812 seahorse(1) 密鑰管理工具(GNOME)

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

10.3.1. GnuPG 密鑰管理

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

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

命令 說明
gpg --gen-key 生成一副新的密鑰對(duì)
gpg --gen-revoke my_user_ID 生成 my_user_ID 的一份吊銷證書
gpg --edit-key user_ID 交互式的編輯密鑰,輸入 "help" 來獲得幫助信息
gpg -o file --export 把所有的密鑰輸出到文件
gpg --import file 從文件導(dǎo)入密鑰
gpg --send-keys user_ID 發(fā)送 user_ID 的公鑰到公鑰服務(wù)器
gpg --recv-keys user_ID 從公鑰服務(wù)器下載 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. 信任碼含義列表

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

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

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

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

keyserver hkp://keys.gnupg.net

從鑰匙服務(wù)器獲取無名鑰匙。

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

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

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 明文簽名的補(bǔ)丁文件
gpg --verify file 驗(yàn)證明文文件
gpg -o file.sig -b file 生成一份分離的簽字
gpg -o file.sig --detach-sig file 同上
gpg --verify file.sig file 使用 file.sig 驗(yàn)證文件
gpg -o crypt_file.gpg -r name -e file 公鑰加密,從文件里面獲取名字,生成二進(jìn)制的 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 將文件對(duì)稱加密到 crypt_file.gpg
gpg -o crypt_file.gpg --symmetric file 同上
gpg -o crypt_file.asc -a -c file 對(duì)稱加密,從文件到 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",在自動(dòng)啟動(dòng)時(shí),避免一個(gè)慢的 GnuPG,在索引菜單中按 "S" 來允許它使用。

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

10.3.4. 在 Vim 中使用 GnuPG

gnupg 插件可以讓你對(duì)擴(kuò)展名為 ".gpg", ".asc", 和 ".ppg"的文件可靠的運(yùn)行 GnuPG。[6]

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

10.3.5. MD5 校驗(yàn)和

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

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

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

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

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

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

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

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

這個(gè)存儲(chǔ)的密碼能夠被獲取并給到其它程序,比如 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
提示

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

10.4. 源代碼合并工具

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

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

<strike id="6trzu"></strike>
軟件包 流行度 大小 命令 說明
patch V:73, I:711 248 patch(1) 給原文件打補(bǔ)丁
vim V:100, I:394 網(wǎng)站標(biāo)題:【Debian參考手冊(cè)】第?10?章?數(shù)據(jù)管理
鏈接地址:http://m.5511xx.com/article/cdoiecj.html