面对现实吧,电脑并不完美。Linux 是一个“近乎完美”的操作系统,但世事难料,数据有时会丢失。避免出现问题的最好办法就是备份文件。Linux 提供了两个重要的备份程序: tar 和 gzip
首先,我们从“tar ”开始。这个程序会将各种文件打包成一个包,通常称为“tarball”。假设你有一些文件 —— 你在本课程中做的笔记。
你有:
notes_1.txt notes_2.txt notes_3.txt notes_4.txt notes_5.txt
并将它们放在名为 /linux_course 的目录中。比方说,你想把它们备份并保存在软盘上。你可以键入以下命令,将它们打包成 tar 包:
tar -cvf linux_notes.tar notes*.txt
首先是 tar,即程序名称。然后是选项:c(--create)v(--verbose--show 它们是什么文件)(f--file -创建文件-应该始终是最后一个选项)然后是要创建的文件名(linux_notes.tar)和要备份的文件(notes*.txt)。
这样做的前提是,你的目录中可能还有其他不想包含的文件。如果你想包含目录中的所有文件,只需用 *.* 代替 notes*.txt。
如果你有良好的数据存储能力(Jaz 或 Zip 驱动器、光盘刻录机或磁带备份驱动器),你可能想备份整个目录及其相应的子目录。然后输入目录,比方说 /home/bob/,然后发出命令:
tar -cvf bob_backup.tar *
如果使用星号,则会包含不带扩展名的目录和文件(my_file 与 my_file.txt 相反)。请做好得到一个相当大的压缩包的准备。
这是备份过程的第一步。现在我们来看看第二步:压缩这些文件。
正如我们提到的,“tar ”只是将文件合并成一个文件。这些文件的大小并没有减小(压缩包甚至可能更大!)现在,我们必须再做一件事,才能将文件减小到更易于管理的大小:使用“gzip”。
gzip 是 Linux 的首选压缩工具。要缩小 tar 文件的大小,你可以发出以下命令:
gzip your_tar_file.tar
tar 文件就会被压缩。使用相同的命令也可以压缩普通文件,但 gzip 主要用于压缩文件。
压缩后的文件如下:your_tar_file.tar.gz
这两个文件扩展名表明,该文件是一个 tar 包,而且是用 “gzip”格式压缩的。现在你可以按照自己的喜好进行存储了。
将所有文件放在一起。
tar 内置了一个选项,可以在制作 tar 包的同时使用“gzip”压缩文件。如果在选项中加上 z,并将要创建的文件名改为 .gz 扩展名,就可以一步完成整个压缩过程。我们之前的例子将被修改为:
tar -czvf bob_backup.tar.gz *
请记住,f 永远是最后的选项。
使用 “tar”和“gzip”意味着你会在某一时刻“untar”(解压缩)和“unzip”(取消压缩)这些文件。
最简单的方法是在整个过程中使用“tar”。你可以找到相关的压缩包,然后问自己一个问题:
在我制作压缩包后,我是否对其中的文件做了任何更改?如果有,那么你得到的就是一个旧的压缩包。如果在同一目录下解压,就会覆盖现有文件。如果你想要旧文件的副本,请在不同的目录下解压。如果你不想要旧文件,那就应该制作一个新的压缩包。这是非常标准的备份做法。
当你决定好要做什么后,就可以执行 “解压缩”命令了:
tar -zxvpf my_tar_file.tar.gz
我使用了我的首选方案。下面我来解释一下:
-z - 先解压文件
-x - 从 tar 包中提取文件
-v - “verbose”(即 tar 会告诉你正在解压缩哪些文件)
-p - 保留原始文件的日期和权限
-f - 使用相关文件(如果不指定,tar 就会无所事事)
文件解压缩后,原始 tar 包将被保留(my_tar_file.tar.gz)。
你也可以解压缩文件,然后单独使用 gzip。只需省略上例中的 z 选项,然后键入
gzip -d my_tar_file.tar.gz
或者
gunzip my_tar_file.tar.gz
(gunzip 会 “自动 ”运行 gzip -d 命令!)
如果你只是压缩一个普通文件(而不是压缩包),这些命令就很有用。
大多数 Linux 发行版都自带其他压缩文件的工具。其中之一就是在 MS-DOS/Windows 世界中大名鼎鼎的 zip。如果你打算压缩文件送给(仍然)使用 Windows 操作系统的人,这可能是你最好的选择。如果有人给你一个用 “zip ”压缩的文件,你也可以使用 unzip。有关该工具的具体使用说明,请查阅 man 文件(man zip)。
还有一种工具正在 Linux 世界中迅速被接受:bzip2。事实上,Linux 内核源码包通常都是“bzip 压缩”的。当你编译内核(从源代码中为自己创建一个自定义内核)时,可以选择创建一个 bzip 内核。在不久的将来,这将成为正式的编译方式,因此了解“bzip2”可能是个好主意。
在实际使用中,你可以像使用“gzip”一样使用这个工具。压缩系数应该会更好一些。对于高级用户来说,在选项上有一些不同。更多信息请查阅 man bzip2。