img解包工具_3、Linux基础命令篇、压缩打包工具

        在管理系统中,我们遇到经常会使用后缀为*.tar.gz |*.tar.bz2 等文件,他们是什么文件呢?请看下面介绍及使用方法

        压缩的原理,比如一个字符串"www.baidu.com" 在文件中出现了10万次,那么我们可以用一个字母来表现,比如用m,当让算法不同,所以压缩的机制也不同。

一、压缩工具

    1、file-roller 图形化压缩文件工具,和windows的类似。

    2、compress

#这个压缩工具,不指定参数的时候,会将源文件删除[root@jumpserver test]# yum -y install ncompress[root@jumpserver test]# compress group [root@jumpserver test]# lsetc  group.Z
参数                -d 解压,相当于uncompress                -c 显示输出的至标准输出,不删除源文件                -v 显示详情 #显示标准输出重定向文件也可以压缩[root@jumpserver test]# compress -c group >group.Z[root@jumpserver test]# lsetc  group  group.Z

3、gzip filename/gunzip

        选项

b3bf26733e48c9c2a4470c08106f5daf.png

#压缩[root@jumpserver test]# gzip group[root@jumpserver test]# lsetc  f1.Z  group.gz  group.Z#解压缩[root@jumpserver test]# gzip -d group[root@jumpserver test]# lsetc  f1.Z  group  group.Z#重定向压缩[root@jumpserver test]# gzip -c group >group.gz[root@jumpserver test]# lsetc  f1.Z  group  group.gz  group.Z

4、bzip2  -k

55d063f6a2caeba0a12b5a9f70a10a45.png

#压缩[root@jumpserver test]# bzip2 -k resolv.conf [root@jumpserver test]# lsresolv.conf  resolv.conf.bz2#解压缩[root@jumpserver test]# bzip2 -d resolv.conf.bz2 [root@jumpserver test]# lsresolv.conf#查看压缩的文件[root@jumpserver test]# bzcat resolv.conf.bz2 # Generated by NetworkManagersearch openstacklocalnameserver 127.0.0.1

5、xz

6ea76b50716d394c66edac26f642aa34.png



上诉压缩工具,只能对单个文件进行压缩,要对多个文件夹,或多个文件进行压缩,可以使用zip -r 命令进行压缩

6、zip

57d630e07f43bc83e068a6e1fc05d7c2.png

#对文件夹进行递归压缩,缺点压缩速度相对较慢[root@jumpserver test]# zip -r etc1.zip ./etc/adding: etc/selinux/targeted/active/modules/100/fetchmail/cil (stored 0%)  adding: etc/selinux/targeted/active/modules/100/fetchmail/hll (deflated 10%)  adding: etc/selinux/targeted/active/modules/100/fetchmail/lang_ext (stored 0%)#解压unzip etc1.zip

二、打包工具

        一般情况下,打包工具tar命令和压缩工具一起使用

tar 命令选项下面的选项是独立的,压缩或者解压都可以用到-c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件   
下面的参数-f是必须的-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名
#下面为压缩的时候增加的选项参数-z:有gzip属性的-j:有bz2属性的-Z:有compress属性的-v:显示所有过程-O:将文件解开到标准输出

用法:

         打包:tar  选项[-f]  包名  要打包的文件  

         解包:tar  xf 包名   [-C 指定解包的目录,不指定的时候为当前路径]

例如:#将当前所有的文件进行打包,取名为all.tar[root@jumpserver test]# tar cvf all.tar  ./*#解包[root@jumpserver test]# tar xf all.tar#查看包里面的内容 [root@jumpserver test]# tar tf all.tar#追加文件到包里面[root@jumpserver test]# touch 111111111111111111111111111111111111111.txt[root@jumpserver test]# tar -rf all.tar 111111111111111111111111111111111111111.txt#查看尾部是否追加进去[root@jumpserver test]# tar -tf all.tar#打包并压缩gz后缀[root@jumpserver test]# tar zcvf all.tar.gz ./*#打包并压缩bz2后缀[root@jumpserver test]# tar jcvf all.tar.bz2 ./*其中 后缀为*.tgz=*.tar.gz

三、包分割工具,当我们打包的时候这个文件很大,我们可以将其进行分割,分割成小文件    

