📄 8.htm
字号:
<P>对于某个有多重硬链接的文件,<CODE>tar</CODE>的处理方法是只将其中一个链接拷贝到磁带上,所以日后你只能找回拷贝中所保留那个的链接所指的文件;<CODE>cpio</CODE>会为每个链接做一个拷贝,日后你可以找回任意一个链接所指的文件。
<P>在Potato和Woody中,操作<CODE>.bz2</CODE>文件的<CODE>tar</CODE>命令参数有所变化,所以请在脚本中使用<SAMP>--bzip2</SAMP>而不要简写为<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))标准的,众望所归的,轻便的文档包交互工具。<CODE>pax</CODE>可以读、写以及列出文档包的成员,并能拷贝文件目录层次。<CODE>pax</CODE>的操作独立于特定的文档包格式,支持各种各样不同的文档包格式。
<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>文档包提取/放入文件。该文档包可以是硬盘上的另一个文件,也可以是磁带或管道。
<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要快,且提供了更多磁带选项,并且能更友好的处理有讹误的输入数据。它支持交互式处理多卷文档包。用<CODE>afio</CODE>制作压缩文档包比压缩<CODE>tar</CODE>或<CODE>cpio</CODE>文档包更安全。在备份处理脚本中<CODE>afio</CODE>是更佳的“文档处理引擎”。
<PRE> $ find . -depth -print0 | afio -px -0a new-dir
</PRE>
<P>对所有的磁带备份我都使用<CODE>afio</CODE>。
<HR>
<A name=s-diff-backup></A>
<H2>8.4 差异备份与数据同步</H2>
<P>要进行差异备份和数据同步可使用下列几种方法:
<UL>
<LI><CODE>rcs</CODE>:备份并进行历史记录,只支持文本。 </LI></UL>
<UL>
<LI><CODE>rdiff-backup</CODE>:备份并进行历史记录。支持链接。 </LI></UL>
<UL>
<LI><CODE>pdumpfs</CODE>:对文件系统进行备份和历史记录。支持链接。 </LI></UL>
<UL>
<LI><CODE>rsync</CODE>:单路同步。 </LI></UL>
<UL>
<LI><CODE>unison</CODE>:双路同步。 </LI></UL>
<UL>
<LI><CODE>cvs</CODE>:多路同步服务器备份并进行历史记录,只支持文本,技术成熟。参阅<A
href="http://qref.sourceforge.net/Debian/reference/ch-vcs.zh-cn.html#s-cvs">CVS,
第 12.1 节</A>。 </LI></UL>
<UL>
<LI><CODE>arch</CODE>:多路同步服务器备份并进行历史记录,但包括“处于工作中的目录”。 </LI></UL>
<UL>
<LI><CODE>subversion</CODE>:多路同步服务器备份并进行历史记录,专用于Apache。 </LI></UL>
<P>有关将这些方法与文档包操作结合应用的讨论参阅<A
href="http://qref.sourceforge.net/Debian/reference/ch-tips.zh-cn.html#s-archiving">拷贝及创建子目录,
第 8.3 节</A>,有关自动进行备份的讨论参阅<A
href="http://qref.sourceforge.net/Debian/reference/ch-tips.zh-cn.html#s-cronjob">日程安排(<CODE>cron</CODE>,<CODE>at</CODE>),
第 8.6.25 节</A>。
<P>我只讲解三个较容易使用的工具。
<HR>
<A name=s-rdiff-backup></A>
<H3>8.4.1 使用rdiff进行差异备份</H3>
<P><CODE>Rdiff-backup</CODE>提供了简单好用的方法对任何文件包括链接进行历史差异备份。例如要对<CODE>~/</CODE>目录下的所有文件备份到<CODE>/mnt/backup</CODE>:
<PRE> $ rdiff-backup --include ~/tmp/keep --exclude ~/tmp ~/ /mnt/backup
</PRE>
<P>从该文档包中取出3天前的旧数据恢复到<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>进行每日备份</H3>
<P><CODE>pdumpfs</CODE>是一种简单的每日备份系统,与Plan9的<CODE>dumpfs</CODE>一样,它每天都保存系统快照。任何时候都可以用它来恢复到某天的系统状态。请使用<CODE>pdumpfs</CODE>和<CODE>cron</CODE>来备份你的home目录。
<P>在目标目录中,<CODE>pdumpfs</CODE>以<SAMP>YYYY/MM/DD</SAMP>的方式来组织系统快照。第一次运行时,它将所有源文件拷贝到快照目录。从每二次运行起,<CODE>pdumpfs</CODE>仅拷贝更新的或新建的文件,对于没有改变的文件用硬链接方式指向前一天的系统快照,以此来节省硬盘空间。
<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进行定期差异备份</H3>
<P><CODE>Changetrack</CODE>会定期对RCS文档包中基于文本格式的配置文件的变化进行记录。参阅<CODE>changetrack(1)</CODE>。
<PRE> # apt-get install changetrack
# vi changetrack.conf
</PRE>
<HR>
<A name=s8.5></A>
<H2>8.5 系统冻结恢复</H2>
<HR>
<A name=s8.5.1></A>
<H3>8.5.1 中止一个进程</H3>
<P>运行<CODE>top</CODE>看看什么进程的活动有异常。按“P”以cpu使用率排序,“M”以内存使用率排序,“k”可以中止一个进程。还有一种方法,使用BSD风格的<SAMP>ps
aux | less</SAMP>或System V风格的<SAMP>ps -efH | less</SAMP>。System V风格的排列会显示父进程ID
<SAMP>PPID</SAMP>,这对中止出错的(死掉的)子进程十分有用。
<P>知道了进程的ID,就可使用<CODE>kill</CODE>中止(或发信号给)某个进程,<CODE>killall</CODE>的作用正如其名一样。经常使用的信号有:
<PRE> 1: HUP,重启daemon
15: TERM,普通中止
9: KILL,强令中止
</PRE>
<HR>
<A name=s8.5.2></A>
<H3>8.5.2 ALT-SysRq</H3>
<P>内核编译选项“Magic SysRq
key”提供系统强心针。在i386机器上按下<SAMP>ALT-SysRq</SAMP>组合键后,试试按下列各键<SAMP>r 0 k e i s u
b</SAMP>,奇迹产生了:
<P>Un'r'aw让键盘从X崩溃中重生。将控制台loglevel改为'0'以减少错误信息。sa'k'(system attention
key)中止当前虚拟控制台的所有进程。t'e'rminate中止当前终端除init外的所有进程。k'i'll中止除init外的所有进程。
<P>'S'ync,'u'mount和re'b'oot帮你逃离真正的险境。
<P>本文写作之时,Debian默认安装的内核并未将该选项编译进去,需要重新编译内核激活该功能。详情参阅<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(文件内容浏览器)。按“h”可获得帮助。它比<CODE>more</CODE>更有用。在shell启动脚本中运行<SAMP>eval
$(lesspipe)</SAMP>或<SAMP>eval
$(lessfile)</SAMP>可以让<CODE>less</CODE>活力四射。详情参阅<CODE>/usr/share/doc/lessf/LESSOPEN</CODE>。使用<SAMP>-R</SAMP>选项可输出生癖字符and
enables ANSI color escape sequences.参阅<CODE>less(1)</CODE>。
<P>对于某些编码系统(EUC)<CODE>w3m</CODE>可能是更好的选择。
<HR>
<A name=s8.6.2></A>
<H3>8.6.2 释放内存</H3>
<P><CODE>free</CODE>和<CODE>top</CODE>能让你了解内存资源的许多有用信息。别担心“Mem:”行中“used”的大小,看看它下面的数字(本例的数字是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>物理内存的准确大小可通过<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内存系统不能使用,因为内核需要它。
<HR>
<A name=s8.6.3></A>
<H3>8.6.3 设定时间(BIOS)</H3><PRE> # date MMDDhhmmCCYY
# hwclock --utc
# hwclock --systohc
# hwclock --show
</PRE>
<P>设定系统时间和硬件时间为MM/DD hh:mm, CCYY。显示时间为本地时间而硬件时间使用UTC。
<HR>
<A name=s8.6.4></A>
<H3>8.6.4 设定时间(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连接的系统设置时间</H4>
<P>设置系统时钟通过远程服务器自动对时: <PRE> # ntpdate <VAR>server</VAR>
</PRE>
<P>如果你的系统拥有永久的Internet连接,应该将该命令加入<CODE>/etc/cron.daily</CODE>。
<HR>
<A name=s8.6.4.2></A>
<H4>8.6.4.2 偶尔进行Internet连接的系统设置时间</H4>
<P>使用<CODE>chrony</CODE>软件包。
<HR>
<A name=s8.6.5></A>
<H3>8.6.5 如何禁用屏幕保护程序</H3>
<P>对于Linux控制台: <PRE> # setterm -powersave off
</PRE>
<P>启动kon2(kanji)控制台可执行: <PRE> # kon -SaveTime 0
</PRE>
<P>运行X可执行: <PRE> # xset s off
或
# xset -dpms
或
# xscreensaver-command -prefs
</PRE>
<P>参阅相关的帮助页面。
<HR>
<A name=s-getent></A>
<H3>8.6.6 搜索系统管理数据库</H3>
<P>Glibc提供了<CODE>getent(1)</CODE>搜索管理数据库的各类项目。例如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喇叭;-),对于Bash shell可执行: <PRE> echo "set bell-style none">> ~/.inputrc
</PRE>
<HR>
<A name=s8.6.8></A>
<H3>8.6.8 控制台上的错误信息</H3>
<P>不想看屏幕显示的错误信息,首选的方法是检查<CODE>/etc/init.d/klogd</CODE>,在该脚本中设置<SAMP>KLOGD="-c
<VAR>3</VAR>"</SAMP>然后运行<SAMP>/etc/init.d/klogd
restart</SAMP>。另一种方法是执行<SAMP>dmesg -n<VAR>3</VAR></SAMP>。
<P>这儿是各种错误级别的含义:
<UL>
<LI>0: KERN_EMERG, 系统不可用
<LI>1: KERN_ALERT, 必须立即执行
<LI>2: KERN_CRIT, 紧急状态
<LI>3: KERN_ERR, 错误状态
<LI>4: KERN_WARNING, 警告状态
<LI>5: KERN_NOTICE, 正常状态且十分重要
<LI>6: KERN_INFO, 报告
<LI>7: KERN_DEBUG, debug-level信息 </LI></UL>
<P>如果你很厌恶详细而无用的错误信息,可以试试这个小补丁<CODE>shutup-abit-bp6</CODE>(位于<CODE><A
href="http://qref.sourceforge.net/Debian/reference/examples/">样例脚本子目录</A></CODE>)。
<P>另一个该看看的地方是<CODE>/etc/syslog.conf</CODE>;,检查一下是否有信息记录被发送到了控制台设备。
<HR>
<A name=s8.6.9></A>
<H3>8.6.9 正确设置控制台类型</H3>
<P>在类Unix系统中,访问控制台屏幕通常要调用库例程,这就为用户提供了一种独立于终端的方式来优化字符的屏幕更新过程。参阅<CODE>ncurses(3X)</CODE>和<CODE>terminfo(5)</CODE>。
<P>在Debian系统中,有大量预定义项目: <PRE> $ toe | less # 所有项目
$ toe /etc/terminfo/ | less # 用户可再配置的项目
</PRE>
<P>你的选择可导出到环境变量<SAMP>TERM</SAMP>。
<P>当登录到远程Debian系统时,如果xterm的terminfo项目在非Debian的xterm中失效,请将终端类型改为支持较少特性的版本如“xterm-r6”。参阅<CODE>/usr/share/doc/libncurses5/FAQ</CODE>。“dumb”是terminfo的最小公分母。
<HR>
<A name=s8.6.10></A>
<H3>8.6.10 恢复控制台的健壮性</H3>
<P>如果执行<SAMP>$ cat <VAR>some-binary-file</VAR></SAMP>后屏幕一片混乱(命令的返回值与你的输入大相径庭): <PRE> $ reset
</PRE>
<HR>
<A name=s8.6.11></A>
<H3>8.6.11 将DOS下的文本文件转换为Unix类型</H3>
<P>将DOS文本文件(行尾=^M^J)转换成Unix文本文件(行尾=^J)。 <PRE> # apt-get install sysutils
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -