先来三段花里胡哨的命令
小技巧
- 组合压缩有时会进一步节约空间
- Gzip vs Bzip2 vs LZMA vs XZ vs LZ4 vs LZO 有的时候组合使用会减少空间 有的时候单独压缩一个文件会变大 这取决于你选择的算法与你中彩票的运气
- 7z+lzma足以解决大多数问题 显示进度 压缩率 数据完整性 速度 是完美的六边形战士
7zip
```shell
sudo 7za a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=200m -mf -mhc -mhcf yourfile.7z ./yourfile.dmp &
解压
sudo 7z x manager.7z -r -o /home/xx
解释
7z
-t7z 创建7z文件
-m0=lzma 使用 lzma 压缩方法,该方法最优了吧
-mx=9 压缩等级 = 9 (超级)
-mfb=64 fast bytes for LZMA = 64
-md=32m 字典大小 = 32 m
-ms=200m -- 开启固实模式,设置固实数据流大小为200MB。
-mf -- 开启可执行文件压缩过滤器。
-mhc -- 开启档案文件头压缩。
-mhcf -- 开启档案文件头完全压缩
& 在Linux后台运行
##### tar lzma
```shell
# 压缩
sudo tar -c --lzma -f test.tar.lzma bigFile
# 解压
unlzma test.tar.lzma
tar xvf test.tar
tar进度条
sudo apt-get install pv
tar -cf - questions.sql | pv -s $(du -sb questions.sql | awk '{print $1}') | gzip > question.tar.gz
# 详解
-cf 创建 指定目标
-* 代表将需要压缩的数据输出到 stdout(标准输出),这样管道的后面才可以接收到需要处理的数据。
pv 将输入复制一遍然后输出到 stdout
pv -s * 获取需要处理的所有数据的大小(单位:字节),mac 下 du -sk 获取到的数值是以 k 为单位的,而其他 linux 系统则不一样,参数需要改为 du -sb,同时也不需要再乘以 1024。
gzip 命令把前面的输出处理之后保存到 question.tar.gz。
# 解压
pv question.tar.gz | tar -zxf -
bzip2
bzip2 -k install.log.syslog
这两个命令都使用了lzma压缩 压缩大文件结果相同
参数详解(很多工具参数(代表的字母)互通 效果一样)
# tar
-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令!
-t :查看 tarfile 里面的文件!
特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!
因为不可能同时压缩与解压缩。
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
例如使用『 tar -zcvfP tfile sfile』就是错误的写法,要写成
『 tar -zcvPf tfile sfile』才对喔!
-p :使用原文件的原来属性(属性不会依据使用者而变)
-P :可以使用绝对路径来压缩!
-N :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中!
--exclude FILE:在压缩的过程中,不要将 FILE 打包!
# 7z
7-Zip [32] 16.04 : Copyright (c) 1999-2016 Igor Pavlov : 2016-10-04
Usage: 7z <command> [<switches>...] <archive_name> [<file_names>...]
[<@listfiles...>]
<Commands>
a : Add files to archive
b : Benchmark
d : Delete files from archive
e : Extract files from archive (without using directory names)
h : Calculate hash values for files
i : Show information about supported formats
l : List contents of archive
rn : Rename files in archive
t : Test integrity of archive
u : Update files to archive
x : eXtract files with full paths
<Switches>
-- : Stop switches parsing
-ai[r[-|0]]{@listfile|!wildcard} : Include archives
-ax[r[-|0]]{@listfile|!wildcard} : eXclude archives
-ao{a|s|t|u} : set Overwrite mode
-an : disable archive_name field
-bb[0-3] : set output log level
-bd : disable progress indicator
-bs{o|e|p}{0|1|2} : set output stream for output/error/progress line
-bt : show execution time statistics
-i[r[-|0]]{@listfile|!wildcard} : Include filenames
-m{Parameters} : set compression Method
-mmt[N] : set number of CPU threads
-o{Directory} : set Output directory
-p{Password} : set Password
-r[-|0] : Recurse subdirectories
-sa{a|e|s} : set Archive name mode
-scc{UTF-8|WIN|DOS} : set charset for for console input/output
-scs{UTF-8|UTF-16LE|UTF-16BE|WIN|DOS|{id}} : set charset for list files
-scrc[CRC32|CRC64|SHA1|SHA256|*] : set hash function for x, e, h commands
-sdel : delete files after compression
-seml[.] : send archive by email
-sfx[{name}] : Create SFX archive
-si[{name}] : read data from stdin
-slp : set Large Pages mode
-slt : show technical information for l (List) command
-snh : store hard links as links
-snl : store symbolic links as links
-sni : store NT security information
-sns[-] : store NTFS alternate streams
-so : write data to stdout
-spd : disable wildcard matching for file names
-spe : eliminate duplication of root folder for extract command
-spf : use fully qualified file paths
-ssc[-] : set sensitive case mode
-ssw : compress shared files
-stl : set archive timestamp from the most recently modified file
-stm{HexMask} : set CPU thread affinity mask (hexadecimal number)
-stx{Type} : exclude archive type
-t{Type} : Set type of archive
-u[-][p#][q#][r#][x#][y#][z#][!newArchiveName] : Update options
-v{Size}[b|k|m|g] : Create volumes
-w[{path}] : assign Work directory. Empty path means a temporary directory
-x[r[-|0]]{@listfile|!wildcard} : eXclude filenames
-y : assume Yes on all queries
# zip
-1 : 最快压缩,压缩率最差。
-9 : 最大压缩,压缩率最佳。
-b : 暂存文件的路径。这个参数一般在要产生的 zip 文件存在,而硬盘现有空间不足时。
-c : 替新增或更新的文件增加一行注解。
-d : 从 zip 文件移出一个文件。
-D : 不要在 zip 文件中储存文件的目录信息。
-f : 以新文件取代现有文件。
-F : 修复已经损毁的压缩文件。
-g : 将文件压缩附加到 zip 文件中。
-h : 显示辅助说明。
-i : 指定要含入的某些特定文件。
-j : 只储存文件的名称,不含目录。
-k : 强迫使用 MSDOS 格式文件名。
-l : 将 CR ( Carriage Return ) LF ( Line Feed ) 转换成 LF,一般是要将 MS-DOS 上的文本文件压缩后拿到 UNIX 下使用时才使用此参数。这只适用于文本文件 ( .txt ),如果用于二进制文件则会造成二进制文件损毁。
-L : 显示 zip 命令的版权。
-m : 将特定文件移入 zip 文件中,并且删除特定文件。
-n : 不压缩特定扩展名的文件。
-o : 将 zip 文件的时间设成最后修正 zip 文件的时间。
-q : 安静模式,不会显示相关讯息和提示。
-r : 包括子目录。
-t : 只处理 mmddyy 日期以后的文件。
-T : 测试 zip 文件是否正常。
-u : 只更新改变过的文件和新文件。
-v : 显示版本资讯或详细讯息。
-x : 不需要压缩的文件。
-y : 将 symbolic link 压缩,而不是压缩所连结到的文件。
-z : 为 zip 文件增加注解。
-# : 设定压缩速度,-0 表示不压缩,-1 表示最快速度的压缩,
-9 :表示最慢速度的压缩 ( 最佳化的压缩 ),预设值为 -6。
-@ : 从标准输入读取文件名称。
# bzip2
-c, --stdout
将数据压缩或解压缩输出至标准输出
-d, --decompress
强制解压缩。 bzip2, bunzip2 以及 bzcat 实际上是同一个程序,进行何种操作将根据程序名确定。 指定该选项后将不考虑这一机制,强制 bzip2 进行解压缩
-z, --compress
-d 选项的补充:强制进行压缩操作,而不管执行的是哪个程序
-t, --test
检查指定文件的完整性,但并不对其解压缩。 实际上将对数据进行实验性的解压缩操作,而不输出结果
-f, -force
强制覆盖输出文件。通常 bzip2 不会覆盖已经存在的文件。该选项还强制 bzip2 打破文件的硬连接,缺省情况下 bzip2 不会这么做。
-k, --keep
在压缩或解压缩时保留输入文件(不删除这些文件)
-s, --small
在压缩、解压缩及检查时减少内存用量。 采用一种修正的算法进行压缩和测试, 每个数据块仅需要 2.5 个字节。 这意味着任何文件都可以在 2300K 的内存中进行解压缩, 尽管速度只有通常情况下的一半。在压缩时,-s 将选定 200K 的块长度,内存用量也限制在 200K 左右, 代价是压缩率会降低。 总之,如果机器的内存较少(8MB 或更少), 可对所有操作都采用 -s 选项
-q, --quiet
压制不重要的警告信息。属于 I/O 错误及其它严重事件的信息将不会被压制
-v, --verbose
详尽模式——显示每个被处理文件的压缩率。 命令行中更多的 -v 选项将增加详细的程度, 使 bzip2 显示出许多主要用于诊断目的信息
-L, --license, -V, --version
显示显示软件版本、许可证条款及分发条件
-1 (or --fast) to -9 (or --best)
在压缩时将块长度设为 100 k、200 k ... 900 k。 对解压缩没有影响
--
将所有后面的命令行变量看作文件名,即使这些变量以减号 - 打头。 可用这一选项处理以减号 - 打头的文件名, 例如:bzip2 -- -myfilename
--repetitive-fast, --repetitive-best
这些选项在 0.9.5 及其以上版本中是多余的。 在较早的版本中,这两个选项对排序算法的行为提供了一些粗糙的控制,有些情况下很有用。 0.9.5 及其以上版本采用了改进的算法而与这些选项无关