Linux 文件目录压缩与解压命令,融合多部Linux经典著作,去除多余部分,保留实用部分。
compress压缩: compress是个历史悠久的压缩程序,文件经它压缩后,其名称后面会多出 ".Z" 的扩展名。
代码语言:javascript复制[root@localhost ~]# yum install -y ncompress
[root@localhost ~]# compress --help
命令语法:[ compress [选项] 文件或目录 ]
-f #强制覆盖掉目标文件
-c #将结果送到标准输出,无文件被改变
-r #递归的操作方式
-b 数字 #压缩效率是一个介于9~16
-d #对文件进行解压缩而非压缩
-v #显示指令执行过程
通过使用compress -c
命令压缩一个文件.
[root@localhost ~]# ls -lh
total 944K
-rwxr-xr-x. 1 root root 942K Sep 26 2017 bash
[root@localhost ~]# compress -c bash > bash.Z
[root@localhost ~]# ls -lh
total 1.6M
-rwxr-xr-x. 1 root root 942K Sep 26 2017 bash
-rw-r--r--. 1 root root 596K Nov 16 06:38 bash.Z
通过使用compress -d
命令解压一个文件.
[root@localhost ~]# ls -lh
total 596K
-rw-r--r--. 1 root root 596K Nov 16 06:38 bash.Z
[root@localhost ~]# compress -d bash.Z
[root@localhost ~]# ls -lh
total 944K
-rw-r--r--. 1 root root 942K Nov 16 06:38 bash
zip压缩: zip命令压缩的拓展名.zip 各种系统都支持zip的压缩格式,所以在一定程度上,是可以通用的.
代码语言:javascript复制[root@localhost ~]# yum install -y zip unzip
[root@localhost ~]# zip --help
命令语法:[ zip/unzip [选项] 文件或目录 ]
-r #递归压缩,连同子目录一同压缩
-S #包含系统和隐藏文件
-v #显示指令执行过程
-q #不显示指令执行过程
通过使用zip -r -v
命令将/etc/目录全部内容压缩.
[root@localhost ~]# zip -r -v lyshark.zip /etc/
[root@localhost ~]# ls -lh
total 12M
-rw-r--r--. 1 root root 12M Nov 16 09:46 lyshark.zip
使用unzip -l
命令查询一个压缩包中的文件.
[root@localhost ~]# unzip -l lyshark.zip
使用unzip -d
命令将文件解压到指定目录.
[root@localhost ~]# unzip lyshark.zip -d /tmp/
[root@localhost ~]# ls -lh /tmp/
total 12K
drwxr-xr-x. 84 root root 8.0K Nov 6 11:02 etc
gzip压缩: gzip是Linux系统默认支持的压缩格式,其可以与tar命令结合使用,gzip对文本文件有60%~70%的压缩率。
代码语言:javascript复制[root@localhost ~]# gzip --help
命令语法:[ gzip/zcat [选项] 文件或目录 ]
-a #使用ASCII文字模式
-d #解开压缩文件
-f #强行压缩文件
-l #列出压缩文件的相关信息
-n #压缩时,不保存原来的文件名称及时间戳
-N #压缩时,保存原来的文件名称及时间戳
-q #不显示警告信息
-r #递归处理
-v #显示指令执行过程
通过使用gzip -rv
命令压缩一个文件.
[root@localhost ~]# ls -lh
total 944K
-rwxr-xr-x. 1 root root 942K Sep 26 2017 bash
[root@localhost ~]# gzip -rv bash
bash: 51.2% -- replaced with bash.gz
[root@localhost ~]# ls -lh
total 460K
-rwxr-xr-x. 1 root root 460K Sep 26 2017 bash.gz
通过使用gzip -l/zcat -l
命令查询一个文件.
[root@localhost ~]# gzip -l bash.gz
compressed uncompressed ratio uncompressed_name
470300 964544 51.2% bash
[root@localhost ~]# zcat -l bash.gz
compressed uncompressed ratio uncompressed_name
470300 964544 51.2% bash
通过使用gzip -dv / zcat
命令解压一个文件.
[root@localhost ~]# ls -lh
total 460K
-rwxr-xr-x. 1 root root 460K Sep 26 2017 bash.gz
[root@localhost ~]# gzip -dv bash.gz
bash.gz: 51.2% -- replaced with bash
[root@localhost ~]# zcat -d bash.gz >bash_zcat
bzip2压缩: bzip2命令用于创建和管理,包括解压缩,使用这个命令必须要先安装,因为这个命令并没有集成安装.
代码语言:javascript复制[root@localhost ~]# yum install -y bzip2
[root@localhost ~]# bzip2 --hlep
命令语法:[ bzip2/bzcat [选项] 文件或目录 ]
-c #输出压缩解压过程
-d #执行解压缩
-k #解压后保留原始文件
-v #压缩或解压时详细输出
-z #强制执行压缩
通过使用bzip2 -kzv
命令将bash文件压缩.
[root@localhost ~]# ls -lh
total 944K
-rwxr-xr-x. 1 root root 942K Sep 26 2017 bash
[root@localhost ~]# bzip2 -kzv bash
bash: 2.164:1, 3.697 bits/byte, 53.79% saved, 964544 in, 445742 out.
通过使用bzip2 -kdv
命令解压缩bash.bz2文件.
[root@localhost ~]# ls -lh
total 436K
-rwxr-xr-x. 1 root root 436K Sep 26 2017 bash.bz2
[root@localhost ~]# bzip2 -kdv bash.bz2
bash.bz2: done
tar 归档并压缩: 该命令常常与gz,bz2等压缩命令结合使用。
代码语言:javascript复制[root@localhost ~]# tar --hlep
命令语法:[ tar [选项] 文件或目录 ]
-c #新建打包
-t #查看打包文件
-x #解压打包文件
-j #通过bz2进行压缩与解压
-z #通过gz进行压缩与解压
-J #通过xz进行压缩与解压
-v #显示压缩与解压过程
-C #指定解压到哪里
通过使用tar -czvf xzvf tvf
命令压缩解压与查询.
[root@localhost ~]# tar -czvf lyshark.tar.gz /etc/* #将/etc/*目录下的内容压缩成lyshark.tar.gz
[root@localhost ~]# tar -tvf lyshark.tar.gz #查询包中的内容
[root@localhost ~]# tar -xzvf lyshark.tar.gz -C /etc/ #将压缩包,解压到/etc/目录下
通过使用tar -cjvf xjvf tvf
命令压缩解压与查询.
[root@localhost ~]# tar -cjvf lyshark.tar.bz2 /etc/* #将/etc/*目录下的内容压缩成lyshark.tar.bz2
[root@localhost ~]# tar -tvf lyshark.tar.bz2 #查询包中的内容
[root@localhost ~]# tar -xjvf lyshark.tar.bz2 -C /etc/ #将压缩包,解压到/etc/目录下
通过使用tar -cJvf xJvf tvf
命令压缩解压与查询.
[root@localhost ~]# tar -cJvf lyshark.tar.xz /etc/* #将/etc/*目录下的内容压缩成lyshark.tar.xz
[root@localhost ~]# tar -tvf lyshark.tar.xz #查询包中的内容
[root@localhost ~]# tar -xJvf lyshark.tar.xz -C /etc/ #将压缩包,解压到/etc/目录下
cpio块级压缩: cpio用来建立或者还原备份的工具程序,cpio命令可以备份任何东西包括设备文件。
代码语言:javascript复制[root@localhost ~]# cpio --help
压缩语法:[ cpio –cvBo > [文件|设备] ]
-c #使用portable format存储方式
-v #显示过程
-B #设定输入输出块为512bytes
-o #进入copy-out模式(压缩)
查看语法:[ cpio –ivct < [cpio文件] ]
-i #将数据从文件复制到系统中
-c #使用portable format存储方式
-t #查看CPIO压缩包内容
还原语法:[ cpio –idvcu < [cpio文件] ]
-i #进入copy-in模式(解压)
-d #恢复到指定位置(视压缩方式恢复)
-v #显示过程
-c #使用portable format存储方式
-u #替换所有文件,无提示
使用cpio -cvBo
命令,来备份/etc/目录
[root@localhost ~]# find /etc/ -print | cpio -cvBo > /root/etc.cpio
[root@localhost ~]# ls -lh
total 109M
-rw-r--r--. 1 root root 109M Nov 16 10:50 etc.cpio
使用cpio -cvBo
命令,将/etc/目录下的内容备份到/sdb磁盘
[root@localhost ~]# find /etc/ -print | cpio -cvBo > /dev/vdb
使用cpio -ivct
命令查询,压缩包内容
[root@localhost ~]# ls -lh
total 109M
-rw-r--r--. 1 root root 109M Nov 16 10:50 etc.cpio
[root@localhost ~]# cpio -ivct < etc.cpio
使用cpio -idvcu
还原文件到/etc/目录
[root@localhost ~]# ls -lh
total 109M
-rw-r--r--. 1 root root 109M Nov 16 10:50 etc.cpio
[root@localhost ~]# cpio -idvcu < /root/etc.cpio
制作ISO镜像: mkisofs命令用来将指定的目录与文件做成ISO 9660格式的映像文件。
代码语言:javascript复制[root@localhost ~]# mkisofs --help
命令语法:[ mkisofs [选项] 文件或目录 ]
-o #后面接镜像名
-r #连同文件属性一起记录
-v #显示构建过程
-m #排除指定文件
-V #新建volume
通过mkisofs
制作一个镜像将/etc目录制作成lyshark.iso.
[root@localhost ~]# mkisofs -r -v -o /root/lyshark.iso /etc/
[root@localhost ~]# ls -lh
total 123M
-rw-r--r--. 1 root root 123M Nov 16 11:14 lyshark.iso
磁盘测速与拷贝: dd命令用于磁盘测速与备份,该命令很底层所以可以完成很多备份工具无法完成的功能。
代码语言:javascript复制[root@localhost ~]# dd --help
备份语法:[ dd [if=源文件] [of=输出] [count=计数] ]
if=文件名 #输入文件名
of=文件名 #输出文件名
bs=bytes #读入计数
count=blocks #仅拷贝blocks个块
/dev/zero #是字符设备会不断返回0值字节
/dev/null #空设备,相当于一个垃圾桶
通过使用dd进行磁盘测速,测磁盘读写速度(可分别测试1024,2048,4096,8192)
代码语言:javascript复制[root@localhost ~]# dd if=/dev/zero of=/dev/null bs=1024 count=10000
10000 0 records in
10000 0 records out
10240000 bytes (10 MB) copied, 0.00852247 s, 1.2 GB/s
通过使用dd进行磁盘常规备份
代码语言:javascript复制#将本地的 /dev/sda 整盘备份到 /dev/hdd
[root@localhost ~]# dd if=/dev/sda /of=/dev/hdd
#将 /dev/sda 全盘数据备份成指定路径的image文件
[root@localhost ~]# dd if=/dev/sda of=/tmp/image
#将image备份文件恢复到指定盘/dev/sdb
[root@localhost ~]# dd if=/tmp/image of=/dev/sdb
#备份 /dev/sda 全盘数据,并利用gzip工具进行压缩,保存到/tmp/image.gz
[root@localhost ~]# dd if=/dev/sda | gzip > /tmp/image.gz
#恢复,将压缩的备份文件 /tmp/image.gz ,恢复到制定盘 /dev/sdb
[root@localhost ~]# gizp -dc /tmp/image.gz | dd of=/dev/sdb
通过使用dd命令备份磁盘MBR,与恢复分区MBR.
代码语言:javascript复制#备份MBR,备份磁盘 /dev/sda 开始的512个字节大小的MBR信息到指定文件/tmp/mbr512
#其中:count=1 指仅拷贝一个块;bs=512 指块大小为512个字节
[root@localhost ~]# dd if=/dev/sda of=/tmp/mbr512 count=1 bs=512
1 0 records in
1 0 records out
512 bytes (512 B) copied, 0.00015245 s, 3.4 MB/s
#恢复MBR,将备份 /tmp/mbr512 的MBR信息写到磁盘开始部分 /dev/sda
[root@localhost ~]# dd if=/tmp/mbr512 of=/dev/sda
1 0 records in
1 0 records out
512 bytes (512 B) copied, 0.000201242 s, 2.5 MB/s
通过使用dd命令拷贝内存数据与光盘数据到指定位置。
代码语言:javascript复制#拷贝内存内容到磁盘
[root@localhost ~]# dd if=/dev/mem of=/tmp/mem_image bs=1024(指定块大小为1k)
dd: error reading ‘/dev/mem’: Bad address
632 0 records in
632 0 records out
647168 bytes (647 kB) copied, 0.001591 s, 407 MB/s
#拷贝光盘内容到指定文件夹,并保存为/tmp/LyShark.iso文件
[root@localhost ~]# dd if=/dev/sr0 of=/tmp/LyShark.iso
1249 0 records in
1248 0 records out
638976 bytes (639 kB) copied, 0.368021 s, 1.7 MB/s
#利用随机数填充磁盘,彻底销毁磁盘 /dev/sdb 数据
[root@localhost ~]# dd if=/dev/urandom of=/dev/sdb