?? 8.htm
字號(hào):
<P>對(duì)于某個(gè)有多重硬鏈接的文件,<CODE>tar</CODE>的處理方法是只將其中一個(gè)鏈接拷貝到磁帶上,所以日后你只能找回拷貝中所保留那個(gè)的鏈接所指的文件;<CODE>cpio</CODE>會(huì)為每個(gè)鏈接做一個(gè)拷貝,日后你可以找回任意一個(gè)鏈接所指的文件。
<P>在Potato和Woody中,操作<CODE>.bz2</CODE>文件的<CODE>tar</CODE>命令參數(shù)有所變化,所以請(qǐng)?jiān)谀_本中使用<SAMP>--bzip2</SAMP>而不要簡(jiǎn)寫為<SAMP>-I</SAMP>(Potato)或<SAMP>-j</SAMP>(Woody)。
<HR>
<A name=s8.3.4></A>
<H3>8.3.4 <CODE>pax</CODE></H3>
<P>全新的,符合POSIX(IEEE Std 1003.2-1992, pages 380–388 (section 4.48) and pages
936–940 (section
E.4.48))標(biāo)準(zhǔn)的,眾望所歸的,輕便的文檔包交互工具。<CODE>pax</CODE>可以讀、寫以及列出文檔包的成員,并能拷貝文件目錄層次。<CODE>pax</CODE>的操作獨(dú)立于特定的文檔包格式,支持各種各樣不同的文檔包格式。
<P><CODE>pax</CODE>工具剛剛成形,還很新。 <PRE> # apt-get install pax
$ pax -rw -p e . newdir
or
$ find . -depth | pax -rw -p e newdir
</PRE>
<HR>
<A name=s8.3.5></A>
<H3>8.3.5 <CODE>cpio</CODE></H3>
<P><CODE>cpio</CODE>從<CODE>cpio</CODE>或<CODE>tar</CODE>文檔包提取/放入文件。該文檔包可以是硬盤上的另一個(gè)文件,也可以是磁帶或管道。
<PRE> $ find . -depth -print0 | cpio --null --sparse -pvd new-dir
</PRE>
<HR>
<A name=s8.3.6></A>
<H3>8.3.6 <CODE>afio</CODE></H3>
<P><CODE>afio</CODE>更善于處理<CODE>cpio</CODE>格式的文檔包。通常它比cpio要快,且提供了更多磁帶選項(xiàng),并且能更友好的處理有訛誤的輸入數(shù)據(jù)。它支持交互式處理多卷文檔包。用<CODE>afio</CODE>制作壓縮文檔包比壓縮<CODE>tar</CODE>或<CODE>cpio</CODE>文檔包更安全。在備份處理腳本中<CODE>afio</CODE>是更佳的“文檔處理引擎”。
<PRE> $ find . -depth -print0 | afio -px -0a new-dir
</PRE>
<P>對(duì)所有的磁帶備份我都使用<CODE>afio</CODE>。
<HR>
<A name=s-diff-backup></A>
<H2>8.4 差異備份與數(shù)據(jù)同步</H2>
<P>要進(jìn)行差異備份和數(shù)據(jù)同步可使用下列幾種方法:
<UL>
<LI><CODE>rcs</CODE>:備份并進(jìn)行歷史記錄,只支持文本。 </LI></UL>
<UL>
<LI><CODE>rdiff-backup</CODE>:備份并進(jìn)行歷史記錄。支持鏈接。 </LI></UL>
<UL>
<LI><CODE>pdumpfs</CODE>:對(duì)文件系統(tǒng)進(jìn)行備份和歷史記錄。支持鏈接。 </LI></UL>
<UL>
<LI><CODE>rsync</CODE>:?jiǎn)温吠健?</LI></UL>
<UL>
<LI><CODE>unison</CODE>:雙路同步。 </LI></UL>
<UL>
<LI><CODE>cvs</CODE>:多路同步服務(wù)器備份并進(jìn)行歷史記錄,只支持文本,技術(shù)成熟。參閱<A
href="http://qref.sourceforge.net/Debian/reference/ch-vcs.zh-cn.html#s-cvs">CVS,
第 12.1 節(jié)</A>。 </LI></UL>
<UL>
<LI><CODE>arch</CODE>:多路同步服務(wù)器備份并進(jìn)行歷史記錄,但包括“處于工作中的目錄”。 </LI></UL>
<UL>
<LI><CODE>subversion</CODE>:多路同步服務(wù)器備份并進(jìn)行歷史記錄,專用于Apache。 </LI></UL>
<P>有關(guān)將這些方法與文檔包操作結(jié)合應(yīng)用的討論參閱<A
href="http://qref.sourceforge.net/Debian/reference/ch-tips.zh-cn.html#s-archiving">拷貝及創(chuàng)建子目錄,
第 8.3 節(jié)</A>,有關(guān)自動(dòng)進(jìn)行備份的討論參閱<A
href="http://qref.sourceforge.net/Debian/reference/ch-tips.zh-cn.html#s-cronjob">日程安排(<CODE>cron</CODE>,<CODE>at</CODE>),
第 8.6.25 節(jié)</A>。
<P>我只講解三個(gè)較容易使用的工具。
<HR>
<A name=s-rdiff-backup></A>
<H3>8.4.1 使用rdiff進(jìn)行差異備份</H3>
<P><CODE>Rdiff-backup</CODE>提供了簡(jiǎn)單好用的方法對(duì)任何文件包括鏈接進(jìn)行歷史差異備份。例如要對(duì)<CODE>~/</CODE>目錄下的所有文件備份到<CODE>/mnt/backup</CODE>:
<PRE> $ rdiff-backup --include ~/tmp/keep --exclude ~/tmp ~/ /mnt/backup
</PRE>
<P>從該文檔包中取出3天前的舊數(shù)據(jù)恢復(fù)到<CODE>~/old</CODE>目錄: <PRE> $ rdiff-backup -r 3D /mnt/backup ~/old
</PRE>
<P>參閱<CODE>rdiff-backup(1)</CODE>。
<HR>
<A name=s-pdumpfs-backup></A>
<H3>8.4.2 使用<CODE>pdumpfs</CODE>進(jìn)行每日備份</H3>
<P><CODE>pdumpfs</CODE>是一種簡(jiǎn)單的每日備份系統(tǒng),與Plan9的<CODE>dumpfs</CODE>一樣,它每天都保存系統(tǒng)快照。任何時(shí)候都可以用它來恢復(fù)到某天的系統(tǒng)狀態(tài)。請(qǐng)使用<CODE>pdumpfs</CODE>和<CODE>cron</CODE>來備份你的home目錄。
<P>在目標(biāo)目錄中,<CODE>pdumpfs</CODE>以<SAMP>YYYY/MM/DD</SAMP>的方式來組織系統(tǒng)快照。第一次運(yùn)行時(shí),它將所有源文件拷貝到快照目錄。從每二次運(yùn)行起,<CODE>pdumpfs</CODE>僅拷貝更新的或新建的文件,對(duì)于沒有改變的文件用硬鏈接方式指向前一天的系統(tǒng)快照,以此來節(jié)省硬盤空間。
<PRE> $ pdumpfs <VAR>src-dir</VAR> <VAR>dest-dir</VAR> [<VAR>dest-basename</VAR>]
</PRE>
<P>See <CODE>pdumpfs(8)</CODE>.
<HR>
<A name=s-backup></A>
<H3>8.4.3 使用RCS進(jìn)行定期差異備份</H3>
<P><CODE>Changetrack</CODE>會(huì)定期對(duì)RCS文檔包中基于文本格式的配置文件的變化進(jìn)行記錄。參閱<CODE>changetrack(1)</CODE>。
<PRE> # apt-get install changetrack
# vi changetrack.conf
</PRE>
<HR>
<A name=s8.5></A>
<H2>8.5 系統(tǒng)凍結(jié)恢復(fù)</H2>
<HR>
<A name=s8.5.1></A>
<H3>8.5.1 中止一個(gè)進(jìn)程</H3>
<P>運(yùn)行<CODE>top</CODE>看看什么進(jìn)程的活動(dòng)有異常。按“P”以cpu使用率排序,“M”以內(nèi)存使用率排序,“k”可以中止一個(gè)進(jìn)程。還有一種方法,使用BSD風(fēng)格的<SAMP>ps
aux | less</SAMP>或System V風(fēng)格的<SAMP>ps -efH | less</SAMP>。System V風(fēng)格的排列會(huì)顯示父進(jìn)程ID
<SAMP>PPID</SAMP>,這對(duì)中止出錯(cuò)的(死掉的)子進(jìn)程十分有用。
<P>知道了進(jìn)程的ID,就可使用<CODE>kill</CODE>中止(或發(fā)信號(hào)給)某個(gè)進(jìn)程,<CODE>killall</CODE>的作用正如其名一樣。經(jīng)常使用的信號(hào)有:
<PRE> 1: HUP,重啟daemon
15: TERM,普通中止
9: KILL,強(qiáng)令中止
</PRE>
<HR>
<A name=s8.5.2></A>
<H3>8.5.2 ALT-SysRq</H3>
<P>內(nèi)核編譯選項(xiàng)“Magic SysRq
key”提供系統(tǒng)強(qiáng)心針。在i386機(jī)器上按下<SAMP>ALT-SysRq</SAMP>組合鍵后,試試按下列各鍵<SAMP>r 0 k e i s u
b</SAMP>,奇跡產(chǎn)生了:
<P>Un'r'aw讓鍵盤從X崩潰中重生。將控制臺(tái)loglevel改為'0'以減少錯(cuò)誤信息。sa'k'(system attention
key)中止當(dāng)前虛擬控制臺(tái)的所有進(jìn)程。t'e'rminate中止當(dāng)前終端除init外的所有進(jìn)程。k'i'll中止除init外的所有進(jìn)程。
<P>'S'ync,'u'mount和re'b'oot幫你逃離真正的險(xiǎn)境。
<P>本文寫作之時(shí),Debian默認(rèn)安裝的內(nèi)核并未將該選項(xiàng)編譯進(jìn)去,需要重新編譯內(nèi)核激活該功能。詳情參閱<CODE>/usr/share/doc/kernel-doc-version/Documentation/sysrq.txt.gz</CODE>或<CODE>/usr/src/<VAR>kernel-version</VAR>/Documentation/sysrq.txt.gz</CODE>。
<HR>
<A name=s8.6></A>
<H2>8.6 記住這些可愛的小命令</H2>
<HR>
<A name=s8.6.1></A>
<H3>8.6.1 Pager</H3>
<P><CODE>less</CODE>就是pager(文件內(nèi)容瀏覽器)。按“h”可獲得幫助。它比<CODE>more</CODE>更有用。在shell啟動(dòng)腳本中運(yùn)行<SAMP>eval
$(lesspipe)</SAMP>或<SAMP>eval
$(lessfile)</SAMP>可以讓<CODE>less</CODE>活力四射。詳情參閱<CODE>/usr/share/doc/lessf/LESSOPEN</CODE>。使用<SAMP>-R</SAMP>選項(xiàng)可輸出生癖字符and
enables ANSI color escape sequences.參閱<CODE>less(1)</CODE>。
<P>對(duì)于某些編碼系統(tǒng)(EUC)<CODE>w3m</CODE>可能是更好的選擇。
<HR>
<A name=s8.6.2></A>
<H3>8.6.2 釋放內(nèi)存</H3>
<P><CODE>free</CODE>和<CODE>top</CODE>能讓你了解內(nèi)存資源的許多有用信息。別擔(dān)心“Mem:”行中“used”的大小,看看它下面的數(shù)字(本例的數(shù)字是38792)。
<PRE> $ free -k # for 256MB machine
total used free shared buffers cached
Mem: 257136 230456 26680 45736 116136 75528
-/+ buffers/cache: 38792 218344
Swap: 264996 0 264996
</PRE>
<P>物理內(nèi)存的準(zhǔn)確大小可通過<SAMP>grep '^Memory' /var/log/dmesg</SAMP>得到,本例將顯示“Memory:
256984k/262144k available (1652k kernel code, 412k reserved, 2944k data, 152k
init)”。 <PRE> Total = 262144k = 256M (1k=1024, 1M=1024k)
Free to dmesg = 256984k = Total - kernel - reserved - data - init
Free to shell = 257136k = Total - kernel - reserved - data
</PRE>
<P>約有5MB內(nèi)存系統(tǒng)不能使用,因?yàn)閮?nèi)核需要它。
<HR>
<A name=s8.6.3></A>
<H3>8.6.3 設(shè)定時(shí)間(BIOS)</H3><PRE> # date MMDDhhmmCCYY
# hwclock --utc
# hwclock --systohc
# hwclock --show
</PRE>
<P>設(shè)定系統(tǒng)時(shí)間和硬件時(shí)間為MM/DD hh:mm, CCYY。顯示時(shí)間為本地時(shí)間而硬件時(shí)間使用UTC。
<HR>
<A name=s8.6.4></A>
<H3>8.6.4 設(shè)定時(shí)間(NTP)</H3>
<P>參考:<CODE><A
href="http://www.tldp.org/HOWTO/TimePrecision-HOWTO/index.html">Managing
Accurate Date and Time HOWTO</A></CODE>。
<HR>
<A name=s8.6.4.1></A>
<H4>8.6.4.1 擁有永久Internet連接的系統(tǒng)設(shè)置時(shí)間</H4>
<P>設(shè)置系統(tǒng)時(shí)鐘通過遠(yuǎn)程服務(wù)器自動(dòng)對(duì)時(shí): <PRE> # ntpdate <VAR>server</VAR>
</PRE>
<P>如果你的系統(tǒng)擁有永久的Internet連接,應(yīng)該將該命令加入<CODE>/etc/cron.daily</CODE>。
<HR>
<A name=s8.6.4.2></A>
<H4>8.6.4.2 偶爾進(jìn)行Internet連接的系統(tǒng)設(shè)置時(shí)間</H4>
<P>使用<CODE>chrony</CODE>軟件包。
<HR>
<A name=s8.6.5></A>
<H3>8.6.5 如何禁用屏幕保護(hù)程序</H3>
<P>對(duì)于Linux控制臺(tái): <PRE> # setterm -powersave off
</PRE>
<P>啟動(dòng)kon2(kanji)控制臺(tái)可執(zhí)行: <PRE> # kon -SaveTime 0
</PRE>
<P>運(yùn)行X可執(zhí)行: <PRE> # xset s off
或
# xset -dpms
或
# xscreensaver-command -prefs
</PRE>
<P>參閱相關(guān)的幫助頁面。
<HR>
<A name=s-getent></A>
<H3>8.6.6 搜索系統(tǒng)管理數(shù)據(jù)庫</H3>
<P>Glibc提供了<CODE>getent(1)</CODE>搜索管理數(shù)據(jù)庫的各類項(xiàng)目。例如passwd、group、hosts、services、protocols、networks。
<PRE> getent database [key ...]
</PRE>
<HR>
<A name=s8.6.7></A>
<H3>8.6.7 禁用聲音(響鈴)</H3>
<P>最直接的方法是拔掉PC喇叭;-),對(duì)于Bash shell可執(zhí)行: <PRE> echo "set bell-style none">> ~/.inputrc
</PRE>
<HR>
<A name=s8.6.8></A>
<H3>8.6.8 控制臺(tái)上的錯(cuò)誤信息</H3>
<P>不想看屏幕顯示的錯(cuò)誤信息,首選的方法是檢查<CODE>/etc/init.d/klogd</CODE>,在該腳本中設(shè)置<SAMP>KLOGD="-c
<VAR>3</VAR>"</SAMP>然后運(yùn)行<SAMP>/etc/init.d/klogd
restart</SAMP>。另一種方法是執(zhí)行<SAMP>dmesg -n<VAR>3</VAR></SAMP>。
<P>這兒是各種錯(cuò)誤級(jí)別的含義:
<UL>
<LI>0: KERN_EMERG, 系統(tǒng)不可用
<LI>1: KERN_ALERT, 必須立即執(zhí)行
<LI>2: KERN_CRIT, 緊急狀態(tài)
<LI>3: KERN_ERR, 錯(cuò)誤狀態(tài)
<LI>4: KERN_WARNING, 警告狀態(tài)
<LI>5: KERN_NOTICE, 正常狀態(tài)且十分重要
<LI>6: KERN_INFO, 報(bào)告
<LI>7: KERN_DEBUG, debug-level信息 </LI></UL>
<P>如果你很厭惡詳細(xì)而無用的錯(cuò)誤信息,可以試試這個(gè)小補(bǔ)丁<CODE>shutup-abit-bp6</CODE>(位于<CODE><A
href="http://qref.sourceforge.net/Debian/reference/examples/">樣例腳本子目錄</A></CODE>)。
<P>另一個(gè)該看看的地方是<CODE>/etc/syslog.conf</CODE>;,檢查一下是否有信息記錄被發(fā)送到了控制臺(tái)設(shè)備。
<HR>
<A name=s8.6.9></A>
<H3>8.6.9 正確設(shè)置控制臺(tái)類型</H3>
<P>在類Unix系統(tǒng)中,訪問控制臺(tái)屏幕通常要調(diào)用庫例程,這就為用戶提供了一種獨(dú)立于終端的方式來優(yōu)化字符的屏幕更新過程。參閱<CODE>ncurses(3X)</CODE>和<CODE>terminfo(5)</CODE>。
<P>在Debian系統(tǒng)中,有大量預(yù)定義項(xiàng)目: <PRE> $ toe | less # 所有項(xiàng)目
$ toe /etc/terminfo/ | less # 用戶可再配置的項(xiàng)目
</PRE>
<P>你的選擇可導(dǎo)出到環(huán)境變量<SAMP>TERM</SAMP>。
<P>當(dāng)?shù)卿浀竭h(yuǎn)程Debian系統(tǒng)時(shí),如果xterm的terminfo項(xiàng)目在非Debian的xterm中失效,請(qǐng)將終端類型改為支持較少特性的版本如“xterm-r6”。參閱<CODE>/usr/share/doc/libncurses5/FAQ</CODE>?!癲umb”是terminfo的最小公分母。
<HR>
<A name=s8.6.10></A>
<H3>8.6.10 恢復(fù)控制臺(tái)的健壯性</H3>
<P>如果執(zhí)行<SAMP>$ cat <VAR>some-binary-file</VAR></SAMP>后屏幕一片混亂(命令的返回值與你的輸入大相徑庭): <PRE> $ reset
</PRE>
<HR>
<A name=s8.6.11></A>
<H3>8.6.11 將DOS下的文本文件轉(zhuǎn)換為Unix類型</H3>
<P>將DOS文本文件(行尾=^M^J)轉(zhuǎn)換成Unix文本文件(行尾=^J)。 <PRE> # apt-get install sysutils
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -