linux解压缩命令
# zip&unzip
# zip命令
-q | 表示不显示压缩进度状态 |
---|---|
-r | 表示子目录子文件全部压缩为zip;这部分比较重要,不然的话只有something这个文件夹被压缩,里面的没有被压缩进去 |
-e | 表示你的压缩文件需要加密,终端会提示你输入密码的;还有种加密方法,这种是直接在命令行里做的,比如zip -r -P Password01! modudu.zip SomeDir, 就直接用Password01!来加密modudu.zip了 |
-m | 表示压缩完删除原文件 |
-o | 表示设置所有被压缩文件的最后修改时间为当前压缩时间 |
当前目录操作:zip -qremo dist.zip dist
当跨目录操作:zip -q -r -e -m -o '\user\samy\someDir\someFile.zip' '\users\someDir'
zip -r dist.zip dist/
zip -r bower_components.zip bower_components/
2
# unzip命令
语法:unzip [选项] 压缩文件名.zip
各选项的含义分别为:
-x 文件列表 解压缩文件,但不包括指定的file文件。
-v 查看压缩文件目录,但不解压。
-t 测试文件有无损坏,但不解压。
-d 目录 把压缩文件解到指定目录下。
-z 只显示压缩文件的注解。
-n 不覆盖已经存在的文件。
-o 覆盖已存在的文件且不要求用户确认。
-j 不重建文档的目录结构,把所有文件解压到同一目录下。 123456789101112131415
将压缩文件text.zip在当前目录下解压缩
unzip -o text.zip
将压缩文件text.zip在指定目录/tmp
下解压缩,如果已有相同的文件存在,要求unzip命令不覆盖原先的文件
unzip -n text.zip -d /tmp
查看压缩文件目录,但不解压
unzip -v text.zip
解压到指定目录:
unzip -d $WORKDIR/portal/ $WORKDIR/portal/AAWeb.zip
涉及前端相关:
httpdPath=/var/www/html/files/autorun/pro/portal
zip -r AAWeb.zip dist # 压缩
cp -rf AAWeb.zip $httpdPath/
unzip -o $WORKDIR/portal/AAWeb.zip # 解压
mv dist AAWeb
2
3
4
5
# tar
# 命令参数
tar [-ABcdgGhiklmMoOpPrRsStuUvwWxzZ][-b <区块数目>][-C <目的目录>][-f <备份文件>][-F <Script文件>][-K <文件>][-L <媒体容量>][-N <日期时间>][-T <范本文件>][-V <卷册名称>][-X <范本文件>][-<设备编号><存储密度>][--after-date=<日期时间>][--atime-preserve][--backuup=<备份方式>][--checkpoint][--concatenate][--confirmation][--delete][--exclude=<范本样式>][--force-local][--group=<群组名称>][--help][--ignore-failed-read][--new-volume-script=<Script文件>][--newer-mtime][--no-recursion][--null][--numeric-owner][--owner=<用户名称>][--posix][--erve][--preserve-order][--preserve-permissions][--record-size=<区块数目>][--recursive-unlink][--remove-files][--rsh-command=<执行指令>][--same-owner][--suffix=<备份字尾字符串>][--totals][--use-compress-program=<执行指令>][--version][--volno-file=<编号文件>][文件或目录...]
- -A或--catenate 新增文件到已存在的备份文件。
- -b<区块数目>或--blocking-factor=<区块数目> 设置每笔记录的区块数目,每个区块大小为12Bytes。
- -B或--read-full-records 读取数据时重设区块大小。
- -c或--create 建立新的备份文件。
- -C<目的目录>或--directory=<目的目录> 切换到指定的目录。
- -d或--diff或--compare 对比备份文件内和文件系统上的文件的差异。
- -f<备份文件>或--file=<备份文件> 指定备份文件。
- -F<Script文件>或--info-script=<Script文件> 每次更换磁带时,就执行指定的Script文件。
- -g或--listed-incremental 处理GNU格式的大量备份。
- -G或--incremental 处理旧的GNU格式的大量备份。
- -h或--dereference 不建立符号连接,直接复制该连接所指向的原始文件。
- -i或--ignore-zeros 忽略备份文件中的0 Byte区块,也就是EOF。
- -k或--keep-old-files 解开备份文件时,不覆盖已有的文件。
- -K<文件>或--starting-file=<文件> 从指定的文件开始还原。
- -l或--one-file-system 复制的文件或目录存放的文件系统,必须与tar指令执行时所处的文件系统相同,否则不予复制。
- -L<媒体容量>或-tape-length=<媒体容量> 设置存放每体的容量,单位以1024 Bytes计算。
- -m或--modification-time 还原文件时,不变更文件的更改时间。
- -M或--multi-volume 在建立,还原备份文件或列出其中的内容时,采用多卷册模式。
- -N<日期格式>或--newer=<日期时间> 只将较指定日期更新的文件保存到备份文件里。
- -o或--old-archive或--portability 将资料写入备份文件时使用V7格式。
- -O或--stdout 把从备份文件里还原的文件输出到标准输出设备。
- -p或--same-permissions 用原来的文件权限还原文件。
- -P或--absolute-names 文件名使用绝对名称,不移除文件名称前的"/"号。
- -r或--append 新增文件到已存在的备份文件的结尾部分。
- -R或--block-number 列出每个信息在备份文件中的区块编号。
- -s或--same-order 还原文件的顺序和备份文件内的存放顺序相同。
- -S或--sparse 倘若一个文件内含大量的连续0字节,则将此文件存成稀疏文件。
- -t或--list 列出备份文件的内容。
- -T<范本文件>或--files-from=<范本文件> 指定范本文件,其内含有一个或多个范本样式,让tar解开或建立符合设置条件的文件。
- -u或--update 仅置换较备份文件内的文件更新的文件。
- -U或--unlink-first 解开压缩文件还原文件之前,先解除文件的连接。
- -v或--verbose 显示指令执行过程。
- -V<卷册名称>或--label=<卷册名称> 建立使用指定的卷册名称的备份文件。
- -w或--interactive 遭遇问题时先询问用户。
- -W或--verify 写入备份文件后,确认文件正确无误。
- -x或--extract或--get 从备份文件中还原文件。
- -X<范本文件>或--exclude-from=<范本文件> 指定范本文件,其内含有一个或多个范本样式,让ar排除符合设置条件的文件。
- -z或--gzip或--ungzip 通过gzip指令处理备份文件。
- -Z或--compress或--uncompress 通过compress指令处理备份文件。
- -<设备编号><存储密度> 设置备份用的外围设备编号及存放数据的密度。
- --after-date=<日期时间> 此参数的效果和指定"-N"参数相同。
- --atime-preserve 不变更文件的存取时间。
- --backup=<备份方式>或--backup 移除文件前先进行备份。
- --checkpoint 读取备份文件时列出目录名称。
- --concatenate 此参数的效果和指定"-A"参数相同。
- --confirmation 此参数的效果和指定"-w"参数相同。
- --delete 从备份文件中删除指定的文件。
- --exclude=<范本样式> 排除符合范本样式的文件。
- --group=<群组名称> 把加入设备文件中的文件的所属群组设成指定的群组。
- --help 在线帮助。
- --ignore-failed-read 忽略数据读取错误,不中断程序的执行。
- --new-volume-script=<Script文件> 此参数的效果和指定"-F"参数相同。
- --newer-mtime 只保存更改过的文件。
- --no-recursion 不做递归处理,也就是指定目录下的所有文件及子目录不予处理。
- --null 从null设备读取文件名称。
- --numeric-owner 以用户识别码及群组识别码取代用户名称和群组名称。
- --owner=<用户名称> 把加入备份文件中的文件的拥有者设成指定的用户。
- --posix 将数据写入备份文件时使用POSIX格式。
- --preserve 此参数的效果和指定"-ps"参数相同。
- --preserve-order 此参数的效果和指定"-A"参数相同。
- --preserve-permissions 此参数的效果和指定"-p"参数相同。
- --record-size=<区块数目> 此参数的效果和指定"-b"参数相同。
- --recursive-unlink 解开压缩文件还原目录之前,先解除整个目录下所有文件的连接。
- --remove-files 文件加入备份文件后,就将其删除。
- --rsh-command=<执行指令> 设置要在远端主机上执行的指令,以取代rsh指令。
- --same-owner 尝试以相同的文件拥有者还原文件。
- --suffix=<备份字尾字符串> 移除文件前先行备份。
- --totals 备份文件建立后,列出文件大小。
- --use-compress-program=<执行指令> 通过指定的指令处理备份文件。
- --version 显示版本信息。
- --volno-file=<编号文件> 使用指定文件内的编号取代预设的卷册编号。
# 压缩
压缩文件 非打包
# touch a.c
# tar -zcvf test.tar.gz a.c //压缩 a.c文件为test.tar.gz
a.c
2
3
列出压缩文件内容
# tar -tzvf test.tar.gz
-rw-r--r-- root/root 0 2010-05-24 16:51:59 a.c
2
# 解压
解压文件
# tar -zxvf test.tar.gz
a.c
2
# 涉及前端相关
tar -zcvf AAWeb.tar.gz dist # 压缩
tar -zxvf AAWeb.tar.gz # 解压
mv dist AAWeb
tar zcvf pdf-render-puppeteer.tar.gz --exclude=./node_modules --exclude=./ztest --exclude=./.git ./
mkdir pdf-render-puppeteer
tar zxvf pdf-render-puppeteer.tar.gz -C pdf-render-puppeteer
2
3
4
5
6
7
# 指定目标目录
参数:-C
mkdir /data
ls /data
tar xf test1.tar.gz -C /data
ls /data/test/
2
3
4
# 排出指定文件打包
tar命令里面的目标文件是绝对路径格式,excludefile里面就也必须是绝对路径;
tar命令里面的目标文件是相对路径格式,excludefile里面就也必须是相对路径;
tar --exclude=abc/1.txt -zcvf abc.tar.gz abc
tar zcvf new1_test.tar.gz ./* --exclude=file{4,5}.txt #如果连续的,有规律,可以使用{}
2
# 实践
# 创建一个名为 abc 的目录
mkdir abc
# 进入 abc 这个目录
cd abc
# 创建两个文件,文件名为1.txt 2.txt
touch 1.txt 2.txt
# 切换到 abc 的父目录
cd ..
#排除目录中的某些文件,然后进行压缩。
#tar --exclude=目录名/* 或者 文件名 -zcvf 备份文件名.tgz 目录名
# 将文件 abc 进行压缩时,排除1.txt,压缩后的文件名为 abc.tar
tar --exclude=abc/1.txt -zcvf abc.tgz abc
tar --exclude=abc/1.txt -zcvf abc.tar.gz abc
#tar -zcvf update.tar.gz update
# 解压文件
tar -zxvf abc.tgz
tar -zxvf abc.tar.gz
# 删除压缩文件
rm abc.tgz
# 删除解压后的文件,并删除文件夹
rm -rf abc
#打包时加上当时日期
tar zcf /opt/test_$(date +%F).tar.gz ./test
#过滤多个文件夹(文件):如果想要过滤掉多个的话,就写多个–exclude=想要过滤掉的文件 就行了
tar -zcvf aaa/bbb/aabb.tar.gz --exclude=aaa/ccc --exclude=aaa/ddd --exclude=aaa/eee.txt aaa
#这条命令就是指排除掉aaa 目录下的ccc, ddd, ddd.txt 三个目标文件
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# jar
# 命令参数
其中{ctxu}这四个选项必须选其一。[v f m e 0 M i ]是可选选项,文件名也是必须的。
- -c 创建一个jar包
- -t 显示jar中的内容列表
- -x 解压jar包
- -u 添加文件到jar包中
- -f 指定jar包的文件名
- -v 生成详细的报造,并输出至标准设备
- -m 指定manifest.mf文件.(manifest.mf文件中可以对jar包及其中的内容作一些一设置)
- -0 产生jar包时不对其中的内容进行压缩处理
- -M 不产生所有文件的清单文件(Manifest.mf)。这个参数与忽略掉-m参数的设置
- -i 为指定的jar文件创建索引文件
- -C 表示转到相应的目录下执行jar命令,相当于cd到那个目录,然后不带-C执行jar命令
# 查看内容
jar tvf hello.jar #查看hello.jar包的内容; 指定的jar包必须真实存在,否则会发生FileNoutFoundException。
vim samy-0.0.1-SNAPSHOT.jar #第二种方式
jar tvf hello.jar >hello.txt #导出解压列表
#如果你想查看解压一个jar的详细过程,而这个jar包又很大,屏幕信息会一闪而过,
#这时你可以把列表输出到一个文件中,慢慢欣赏!
2
3
4
5
6
7
# 压缩
简单打包
jar -cvf xxx.jar *
解压的文件放到某个文件夹下,然后进入这个文件里使用命令压缩
jar cvfm0 samy.jar META-INF/MANIFEST.MF .
# 解压
jar -xvf samy.jar
jar cvfM TestZIP.jar test #加M参数为了不生成META-INF相关内容
2
3
# 实践
# 新增/更新jar中文件
简单操作:要确保本地的包路径跟jar中的路径结构一致;
jar uvf ZBDPWeb-5.0.jar META-INF/test.js #替换目录下文件
jar uvf ZBDPWeb-5.0.jar META-INF/resources #替换目录下文件
2
方案一:通过jar命令替换jar中的文件【推荐】
列出jar包中的文件清单
jar tf samy-0.0.1-SNAPSHOT.jar
提取出内部jar包的指定文件
jar xf samy-0.0.1-SNAPSHOT.jar BOOT-INF/classes/realtime/t_ivr_data_bj.json
然后可以修改文件
vim BOOT-INF/classes/realtime/t_ivr_data_bj.json
更新配置文件到内部jar包.(存在覆盖,不存在就新增)
jar uf samy-0.0.1-SNAPSHOT.jar BOOT-INF/classes/realtime/t_ivr_data_bj.json
更新内部jar包到jar文件:
jar uf samy-0.0.1-SNAPSHOT.jar 内部jar包.jar
可以查看验证是否已经更改
vim samy-0.0.1-SNAPSHOT.jar
方案二:解压jar包,修改后重新打包jar
解压
unzip samy-0.0.1-SNAPSHOT.jar
移除jar包,最好备份
rm samy-0.0.1-SNAPSHOT.jar
重新打包
jar -cfM0 new-samy-0.0.1-SNAPSHOT.jar *
或者
jar -cvfm0 samy-0.0.1-SNAPSHOT.jar ./META-INF/MANIFEST.MF ./
运行
java -jar new-samy-0.0.1-SNAPSHOT.jar
总括:现在有2中可以行的方案:
1: 在Linux下把jar包解压,替换,打成jar。这样比较麻烦,这windos还不能用。
2 :可以直接用Java jar 工具来替换。
jar uvf test.jar test.class
这样会直接把test.class 直接添加到jar包的根目录。
jar uvf test.jar com/test/test.class
这样就可以替换相应目录的class文件了。
这里值得注意的是 test.class 必须放在com/test 文件下,要和jar的路径对应起来。不然会说没有这个文件或目录。jar 包 和 com 文件夹的上级在同一个目录。
# 相关链接
https://www.cnblogs.com/vurtne-lu/p/6208459.html