📄 backup-basics.html
字号:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta name="generator" content="HTML Tidy, see www.w3.org" /><title>备份程序</title><meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.7" /><link rel="HOME" title="FreeBSD 使用手册" href="index.html" /><link rel="UP" title="存储" href="disks.html" /><link rel="PREVIOUS" title="用软盘备份" href="backups-floppybackups.html" /><link rel="NEXT" title="Network, Memory, and File-Backed File Systems"href="disks-virtual.html" /><link rel="STYLESHEET" type="text/css" href="docbook.css" /><meta http-equiv="Content-Type" content="text/html; charset=GB2312" /></head><body class="SECT1" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#840084"alink="#0000FF"><div class="NAVHEADER"><table summary="Header navigation table" width="100%" border="0" cellpadding="0"cellspacing="0"><tr><th colspan="3" align="center">FreeBSD 使用手册</th></tr><tr><td width="10%" align="left" valign="bottom"><a href="backups-floppybackups.html"accesskey="P">后退</a></td><td width="80%" align="center" valign="bottom">章 16. 存储</td><td width="10%" align="right" valign="bottom"><a href="disks-virtual.html"accesskey="N">前进</a></td></tr></table><hr align="LEFT" width="100%" /></div><div class="SECT1"><h1 class="SECT1"><a id="BACKUP-BASICS" name="BACKUP-BASICS">16.11. 备份程序</a></h1><p>有三个主要的备份程序 <span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">dump</span>(8)</span>、<span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">tar</span>(1)</span> 和 <span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">cpio</span>(1)</span>。</p><div class="SECT2"><h2 class="SECT2"><a id="AEN24360" name="AEN24360">16.11.1. Dump 和 Restore</a></h2><p><tt class="COMMAND">dump</tt> 和 <tt class="COMMAND">restore</tt> 是 <spanclass="TRADEMARK">UNIX</span>® 传统的备份程序。它以 block而不是以文件为单位来备份数据、链接或目录。 <tt class="COMMAND">dump</tt>备份的是设备上的整个文件系统,不能只备份一一个文件系统的部分或是用到两个以上文件系统的目录树。 <tt class="COMMAND">dump</tt>不会写文件和目录到磁带机,而是写入包含文件 和目录的原始数据块。</p><div class="NOTE"><blockquote class="NOTE"><p><b>注:</b> 如果在你的 root 目录使用 <tt class="COMMAND">dump</tt> ,将不需要 备份 <ttclass="FILENAME">/home</tt>、<tt class="FILENAME">/usr</tt> 或其他目录,因为这些是典型的其他文件系统或符号连接到那些文件系统的加载点。</p></blockquote></div><p><tt class="COMMAND">dump</tt> 是最早出现于 AT&T UNIX 的 Version 6 (约 1975)。默认的参数适用于 9-track 磁带(6250 bpi),所以如果要用高密度的磁带(最高可达 62,182ftpi),就不能用默认的参数,而要另外指定参数。这些默认值必须在命令行被修改以更好地利用当前磁带机的功能。</p><p><tt class="COMMAND">rdump</tt> 和 <tt class="COMMAND">rrestore</tt> 可以通过网络在另一台计算机的磁带机上备份数据。这两个程序都是依靠 <tt class="COMMAND">rcmd</tt> 和 <ttclass="COMMAND">ruserok</tt> 来访问远程的磁带机。因此,运行备份的用户必须要有远程 主机的<tt class="FILENAME">.rhosts</tt> 访问权。<tt class="COMMAND">rdump</tt> 和 <ttclass="COMMAND">rrestore</tt> 的参数必须适用于远程主机(例如,当你从 FreeBSD 连到 一台SUN 工作站 knomodo 去使用磁带机时,使用:</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbdclass="USERINPUT">/sbin/rdump 0dsbfu 54000 13000 126 komodo:/dev/nsa8 /dev/da0a 2>&1</kbd></pre><p>要注意的是:必须检查你在使用 <tt class="FILENAME">.rhosts</tt> 时的安全情况。</p><p>也可以通过使用 <tt class="COMMAND">ssh</tt> 用一个更安全的方式来使用 <ttclass="COMMAND">dump</tt> 和 <tt class="COMMAND">restore</tt> 。</p><div class="EXAMPLE"><a id="AEN24404" name="AEN24404"></a><p><b>例子 16-1. 通过 ssh 使用 <tt class="COMMAND">dump</tt></b></p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbdclass="USERINPUT">/sbin/dump -0uan -f - /usr | gzip -2 | ssh -c blowfish \ targetuser@targetmachine.example.com dd of=/mybigfiles/dump-usr-l0.gz</kbd></pre></div><p>Or using <tt class="COMMAND">dump</tt>'s built-in method, setting the environmentvariable <tt class="ENVAR">RSH</tt>:</p><div class="EXAMPLE"><a id="AEN24414" name="AEN24414"></a><p><b>例子 16-2. Using <tt class="COMMAND">dump</tt> over ssh with <ttclass="ENVAR">RSH</tt> set</b></p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbdclass="USERINPUT">RSH=/usr/bin/ssh /sbin/dump -0uan -f targetuser@targetmachine.example.com:/dev/sa0</kbd></pre></div></div><div class="SECT2"><h2 class="SECT2"><a id="AEN24422" name="AEN24422">16.11.2. <ttclass="COMMAND">tar</tt></a></h2><p><span class="CITEREFENTRY"><span class="REFENTRYTITLE">tar</span>(1)</span> 也同样是在AT&T UNIX Version 6 (约 1975)中出现的。 <tt class="COMMAND">tar</tt>可以直接对文件系统操作。它直接将文件和目录写到 磁带上, <tt class="COMMAND">tar</tt>不支持像 <span class="CITEREFENTRY"><span class="REFENTRYTITLE">cpio</span>(1)</span>那样多的选项,但 <tt class="COMMAND">tar</tt> 不需要用像用 <tt class="COMMAND">cpio</tt>那样奇怪的 命令行管道。</p><p>许多版本的 <tt class="COMMAND">tar</tt> 不支持通过网络备份,而 GNU 版的 <ttclass="COMMAND">tar</tt> (FreeBSD 用的就是 GNU 版的)提供与 <ttclass="COMMAND">rdump</tt> 相同的语法来使用远程的设备。例如要 <ttclass="COMMAND">tar</tt> Sun 工作站 <tt class="HOSTID">komodo</tt> 上一台 Exabyte磁带机,主使用:</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbdclass="USERINPUT">/usr/bin/tar cf komodo:/dev/nsa8 . 2>&1</kbd></pre><p>对于不支持远程设备的版本,可以使用一个管道和 <tt class="COMMAND">rsh</tt>传送数据给远程的磁带机。</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbd class="USERINPUT">tar cf - . | rsh <varclass="REPLACEABLE">hostname</var> dd of=<varclass="REPLACEABLE">tape-device</var> obs=20b</kbd></pre><p>如果你担心通过网络备份会有安全问题,应当使用 <tt class="COMMAND">ssh</tt> , 而不是<tt class="COMMAND">rsh</tt>。</p></div><div class="SECT2"><h2 class="SECT2"><a id="AEN24462" name="AEN24462">16.11.3. <ttclass="COMMAND">cpio</tt></a></h2><p><span class="CITEREFENTRY"><span class="REFENTRYTITLE">cpio</span>(1)</span> 是 <spanclass="TRADEMARK">UNIX</span> 最早用来作文件交换的磁带机程序。它有执行字节交换的选项,可以用几种不同的格式写入,并且可以将数据用管道传给其他程序。 <ttclass="COMMAND">cpio</tt> 没办法自动查找目录树内的文件列表,必须通过标准 输入 <ttclass="FILENAME">stdin</tt> 来指定。</p><p><tt class="COMMAND">cpio</tt> 不支持通过网络的备份方式。可以使用 pipeline 和 <ttclass="COMMAND">rsh</tt> 来传送数据给远程的磁带机。</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbd class="USERINPUT">for f in <varclass="REPLACEABLE">directory_list; do</var></kbd><kbd class="USERINPUT">find $f >> backup.list</kbd><kbd class="USERINPUT">done</kbd><samp class="PROMPT">#</samp> <kbdclass="USERINPUT">cpio -v -o --format=newc < backup.list | ssh <varclass="REPLACEABLE">user</var>@<var class="REPLACEABLE">host</var> "cat > <varclass="REPLACEABLE">backup_device</var>"</kbd></pre><p>这里的 <var class="REPLACEABLE">directory_list</var> 是要备份的目录列表, <varclass="REPLACEABLE">user</var>@<var class="REPLACEABLE">host</var> 结合了将要执行备份的用户名和主机名,<var class="REPLACEABLE">backup_device</var> 是写入备份的设备(如 <tt class="FILENAME">/dev/nsa0</tt>)。</p></div><div class="SECT2"><h2 class="SECT2"><a id="AEN24499" name="AEN24499">16.11.4. <ttclass="COMMAND">pax</tt></a></h2><p><span class="CITEREFENTRY"><span class="REFENTRYTITLE">pax</span>(1)</span> 是符合IEEE/<span class="TRADEMARK">POSIX</span>® 标准的程序。多年来各种不同版本 的 <ttclass="COMMAND">tar</tt> 和 <tt class="COMMAND">cpio</tt> 间有些不兼容。为了防止这种情况,并使其标准化,<span class="TRADEMARK">POSIX</span>出了这套新的工具程序。 <tt class="COMMAND">pax</tt> 尝试可以读写各种 <ttclass="COMMAND">cpio</tt> 和 <tt class="COMMAND">tar</tt>的格式,并可以自己增加新的格式。它的命令 集比 <tt class="COMMAND">tar</tt> 更接近 <ttclass="COMMAND">cpio</tt>。</p></div><div class="SECT2"><h2 class="SECT2"><a id="BACKUPS-PROGRAMS-AMANDA" name="BACKUPS-PROGRAMS-AMANDA">16.11.5.<b class="APPLICATION">Amanda</b></a></h2><p><b class="APPLICATION">Amanda</b> (Advanced Maryland Network Disk Archiver)并非单一的程序,而是一个客户机/服务器模式的备份系统 。一台 <bclass="APPLICATION">Amanda</b> 服务器可以备份任意数量执行 <bclass="APPLICATION">Amanda</b> 的客户机或是将连上 <b class="APPLICATION">Amanda</b>服务器的计算机上的数据备份到一台磁带机上。一个常见的问题是,数据写入磁带机的时间将超过取行数据的时间,而 <b class="APPLICATION">Amanda</b> 解决了这个问题。它使用一个``holding disk'' 来同时备份几个文件系统。 <b class="APPLICATION">Amanda</b> 建立``archive sets'' 的一组磁带,用来备份在 <b class="APPLICATION">Amanda</b>的配置文件中所列出的完整的文件系统。</p><p><b class="APPLICATION">Amanda</b> 配置文件提供完整的备份控制及 <bclass="APPLICATION">Amanda</b> 产生的网络传输。 <b class="APPLICATION">Amanda</b>可以使用上述任何一个设备程序来向磁带写入数据。<b class="APPLICATION">Amanda</b> 可以从port 或 package 取得,它并非系统默认安装的。</p></div><div class="SECT2"><h2 class="SECT2"><a id="AEN24551" name="AEN24551">16.11.6. Do Nothing 备份策略</a></h2><p>``Do nothing'' 不是一个程序,而是被广泛使用的备份策略。不需要预算,不需要备份的计划表,全部都不用。如果你的数据发生了什么问题, 忽略它!</p><p>如果你的时间和数据不值得你做这些事,那么 ``Do nothing''将是最好的备份程序。要注意的是,<span class="TRADEMARK">UNIX</span>是相当好用的工具,你可能在几个月内,就发现你已经收集了不少对你来说相当具有价值的文件和程序。</p><p>``Do nothing'' 对于像 <tt class="FILENAME">/usr/obj</tt> 和其他可由你的计算机产生的文件来说,是最好的方法。例如这本手册包含有 HTML 或 <spanclass="TRADEMARK">PostScript</span>® 格式的文件。这些文档格式是从 SGML输入文件创建的。创建 HTML 或 <span class="TRADEMARK">PostScript</span>格式的文件的备份就没有必要了。只要经常备份 SGML 文件就够了。</p></div><div class="SECT2"><h2 class="SECT2"><a id="AEN24563" name="AEN24563">16.11.7. 哪个备份程序最好?</a></h2><p>在<span class="CITEREFENTRY"><span class="REFENTRYTITLE">dump</span>(8)</span> <spanclass="emphasis"><i class="EMPHASIS">时期</i></span> Elizabeth D. Zwicky测试了所有以上列出的备份程序。在各种各样怪异的文件系统中, <tt class="COMMAND">dump</tt>是你明智的选择。Elizabeth 建立起各种各样、奇怪或常见的文件系统,并用各种备份程序,测试在各种文件系统上备份及恢复数据。这些怪异之处包括:具有 holes 和一个 nulls block 的文件,文件名具有有趣字符,无法读写的文件及设备,在备份时改变文件大小,在备份时建立或删除的文件。她将结果刑在: LISA V in Oct. 1991. See <ahref="http://berdmann.dyndns.org/zwicky/testdump.doc.html" target="_top">torture-testingBackup and Archive Programs</a>.</p></div><div class="SECT2"><h2 class="SECT2"><a id="AEN24574" name="AEN24574">16.11.8. 应急恢复程序</a></h2><div class="SECT3"><h3 class="SECT3"><a id="AEN24576" name="AEN24576">16.11.8.1. 在出现灾难前</a></h3><p>在遇到灾难前,只需要执行以下四个步骤:</p>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -