我们日常与Linux服务器的连接方式一般都是SSH,对于短时执行的指令来讲基本上没有什么问题。但是对于耗时的指令我们则有时会碰到指令执行一半网络中断或者手欠自己关闭客户端的情况。
因此在Linux服务器压缩大文件或大文件夹时我们通常应注意以下几点:
- 大文件压缩及解压需要在后台进行,如果要查看解压详情,就要输出重定向。
- 远程服务器,要防止网络断开连接,导致终端关闭,此时终端断开,即使后台进行,解压以及压缩也会停止。解决方法:在指令前加nohup。
- 小文件可以在前面加压缩及解压指令前加time,查看压缩及解压时间。
- 压缩时最好在需要压缩的源文件夹的同级目录运行。
常用压缩指令:
.tar.xz
压缩率最高,但需要压缩的时间较长。
- //压缩
- time tar -Jcvf test.tar.xz test //压缩小文件查看压缩时间
- nohup tar -Jcf test.tar.xz test & //大文件后台压缩(输出后回车、再回车)--这里不加参数v
- nohup tar -Jcvf test.tar.xz test > compress.log 2>&1 & //大文件后台压缩并将日志输出到compress.log
- //解压
- tar -Jxvf test.tar.x //直接解压
- time tar -Jxvf test.tar.xz -C test2/ //解压小文件到test2/查看压缩时间
- nohup tar -Jxf test.tar.xz -C test2/ & //大文件后台解压到test2/(输出后回车、再回车)--这里不加参数v
- nohup tar -Jxvf test.tar.xz -C test2/ > compress.log 2>&1 & //大文件后台解压并将日志输出到compress.log
.zip
time、nohup和后台运行使用方法同上。比较常用的文档压缩格式,最大的有点是跨平台,缺点是支持的压缩率不是很高。
- //压缩
- zip -r test.zip test
- //解压
- unzip test.zip //直接解压
- unzip test.zip -d test2/ //解压到test2/
.tar
time、nohup和后台运行使用方法同上。好处是只消耗非常少的CPU及时间打包,只是一个打包工具,并不负责压缩
- //压缩
- tar -jcvf test.tar test
- //解压
- tar -xvf test.tar //直接解压
- tar -xvf test.tar -C test2/ //解压到test2/
.tar.gz
time、nohup和后台运行使用方法同上。压缩时不会占用太多的CPU,就可以得到一个非常理想的压缩率。
- //压缩
- tar -zcvf test.tar.gz test
- //解压
- tar -zxvf test.tar.gz
- tar -zxvf test.tar.gz -C test2/
.tar.bz2
time、nohup和后台运行使用方法同上。这种压缩格式是这几种方式中压缩率几乎最好的
- //压缩
- tar -jcvf test.tar.bz2 test
- //解压
- tar -jxvf test.tar.bz2
- tar -jxvf test.tar.bz2 -C test2/
.7z
- //压缩
- 7z a -r test.7z test/*
- //解压
- 7z x test.7z -r -otest2/
- -r 表示递归所有的子文件夹
- -o 是指定解压到的目录,这里大家要注意-o后是没有空格的直接接目录
- //分包压缩
- nohup 7z a -v256m test.7z test > compress.log 2>&1 & //压缩每个包256m,并输出日志到compress.log
- nohup 7z a -v1g test.7z test > compress.log 2>&1 & //压缩每个包1g,并输出日志到compress.log
- nohup 7z a -v1g test.7z test -mx=0 > compress.log 2>&1 & //压缩每个包1g,并输出日志到compress.log, -mx=0表示只打包,不压缩。
示例:注意最后的“&”符号一定要有
- nohup tar -zcvf static.tar.gz static >compress.txt 2>&1 &
以上内容是对Linux压缩大文件和大目录的内容整理,如有遗漏欢迎补充。除了nohup之外,我们也可以通过screen来管理会话。