文件与文件系统的压缩、打包和备份
- 1.压缩
- 1.1 压缩方法及其后缀
- 1.2 gzip
- 1.3 bzip2
- 1.4 xz
- 2.打包
- 3.XFS文件系统备份与还原
- 4.镜像文件创建(mkisofs)
1.压缩
1.1 压缩方法及其后缀
我们知道在 Linux 下面的扩展名是没有什么很特殊的意义的, 不过, 针对这些压缩指令所做出来的压缩文件, 为了方便记忆, 还是会有一些特殊的命名方式。
之所以有这么多的类型的压缩文件,这是因为 Linux 支持的压缩指令非常多, 且不同的指令所用的压缩技术并不相同, 当然彼此之间可能就无法互通压缩/解压缩文件。
Linux上常见的压缩指令就是 gzip, bzip2 以及最新的 xz , 至于 compress 已经退流行了。 为了支持 windows 常见的 zip, 其实 Linux 也早就有 zip 指令了! gzip 是由 GNU 计划所开发出来的压缩指令, 该指令已经取代了 compress 。 后来 GNU 又开发出 bzip2 及 xz 这几个压缩比更好的压缩指令! 不过, 这些指令通常仅能针对一个文件来压缩与解压缩, 如此一来, 每次压缩与解压缩都要一大堆文件, 岂不烦人? 此时, 那个所谓的“打包软件, tar”就显的很重要。单纯的 tar功能仅是“打包”而已, 亦即是将很多文件集结成为一个文件, 事实上, 他并没有提供压缩的功能, 后来, GNU 计划中, 将整个 tar 与压缩的功能结合在一起, 如此一来提供使用者更方便并且更强大的压缩与打包功能。
下面介绍文件压缩用得最多的gzip、bzip2、xz,其压缩效率:xz>bzip2>gzip;耗时:xz<bzip2<gzip
Tips:gzip、bzip2、xz压缩后,原本的文件会消失,解压缩的话压缩文件也会消失,这与window是不同的。
1.2 gzip
[root@CentOS7 tmp]# cp /etc/passwd /tmp/file
[root@CentOS7 tmp]# ls
file
[root@CentOS7 tmp]# ll
总用量 4
-rw-r--r-- 1 root root 3694 11月 8 22:28 file
[root@CentOS7 tmp]# gzip file
[root@CentOS7 tmp]# ls
file.gz
[root@CentOS7 tmp]# ll
总用量 4
-rw-r--r-- 1 root root 1432 11月 8 22:28 file.gz
[root@CentOS7 tmp]# gzip -d file.gz
[root@CentOS7 tmp]# ls
file
[root@CentOS7 tmp]# ll
总用量 4
-rw-r--r-- 1 root root 3694 11月 8 22:28 file
[root@CentOS7 tmp]#
压缩:gzip
解压缩:gzip -d
Tips:使用 gzip 压缩的文件在 Windows 系统中, 可以被 WinRAR/7zip 这个软件解压缩。
1.3 bzip2
用法和gzip一样。
1.4 xz
用法和gzip一样。
2.打包
上面讲到的压缩命令只能对文件进行压缩,但是当要压缩目录时,就需要用到打包命令tar了。
压 缩: tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称
查 询: tar -jtv -f filename.tar.bz2
解压缩: tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录
如果不加 [-z|-j|-J] 的话, 文件名最好取为 .tar 即可。 如果是 -j 选项, 代表有 bzip2 的支持, 因此文件名最好就取为 .tar.bz2。
[root@CentOS7 tmp]# mkdir fle
[root@CentOS7 tmp]# touch ./fle/file1
[root@CentOS7 tmp]# ls
file fle yum_save_tx.2024-11-09.06-23.ous4i8.yumtx
[root@CentOS7 tmp]# tar -jcv -f tmp.tar.bz2 file fle
file
fle/
fle/file1
[root@CentOS7 tmp]# ls
file fle tmp.tar.bz2 yum_save_tx.2024-11-09.06-23.ous4i8.yumtx
[root@CentOS7 tmp]# tar -jtv -f tmp.tar.bz2
-rw-r--r-- root/root 3694 2024-11-08 22:28 file
drwxr-xr-x root/root 0 2024-11-09 09:26 fle/
-rw-r--r-- root/root 0 2024-11-09 09:26 fle/file1
[root@CentOS7 tmp]# tar -jxv -f tmp.tar.bz2
file
fle/
fle/file1
[root@CentOS7 tmp]# ls
file fle tmp.tar.bz2 yum_save_tx.2024-11-09.06-23.ous4i8.yumtx
[root@CentOS7 tmp]# tar -jxv -f tmp.tar.bz2 -C ./fle
file
fle/
fle/file1
[root@CentOS7 tmp]# ls ./fle
file file1 fle
**Tips:打包的时候不会导致原来的文件消失;另外值得一提的是, tar 打包出来的文件有没有进行压缩所得到文件称呼不同喔! 如果仅是打包而已, 就是“ tar -cv -f file.tar ”而已, 这个文件我们称呼为 tarfile 。 如果还有进行压缩的支持, 例如“ tar -jcv -f file.tar.bz2 ”时, 我们就称呼为 tarball **
3.XFS文件系统备份与还原
备份一个文件系统:xfsdump
比如/boot就是一个xfs文件系统,将完整备份的文件名记录成为 /srv/boot.dump :
xfsdump -l 0 -L boot_all -M boot_all -f /srv/boot.dump /boot
文件系统备份的时候的累积操作:
还原一个文件系统:xfsrestore
xfsrestore -f /srv/boot.dump -L boot_all /boot
此外:dd 可备份完整的 partition 或 disk , 因为 dd 可读取磁盘的 sector 表面数据cpio 为相当优秀的备份指令, 不过必须要搭配类似 find 指令来读入欲备份的文件名数据, 方可进行备份动作。