新聞中心
目錄

創(chuàng)新互聯(lián)建站企業(yè)建站,10余年網(wǎng)站建設(shè)經(jīng)驗,專注于網(wǎng)站建設(shè)技術(shù),精于網(wǎng)頁設(shè)計,有多年建站和網(wǎng)站代運營經(jīng)驗,設(shè)計師為客戶打造網(wǎng)絡(luò)企業(yè)風(fēng)格,提供周到的建站售前咨詢和貼心的售后服務(wù)。對于成都網(wǎng)站設(shè)計、成都做網(wǎng)站中不同領(lǐng)域進(jìn)行深入了解和探索,創(chuàng)新互聯(lián)在網(wǎng)站建設(shè)中充分了解客戶行業(yè)的需求,以靈動的思維在網(wǎng)頁中充分展現(xiàn),通過對客戶行業(yè)精準(zhǔn)市場調(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. 可移動存儲設(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. 實用備份套件
- 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. 從源代碼文件導(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. 共享,拷貝和存檔
| 警告 | |
|---|---|
|
為避免 競爭情況,不應(yīng)當(dāng)對正在進(jìn)行寫操作的設(shè)備和文件,多個進(jìn)程進(jìn)行不協(xié)調(diào)的寫操作。采用 |
數(shù)據(jù)的安全和它的受控共享有如下幾個方面。
-
存檔文件的建立
-
遠(yuǎn)程存儲訪問
-
復(fù)制
-
跟蹤修改歷史
-
促進(jìn)數(shù)據(jù)共享
-
防止未經(jīng)授權(quán)的文件訪問
-
檢測未經(jīng)授權(quán)的文件修改
這些可以通過使用工具集來實現(xiàn)。
-
存檔和壓縮工具
-
復(fù)制和同步工具
-
網(wǎng)絡(luò)文件系統(tǒng)
-
移動存儲媒介
-
安全 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 歸檔工具,介于 tar 和 cpio 之間 |
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 解檔器和解壓縮工具 |
| 警告 | |
|---|---|
|
除非你知道將會發(fā)生什么,否則不要設(shè)置 " |
-
gzipped
tar(1) 歸檔器用于擴(kuò)展名是 ".tgz" 或者 ".tar.gz" 的文件。 -
xz-compressed
tar(1) 歸檔器用于擴(kuò)展名是 ".txz" 或者 ".tar.xz" 的文件。 -
FOSS 工具,例如
tar(1),中的主流壓縮方法已經(jīng)按如下所示的遷移:gzip→bzip2→xz -
cp(1),scp(1) 和tar(1) 工具可能并不適用于一些特殊的文件。cpio(1) 工具的適用范圍是最廣的。 -
cpio(1) 是被設(shè)計為與find(1) 和其它命令一起使用,適合于創(chuàng)建備份腳本的場景,因此,腳本的文件選擇部分能夠被獨立測試。 -
Libreoffice 數(shù)據(jù)文件的內(nèi)部結(jié)構(gòu)是 "
.jar" 文件,它也可以使用unzip工具來打開。 -
事實上跨平臺支持最好的存檔工具是
zip。按照“zip -rX”的方式調(diào)用可以獲得最大的兼容性。如果最大文件大小需要納入考慮范圍,請同時配合“-s”選項使用。
10.1.2. 復(fù)制和同步工具
以下是 Debian 系統(tǒng)上的可用的簡單復(fù)制和備份工具的預(yù)覽。
表 10.2. 復(fù)制和同步工具列表
| 軟件包 | 流行度 | 大小 | 工具 | 功能 |
|---|---|---|---|---|
coreutils |
V:898, I:999 | 17372 | GNU cp | 復(fù)制本地文件和目錄("-a" 參數(shù)實現(xiàn)遞歸) |
openssh-client |
V:828, I:997 | 5650 | scp | 復(fù)制遠(yuǎn)端文件和目錄(客戶端,"-r" 參數(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ù)制文件的時候, rsync(8) 比其他工具提供了更多的特性。
-
差分傳輸算法只會發(fā)送源文件與已存在的目標(biāo)文件之間的差異部分
-
快速檢查算法 (默認(rèn)) 會查找大小或者最后的修改時間有變化的文件
-
"
--exclude" 和 "--exclude-from" 選項類似于tar(1) -
在源目錄中添加反斜杠的語法能夠避免在目標(biāo)文件中創(chuàng)建額外的目錄級別。
| 提示 | |
|---|---|
|
在 表 10.14 “其它版本控制系統(tǒng)工具列表” 中的版本控制系統(tǒng) (VCS) 可以被認(rèn)為是多路拷貝和同步工具。 |
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. 復(fù)制語法
如下是用不同的工具復(fù)制整個 "./source" 目錄中的內(nèi)容。
-
本地復(fù)制: "
./source" 目錄 → "/dest" 目錄 -
遠(yuǎn)程復(fù)制:本地主機(jī)上的 "
./source" 目錄→ "[email protected]" 主機(jī)上的 "/dest" 目錄
rsync(8):
# cd ./source; rsync -aHAXSv . /dest # cd ./source; rsync -aHAXSv . [email protected]:/dest
你能夠選擇使用“源目錄上的反斜杠”語法。
# rsync -aHAXSv ./source/ /dest # rsync -aHAXSv ./source/ [email protected]:/dest
或者,如下所示。
# cd ./source; find . -print0 | rsync -aHAXSv0 --files-from=- . /dest # cd ./source; find . -print0 | rsync -aHAXSv0 --files-from=- . [email protected]:/dest
GNU cp(1) 和 openSSH scp(1):
# cd ./source; cp -a . /dest # cd ./source; scp -pr . [email protected]:/dest
GNU tar(1):
# (cd ./source && tar cf - . ) | (cd /dest && tar xvfp - ) # (cd ./source && tar cf - . ) | ssh [email protected] '(cd /dest && tar xvfp - )'
cpio(1):
# cd ./source; find . -print0 | cpio -pvdm --null --sparse /dest
你能夠在所有包含 "." 的例子里用 "foo" 替代 ".",這樣就可以從 "./source/foo" 目錄復(fù)制文件到 "/dest/foo" 目錄。
在所有包含 "." 的列子里,你能夠使用絕對路徑 "/path/to/source/foo" 來代替 ".",這樣可以去掉 "cd ./source;". 如下所示,這些文件會根據(jù)工具的不同,拷貝到不同的位置。
-
"
/dest/foo":rsync(8), GNUcp(1), 和scp(1) -
"
/dest/path/to/source/foo": GNUtar(1), 和cpio(1)
| 提示 | |
|---|---|
|
|
10.1.5. 查找文件的語法
find(1) 被用作從歸檔中篩選文件也被用作拷貝命令 (參見第 10.1.3 節(jié) “歸檔語法”和第 10.1.4 節(jié) “復(fù)制語法”) 或者用于 xargs(1) (參見第 9.4.9 節(jié) “使用文件循環(huán)來重復(fù)一個命令”)。通過 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" 匹配整個文件路徑,默認(rèn)采用 emacs 風(fēng)格的 BRE (參見第 1.6.2 節(jié) “正則表達(dá)式”)。 -
"
-size" 根據(jù)文件大小來匹配 (值前面帶有 "+" 號匹配更大的文件,值前面帶有 "-" 號匹配更小的文件) -
"
-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
這些命令會執(zhí)行如下動作。
-
查找 "
/path/to" 下的所有文件 -
限定全局查找的文件系統(tǒng)并且使用的是 ERE (參見第 1.6.2 節(jié) “正則表達(dá)式”)
-
通過停止處理的方式來排除匹配 "
.*\.cpio" 或 ".*~" 正則表達(dá)式的文件 -
通過停止處理的方式來排除匹配 "
.*/\.git" 正則表達(dá)式的目錄 -
通過停止處理的方式來排除比 99MB (1048576字節(jié)單元) 更大的文件
-
顯示文件名,滿足以上搜索條件并且比 "
/path/to/timestamp" 新的文件
請留心以上例子中的 "-prune -o" 排除文件的習(xí)慣用法。
| 注意 | |
|---|---|
|
對于非 Debian 系的 Unix-like 系統(tǒng),有些參數(shù)可能不被 |
10.1.6. 歸檔媒體
為重要的數(shù)據(jù)存檔尋找 存儲設(shè)備 時,你應(yīng)該注意它們的局限性。對于小型的個人數(shù)據(jù)備份,我使用品牌公司的 CD-R 和 DVD-R 然后把它放在陰涼、干燥、清潔的地方。(專業(yè)的一般使用磁帶存檔介質(zhì))
| 注意 | |
|---|---|
|
防火安全是對于紙質(zhì)文檔來說的,大多數(shù)的計算機(jī)數(shù)據(jù)存儲媒介耐熱性比紙差。我經(jīng)常依賴存儲在多個安全地點的加密拷貝。 |
網(wǎng)上(主要是來源于供應(yīng)商信息)可以查看存儲介質(zhì)的最大使用壽命。
-
大于100年:用墨水的無酸紙
-
100年:光盤存儲(CD/DVD,CD/DVD-R)
-
30年:磁帶存儲(磁帶,軟盤)
-
20年:相變光盤存儲(CD-RW)
這不包括由于人為導(dǎo)致的機(jī)械故障等等。
網(wǎng)上(主要來源于供應(yīng)商信息)可以查看存儲介質(zhì)的最大的寫次數(shù)。
-
大于250,000次:硬盤驅(qū)動器
-
大于10,000次:閃存
-
1,000次:CD/DVD-RW
-
1次:CD/DVD-R,紙
| 小心 | |
|---|---|
|
這里的存儲壽命和寫次數(shù)的數(shù)據(jù)不應(yīng)該被用來決定任何用于關(guān)鍵數(shù)據(jù)的存儲媒介,請翻閱制造商提供的特定產(chǎn)品的說明。 |
| 提示 | |
|---|---|
|
因為 CD/DVD-R 和 紙只能寫一次,它們從根本上阻止了因為重寫導(dǎo)致的數(shù)據(jù)意外丟失。這是優(yōu)點! |
| 提示 | |
|---|---|
|
如果你需要更快更頻繁的進(jìn)行大數(shù)據(jù)備份,那么通過高速網(wǎng)絡(luò)連接的遠(yuǎn)端主機(jī)上的硬盤來實現(xiàn)備份,可能是唯一可行的方法。 |
| 提示 | |
|---|---|
|
如果你在使用一個可重復(fù)寫入的介質(zhì)作為你的備份介質(zhì),使用支持只讀快照的 btrfs 或 zfs 文件系統(tǒng),也許是一個好注意。 |
10.1.7. 可移動存儲設(shè)備
可移動存儲設(shè)備可能是以下的任何一種。
-
USB 閃存盤
-
硬盤驅(qū)動器
-
光盤驅(qū)動器
-
數(shù)碼相機(jī)
-
數(shù)字音樂播放器
它們可以通過以下的方式來進(jìn)行連接。
-
USB
-
IEEE 1394 / FireWire
-
PC 卡
像 GNOME 和 KDE 這樣的現(xiàn)代桌面環(huán)境能夠在 "/etc/fstab" 文件中沒有匹配條目的時候,自動掛載這些可移動設(shè)備。
-
udisks2包提供了守護(hù)進(jìn)程和相關(guān)的實用程序來掛載和卸載這些設(shè)備。 -
D-bus 創(chuàng)建事件來觸發(fā)自動處理。
-
PolicyKit 提供了所需的特權(quán)。
| 提示 | |
|---|---|
|
|
| 提示 | |
|---|---|
|
只有當(dāng)這些可移動設(shè)備沒有在 " |
現(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)設(shè)備節(jié)點例如 " |
10.1.8. 選擇用于分享數(shù)據(jù)的文件系統(tǒng)
當(dāng)你通過可移動存儲設(shè)備與其他系統(tǒng)分享數(shù)據(jù)的時候,你應(yīng)該先把它格式化為被兩種操作系統(tǒng)都支持的通用的 文件系統(tǒng)。下面是文件系統(tǒng)的列表。
表 10.3. 典型使用場景下可移動存儲設(shè)備可選擇的文件系統(tǒng)列表
| 文件系統(tǒng)名 | 典型使用場景 |
|---|---|
| FAT12 | 軟盤(<32MiB)上跨平臺的數(shù)據(jù)分享 |
| FAT16 | 在小硬盤(<2GiB)上的跨平臺的數(shù)據(jù)分享 |
| FAT32 | 在大硬盤(<8TiB,被 MS Windows95 OSR2 以上的操作系統(tǒng)所支持) 上的跨平臺的數(shù)據(jù)分享 |
| exFAT | 在大硬盤類設(shè)備上跨平臺共享數(shù)據(jù)(<512TiB,被 WindowsXP, Mac OS X Snow Leopard 10.6.5 和 Linux 內(nèi)核 5.4 版本以上的操作系統(tǒng)所支持) |
| NTFS | 在大硬盤類設(shè)備上的跨平臺共享數(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è)備級加密的跨平臺的數(shù)據(jù)共享的信息。 |
FAT 文件系統(tǒng)被絕大多數(shù)的現(xiàn)代操作系統(tǒng)支持,它對于通過可移動硬盤進(jìn)行的數(shù)據(jù)交換是非常有用的。
當(dāng)格式化像裝有 FAT 文件系統(tǒng)的跨平臺數(shù)據(jù)共享的可移動設(shè)備時,以下應(yīng)該是保險的選擇。
-
用
fdisk(8),cfdisk(8) 或者parted(8) 命令(參見第 9.6.2 節(jié) “硬盤分區(qū)配置”)把它們格式化為單個的主分區(qū)并對把它做如下標(biāo)記。-
標(biāo)記小于 2GB 的 FAT 設(shè)備為 字符"6"。
-
標(biāo)記更大的 FAT32 設(shè)備為字符 "c"。
-
-
如下所示是用
mkfs.vfat(8) 命令格式化主分區(qū)的。-
它的設(shè)備名字,例如 "
/dev/sda1" 用于 FAT16 設(shè)備 -
明確的選項和它的設(shè)備名,例如 "
-F 32 /dev/sda1" 用于 FAT32 設(shè)備
-
當(dāng)使用 FAT 或 ISO9660 文件系統(tǒng)分享數(shù)據(jù)時,如下是需要注意的安全事項。
-
用
tar(1),或cpio(1)命令壓縮文件,目地是為了保留文件名,符號鏈接,原始的文件權(quán)限和文件所有者信息。 -
用
split(1) 命令把壓縮文件分解成若干小于 2GiB的小文件,使其免受文件大小限制。 -
加密壓縮文件保護(hù)其內(nèi)容免受未經(jīng)授權(quán)的訪問。
| 注意 | |
|---|---|
|
因為 FAT 文件系統(tǒng)的設(shè)計,最大的文件大小為 |
| 注意 | |
|---|---|
|
微軟系統(tǒng)本身并不建議在超過 200MB 的分區(qū)或者驅(qū)動器上使用 FAT。他們的 " Overview of FAT, HPFS, and NTFS File Systems 這篇文章突出顯示了微軟系統(tǒng)的缺點,例如低效的磁盤空間利用。當(dāng)然了,我們在 Linux 系統(tǒng)上還是應(yīng)該使用 ext4 文件系統(tǒng)。 |
| 提示 | |
|---|---|
|
有關(guān)文件系統(tǒng)和訪問文件系統(tǒng)的更多信息,請參考 "Filesystems HOWTO"。 |
10.1.9. 網(wǎng)絡(luò)上的數(shù)據(jù)分享
當(dāng)使用網(wǎng)絡(luò)來分享數(shù)據(jù)的時候,你應(yīng)該使用通用的服務(wù)。這里有一些提示。
表 10.4. 典型使用場景下可選擇的網(wǎng)絡(luò)服務(wù)列表
| 網(wǎng)絡(luò)服務(wù) | 典型使用場景描述 |
|---|---|
| SMB/CIFS 用 Samba 掛載網(wǎng)絡(luò)文件系統(tǒng) | 通過 “Microsoft Windows 網(wǎng)絡(luò)” 分享文件,參見 smb.conf(5) 和 官方 Samba 3.x.x 指導(dǎo)和參考手冊(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ù)器/客戶端之間分享文件 |
盡管對于文件分享來說,通過網(wǎng)絡(luò)掛載文件系統(tǒng)和傳輸文件是相當(dāng)方便的,但這可能是不安全的。它們的網(wǎng)絡(luò)連接必須通過如下所示的加強安全性。
-
用 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ī)有時會出問題,或者由于人為的錯誤導(dǎo)致系統(tǒng)和數(shù)據(jù)損壞。備份和恢復(fù)操作是成功的系統(tǒng)管理中非常重要的一部分。可能有一天你的電腦就會出問題。
| 提示 | |
|---|---|
|
保持你的備份系統(tǒng)簡潔并且經(jīng)常備份你的系統(tǒng),有備份數(shù)據(jù)比你采用的備份方法的技術(shù)先進(jìn)要重要的多。 |
10.2.1. 備份和恢復(fù)策略
有3個關(guān)鍵的因素決定實際的備份和恢復(fù)策略。
-
知道要備份和恢復(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ū),...) 的純文本備忘錄
-
驗證數(shù)據(jù)結(jié)果:通過實驗性的恢復(fù)操作來預(yù)先驗證
-
用戶進(jìn)程的 Cron 工作,文件在 "
/var/spool/cron/crontabs" 目錄,并且重啟cron(8)。參見第 9.4.14 節(jié) “定時任務(wù)安排”來獲得關(guān)于cron(8) 和crontab(1) 的信息。 -
用戶進(jìn)程的 Systemd 計時器工作:文件在 "
~/.config/systemd/user" 目錄。參見systemd.timer(5) 和systemd.service(5)。 -
用戶進(jìn)程的自動啟動工作:文件在 "
~/.config/autostart" 目錄。參見 Desktop Application Autostart Specification。
-
-
-
知道怎樣去備份和恢復(fù)。
-
安全的數(shù)據(jù)存儲:保護(hù)其免于覆蓋和系統(tǒng)故障
-
經(jīng)常備份:有計劃的備份
-
冗余備份:數(shù)據(jù)鏡像
-
傻瓜式操作:單個簡單命令備份
-
-
評估涉及的風(fēng)險和成本。
-
數(shù)據(jù)丟失的風(fēng)險
-
數(shù)據(jù)至少是應(yīng)該在不同的磁盤分區(qū)上,最好是在不同的磁盤和機(jī)器上,來承受文件系統(tǒng)發(fā)生的損壞。重要數(shù)據(jù)最好存儲在一個只讀文件系統(tǒng)上。[4]
-
-
數(shù)據(jù)非法訪問的風(fēng)險
-
敏感的身份數(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ù)丟失的方式及其可能性
-
硬件(特別是硬盤)將會損壞
-
文件系統(tǒng)可能會損壞,里面的數(shù)據(jù)可能被丟失
-
對違規(guī)安全訪問而言,遠(yuǎn)程存儲系統(tǒng)不能夠被信任
-
弱的密碼保護(hù)能夠被輕松的破解
-
文件權(quán)限系統(tǒng)可以被破解
-
-
備份所需的資源:人力,硬件,軟件,…
-
使用 cron 任務(wù)或者 systemd 計時器任務(wù)來自動化調(diào)度備份工作
-
-
| 注意 | |
|---|---|
|
除非你知道自己做的是什么,否則不要備份 |
| 注意 | |
|---|---|
|
當(dāng)備份數(shù)據(jù)的時候,你可能希望停止一些應(yīng)用程序的守護(hù)進(jìn)程例如 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) 命令來備份和恢復(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ā)的高級自動化網(wǎng)絡(luò)磁盤歸檔器(庫) |
amanda-client |
V:0, I:2 | 1149 | Amanda: 馬里蘭大學(xué)開發(fā)的高級自動化網(wǎng)絡(luò)磁盤歸檔器(客戶端) |
amanda-server |
V:0, I:0 | 1117 | Amanda: 馬里蘭大學(xué)開發(fā)的高級自動化網(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è)級工具 |
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 是一個備份系統(tǒng),它能夠方便的從備份 CD/DVD 等設(shè)備中快速恢復(fù)整個系統(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é) “復(fù)制和同步工具” 描述的基礎(chǔ)工具能夠通過自定義腳本來幫助系統(tǒng)備份。這些腳本的功能可以通過如下的工具來增強。
-
restic軟件包能夠增量備份(遠(yuǎn)程)。 -
rdiff-backup軟件包能夠增量備份(遠(yuǎn)程)。 -
dump軟件包用于高效增量的歸檔和恢復(fù)整個文件系統(tǒng)。
| 提示 | |
|---|---|
|
參見 " |
10.2.3. 個人備份
對于運行 testing 套件的個人 Debian 桌面系統(tǒng)來說,只需要保護(hù)個人數(shù)據(jù)和關(guān)鍵數(shù)據(jù)。我不管怎樣每年都會重新安裝一次系統(tǒng)。因此沒理由去備份整個系統(tǒng)或者安裝全功能的備份實用程序。
與此同時,有一定頻率的最近的個人數(shù)據(jù)和系統(tǒng)配置快照的備份,加上偶爾個人數(shù)據(jù)的全備份,是非常有價值的。
我經(jīng)常使用一個簡單的 shell 腳本 bss 來制作這些快照和備份。這個腳本是一個短小的 shell,使用標(biāo)準(zhǔn)工具:btrfs 子卷快照、 rsync。對于加密的數(shù)據(jù),磁盤鏡像由 fallocate(1) 創(chuàng)建并由 cryptsetup(8) 配置。
| 提示 | |
|---|---|
|
你能夠用 " |
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)士 - 簽名驗證工具 |
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) |
計算與校驗 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 |
從文件導(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. 信任碼含義列表
| 代碼 | 信任描述 |
|---|---|
- |
沒有所有者信任簽名/沒有計算 |
e |
信任計算失敗 |
q |
沒有足夠的信息用于計算 |
n |
從不信任這個鍵 |
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
有一個錯誤在 OpenPGP 公鑰服務(wù)器 (先前的版本 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 [email protected] |
發(fā)送一份明文簽字到 [email protected] |
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 |
公鑰加密,從文件里面獲取名字,生成二進(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 |
將文件對稱加密到 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 插件可以讓你對擴(kuò)展名為 ".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
| 提示 | |
|---|---|
|
無論何時,你需要在一個腳本里面提供密碼時,使用 |
10.4. 源代碼合并工具
這里有許多源代碼合并工具。如下的是我感興趣的工具。
表 10.10. 源代碼合并工具列表


咨詢
建站咨詢