87679a9386c997007211ad890faa441d.png

#分割后再整合成一个包 -d 指定为数字,-b指定大小[root@jumpserver test]# split -d -b 10M all.tar.bz2 all.tar.bz2#合并成一个包,cat 一下重定向到一包里面就可以了[root@jumpserver all]# cat all.tar.bz2* > all.1.tar.bz2

四、cpio 命令 查看里面的内容

72b27a6816cc8c550b74c0d37a3b92c2.png

#预览内容[root@jumpserver test]# cpio -tv < initramfs-3.10.0-862.el7.x86_64.img 解压[root@jumpserver test] cpio -idv < initramfs-3.10.0-862.el7.x86_64.img#打包[root@jumpserver ~]# find ./ |cpio -ov > /root/test.cpiozcat  xzcat #直接预览包里面的文件time 计算命令执行的时间
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用方法:http://blog.csdn.net/asmcvc/article/details/11770851 工具: unyaffs,mkyaffs2image 其中unyaffs有windows版本和linux版本,mkyaffs2image只有linux版本。 windows版本的unyaffs用法: 把system.img复制到unyaffs的相同目录下,cmd命令下cd到unyaffs的目录下,然后执行命令:unyaffs system.img unyaffs会把system.img解压到其目录下。 linux版本的unyaffs用法: 把unyaffs复制到/usr/bin目录下,并修改权限为可执行。 然后cd到system.img目录下(假定目录为system目录),执行命令:unyaffs system.img 然后对system目录下的文件进行修改。 注意:修改完后的文件要修改一下权限,尽量和其他文件的权限保持一致。例如:chmod 644 framework-res.apk mkyaffs2image用法: 复制到/usr/bin目录下,并修改权限为可执行。 这里以打包system目录为system.img为例,执行命令: mkyaffs2image system system.img 然后把新生成的system.img复制替换掉原:adt-bundle-windows-x86\sdk\system-images\android-17\armeabi-v7a\system.img 执行bat批处理命令启动模拟: D:\adt-bundle-windows-x86\sdk\tools\emulator-arm.exe -avd AndroidVM -partition-size 128 这里以修改android系统启动画面为例: 打开解包目录下的\framework\framework-res.apk 替换图片:framework-res.apk\assets\images\android-logo-mask.png为下图: 然后对\framework\framework-res.apk文件重新签名,复制到linux下后修改文件权限和原来一致。 然后mkyaffs2image system system.img打包生成新的system.img,替换原来的system.img,并启动模拟,效果图如下: 修改代码: 工具:odextools(参考:《一键odex批量合并工具odextools的重新整理与使用》)、dexopt-wrapper 其中odextools.bat的代码: 批处理有一处bug:每打包一次会把odex文件删除掉,导致在后面的打包过程中会出现找不到:system/framework/core.odex类似的错误,因此只需要在打包完后不删除odex文件即可,找到del /f !apkx!.odex 1>nul 2>nul改为:::del /f !apkx!.odex 1>nul 2>nul,也就是注释掉这一行代码。 具体使用方法(操作在windows下): 在odextools\romdir目录下创建文件夹:system 利用unyaffs解包system.img后,把所有文件复制到system目录下。 然后运行odextools.bat,如图: 选择一个需要整合odex的目录选项即可。odextools.bat会自动设置环境变量,使用baksmali.jar来反编译odex为smali,然后再调用smali.jar打包为classes.dex, 然后再打包到相应的apk包(framework目录下对应的是jar后缀的,实际上也是个apk包),最后再重新签名。 如果要修改代码,则需要把上面重新打包生成的apk文件,利用常规方法反编译后修改smali代码,例如插桩输入log信息。然后再回编译并重新签名。 最后一步:因为system.img中的apk是优化过的,apk主目录下是没有classes.dex文件的,而是一个被优化过的odex文件,用于优化启动速度。 因此需要将修改后的apk包再用dexopt-wrapper优化apk包后生成出odex文件,然后删除apk包里的classes.dex,并在相同目录下放置与apk包同名的odex文件。 按照原system目录的文件结构组织好后,目录复制到linux环境下使用mkyaffs2image重新打包成system.img
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值