使用jar與zip壓縮解壓檔案的區別
使用jar命令壓縮和解壓檔案不會繼承原來的許可權,切記!
而使用zip/unzip壓縮解壓檔案則會保留檔案原來的許可權等資訊,因此使用壓縮解壓的時候儘量使用專業的工具
下面是測試內容和結果:
1.首先確認使用zip/unzip會繼承檔案原來的許可權
[root@localhost ~]# umask
0022
[root@localhost ~]# mkdir tst
[root@localhost ~]# touch ./tst/aaa
[root@localhost ~]# touch ./tst/bbb
[root@localhost ~]# touch ./tst/ccc
[root@localhost ~]# ls -l ./tst
total 0
-rw-r--r-- 1 root root 0 Sep 25 00:59 aaa
-rw-r--r-- 1 root root 0 Sep 25 00:59 bbb
-rw-r--r-- 1 root root 0 Sep 25 00:59 ccc
[root@localhost ~]# chmod 700 ./tst/aaa
[root@localhost ~]# chmod 777 ./tst/bbb
[root@localhost ~]# ls -l ./tst -----修改三個檔案的許可權分別是700,777,644
total 0
-rwx------ 1 root root 0 Sep 25 00:59 aaa
-rwxrwxrwx 1 root root 0 Sep 25 00:59 bbb
-rw-r--r-- 1 root root 0 Sep 25 00:59 ccc
[root@localhost ~]# zip -r tst tst ------使用zip壓縮一個包後,將原來目錄改名
adding: tst/ (stored 0%)
adding: tst/bbb (stored 0%)
adding: tst/aaa (stored 0%)
adding: tst/ccc (stored 0%)
[root@localhost ~]# ls -l
total 20
drwxr-xr-x 2 root root 4096 Sep 25 00:59 tst
-rw-r--r-- 1 root root 512 Sep 25 01:00 tst.zip
[root@localhost ~]# mv tst tst_bak
[root@localhost ~]# ls -l
total 20
drwxr-xr-x 2 root root 4096 Sep 25 00:59 tst_bak
-rw-r--r-- 1 root root 512 Sep 25 01:00 tst.zip
[root@localhost ~]# unzip tst.zip ------使用unzip解壓壓縮包,檢視許可權沒有改變
Archive: tst.zip
creating: tst/
extracting: tst/bbb
extracting: tst/aaa
extracting: tst/ccc
[root@localhost ~]# ls -l tst
total 0
-rwx------ 1 root root 0 Sep 25 00:59 aaa
-rwxrwxrwx 1 root root 0 Sep 25 00:59 bbb
-rw-r--r-- 1 root root 0 Sep 25 00:59 ccc
2.使用上面的實驗結果,測試jar解壓檔案後的變化
[root@localhost ~]# ls -l
total 24
drwxr-xr-x 2 root root 4096 Sep 25 00:59 tst
drwxr-xr-x 2 root root 4096 Sep 25 00:59 tst_bak
-rw-r--r-- 1 root root 512 Sep 25 01:00 tst.zip
[root@localhost ~]# rm -fr tst ------刪除掉原來的tst目錄,然後使用jar解壓原來zip壓縮的檔案(注意umask為022)
[root@localhost ~]# ls -l
total 20
drwxr-xr-x 2 root root 4096 Sep 25 00:59 tst_bak
-rw-r--r-- 1 root root 512 Sep 25 01:00 tst.zip
[root@localhost ~]# ls -l /home/oracle/oracle/product/11.2.0/dbhome_1/jdk/bin/jar
-rwxr-xr-x 1 oracle dba 62492 May 6 2009 /home/oracle/oracle/product/11.2.0/dbhome_1/jdk/bin/jar
[root@localhost ~]# export PATH=$PATH:/home/oracle/oracle/product/11.2.0/dbhome_1/jdk/bin/
[root@localhost ~]# which jar
/home/oracle/oracle/product/11.2.0/dbhome_1/jdk/bin/jar
[root@localhost ~]# jar xvf tst.zip
created: tst/
extracted: tst/bbb
extracted: tst/aaa
extracted: tst/ccc
[root@localhost ~]# ls -l tst ------使用jar解壓後,在umask為022的情況下,解壓後的檔案許可權為644
total 0
-rw-r--r-- 1 root root 0 Sep 25 01:06 aaa
-rw-r--r-- 1 root root 0 Sep 25 01:06 bbb
-rw-r--r-- 1 root root 0 Sep 25 01:06 ccc
[root@localhost ~]# umask 0000 ------設定umask為000後,解壓後的檔案許可權為666
[root@localhost ~]# ls -l
total 20
drwxr-xr-x 2 root root 4096 Sep 25 00:59 tst_bak
-rw-r--r-- 1 root root 512 Sep 25 01:00 tst.zip
[root@localhost ~]# jar xvf tst.zip
created: tst/
extracted: tst/bbb
extracted: tst/aaa
extracted: tst/ccc
[root@localhost ~]# ls -l tst
total 0
-rw-rw-rw- 1 root root 0 Sep 25 01:10 aaa
-rw-rw-rw- 1 root root 0 Sep 25 01:10 bbb
-rw-rw-rw- 1 root root 0 Sep 25 01:10 ccc
[root@localhost ~]#
因此可以得出,jar解壓後檔案的許可權與使用者當前的umask有關係,而與檔案在原來壓縮包中的許可權沒有關係。不會繼承原來壓縮包中的許可權
3.測試jar壓縮的時候會不會記錄檔案的許可權
[root@localhost ~]# rm -fr tst tst.zip ----刪除原來的檔案,然後設定umask為022,使用jar壓縮帶許可權的檔案,然後使用unzip解壓
[root@localhost ~]# mv tst_bak tst
[root@localhost ~]# ls -l tst
total 0
-rwx------ 1 root root 0 Sep 25 00:59 aaa
-rwxrwxrwx 1 root root 0 Sep 25 00:59 bbb
-rw-r--r-- 1 root root 0 Sep 25 00:59 ccc
[root@localhost ~]# umask 022
[root@localhost ~]# jar cvf tst.zip tst
added manifest
adding: tst/(in = 0) (out= 0)(stored 0%)
adding: tst/bbb(in = 0) (out= 0)(stored 0%)
adding: tst/aaa(in = 0) (out= 0)(stored 0%)
adding: tst/ccc(in = 0) (out= 0)(stored 0%)
[root@localhost ~]# ls -l
total 20
drwxr-xr-x 2 root root 4096 Sep 25 00:59 tst
-rw-r--r-- 1 root root 699 Sep 25 01:19 tst.zip
[root@localhost ~]# mv tst tst_bak
[root@localhost ~]# unzip tst.zip
Archive: tst.zip
creating: META-INF/
inflating: META-INF/MANIFEST.MF
creating: tst/
extracting: tst/bbb
extracting: tst/aaa
extracting: tst/ccc
[root@localhost ~]# ls -l tst ---可以看到,使用unzip解壓後的檔案許可權為644
total 0
-rw-r--r-- 1 root root 0 Sep 25 00:59 aaa
-rw-r--r-- 1 root root 0 Sep 25 00:59 bbb
-rw-r--r-- 1 root root 0 Sep 25 00:59 ccc
[root@localhost ~]# rm -fr tst ---刪掉解壓後的檔案,設定umask為000,再解壓發現解壓檔案的權現為666
[root@localhost ~]# ls -l
total 24
drwxr-xr-x 2 root root 4096 Jun 4 20:56 Desktop
drwxr-xr-x 2 root root 4096 Sep 25 01:19 META-INF
drwxr-xr-x 2 root root 4096 Sep 25 00:59 tst_bak
-rw-r--r-- 1 root root 699 Sep 25 01:19 tst.zip
drwxr-xr-x 7 root root 4096 Jan 22 2010 vmware-tools-distrib
[root@localhost ~]# umask 0000
[root@localhost ~]# umask
0000
[root@localhost ~]# unzip tst.zip
Archive: tst.zip
replace META-INF/MANIFEST.MF? [y]es, [n]o, [A]ll, [N]one, [r]ename: y
inflating: META-INF/MANIFEST.MF
creating: tst/
extracting: tst/bbb
extracting: tst/aaa
extracting: tst/ccc
[root@localhost ~]# ls -l tst
total 0
-rw-rw-rw- 1 root root 0 Sep 25 00:59 aaa
-rw-rw-rw- 1 root root 0 Sep 25 00:59 bbb
-rw-rw-rw- 1 root root 0 Sep 25 00:59 ccc
[root@localhost ~]#
因此可以判斷,使用jar壓縮的檔案,解壓後與系統當前環境的umask有關係。
通過這個實驗可以判斷,jar壓縮和解壓的時候,不會記錄檔案的許可權.建議我們在使用這些工具的時候,一定要熟悉它們的特點
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23850820/viewspace-1280734/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux科研武器庫 - 檔案壓縮與解壓縮 - zip / unzipLinux
- 壓縮檔案格式rar和zip有什麼區別 壓縮檔案格式rar和zip哪個好
- zip壓縮檔案處理方案(Zip4j壓縮和解壓)
- 壓縮檔案格式rar和zip有什麼區別 zip和rar哪個是無失真壓縮
- node ~ zip壓縮 && 檔案加密加密
- Linux下檔案的壓縮與解壓Linux
- java 生成 zip格式 壓縮檔案Java
- java 把檔案壓縮成 zipJava
- 使用zlib庫解壓zip檔案
- .NET 壓縮/解壓檔案
- betterzip怎麼解壓檔案?如何使用BetterZip批次解壓壓縮檔案
- CentOS中zip壓縮和unzip解壓縮命令詳解CentOS
- 檔案壓縮和解壓縮
- linux 下面壓縮、解壓.rar檔案Linux
- java 壓縮包 遍歷解壓 zip 和 7z 指定格式檔案Java
- 分卷壓縮怎麼解壓 快速解壓電腦分卷壓縮檔案方法
- 電腦怎麼壓縮檔案 檔案壓縮方法詳解
- php 建立壓縮包zip,並將指定檔案放入zip中PHP
- Ashampoo ZIP Pro 4,解壓縮
- Linux常用命令之檔案壓縮與解壓縮命令詳解Linux
- Linux中檔案的壓縮和解壓縮Linux
- Cnetos7系統---檔案壓縮與解壓命令詳解。
- Centos7系統---檔案壓縮與解壓命令詳解。CentOS
- Laravel 中建立 Zip 壓縮檔案並提供下載Laravel
- 批處理 壓縮zip 並過濾部分檔案
- WinZip Pro 9 for Mac 專業zip壓縮解壓工具Mac
- NET中SharpZipLib 的使用(一)【壓縮與解壓】
- linux系統壓縮,解壓檔案筆記Linux筆記
- 使用java API進行zip遞迴壓縮資料夾以及解壓JavaAPI遞迴
- Linux 解壓zip檔案詳解之unzip命令!Linux
- linux檔案壓縮和解壓命令Linux
- linux 高效壓縮工具之xz的壓縮解壓使用Linux
- Linux 常用的壓縮與解壓縮命令詳解Linux
- nodejs解壓zip/rar檔案到本地,並獲取到解壓進度NodeJS
- win10系統如何使用ACDSee檢視ZIP格式壓縮檔案Win10
- Linux tar分卷壓縮與解壓縮Linux
- java解壓rar,解壓zipJava
- Linux中Bin檔案壓縮包解壓執行Linux
- Linux 檔案壓縮Linux