請問tar壓縮的時候要怎麼去掉"全部"的路徑 [論壇 - Ubuntu 套件打包]


正在瀏覽:   1 名遊客


 到底部   前一個主題   下一個主題  [無發表權] 請登錄或者註冊



請問tar壓縮的時候要怎麼去掉"全部"的路徑
會員三級
註冊日期:
2016/4/18 12:29
所屬群組:
已註冊使用者
等級: 9
HP : 0 / 217
MP : 38 / 1695
EXP: 70
離線
Hi 各位先進好,

遇到一個問題,我的檔案結構如下
bb/cc/dd/files
bb/cc/files
我使用tar cvfz ~/aa/tt.tar.gz -C ~/bb/ cc
這樣壓出來的檔案會是
cc/files
可我的需求是直接壓縮files,如下
dd/files
files
請問要下什麼指令?
再麻煩了
謝謝

PS.功能像是選取檔案後用右鍵選Compress...

2016/8/10 21:20
應用擴展 工具箱
回覆: 請問tar壓縮的時候要怎麼去掉"全部"的路徑
會員三級
註冊日期:
2006/1/11 0:33
所屬群組:
已註冊使用者
等級: 12
HP : 0 / 279
MP : 57 / 10557
EXP: 17
離線
你是不是忘記加 . 了?

http://pastebin.com/jUDLXVGa

tar cvfz ~/aa/tt.tar.gz -C ~/bb/ cc . <-- 這裡少一個點

2016/8/10 23:16
這個站可以廢了, 很愛言論審核, 發廢文亂回答答錯的卻很快就審核通過
應用擴展 工具箱
回覆: 請問tar壓縮的時候要怎麼去掉"全部"的路徑
會員三級
註冊日期:
2016/4/18 12:29
所屬群組:
已註冊使用者
等級: 9
HP : 0 / 217
MP : 38 / 1695
EXP: 70
離線
Hi,

跟在右鍵選Compress,解壓縮的結果有一樣
用ubuntu內建的壓縮管理員來看的話
會有一個點的目錄,如下
. -> dd/files
files
壓縮管理員顯示的路徑會是 /./
但用右鍵選Compress就不會有點的目錄
壓縮管理員顯示的路徑會是 /
dd/files
files

想請問這兩個差異的原因
很感謝
謝謝

2016/8/11 10:47
應用擴展 工具箱
回覆: 請問tar壓縮的時候要怎麼去掉"全部"的路徑
會員五級
註冊日期:
2012/4/22 10:50
所屬群組:
已註冊使用者
等級: 34
HP : 165 / 829
MP : 545 / 16145
EXP: 19
離線
備份連結

================================================================================

ubuntu_net2016 寫到:
Hi,

跟在右鍵選Compress,解壓縮的結果有一樣
用ubuntu內建的壓縮管理員來看的話
會有一個點的目錄,如下
. -> dd/files
files
壓縮管理員顯示的路徑會是 /./
但用右鍵選Compress就不會有點的目錄
壓縮管理員顯示的路徑會是 /
dd/files
files

想請問這兩個差異的原因
很感謝
謝謝




紀錄測試結果

## 操作環境

* Xubuntu 16.04 (64位元) 英文界面
* file-roller 3.16.5 (Archive Manager 壓縮管理員)

## 前置作業

執行下面指令,產生測試資料


cd /tmp
mkdir bb/cc/dd -p
touch bb/cc/dd/files
touch bb/cc/files



執行


$ tree bb/




顯示


bb/
└── cc
├── dd
│ └── files
└── files

2 directories, 2 files



================================================================================

## 測試一 (#2)

### 打包壓縮

執行


$ tar cvzf aa.1.tar.gz -C bb/cc .



顯示


./
./files
./dd/
./dd/files



### 觀看檔案列表 (使用 tar)

執行


$ tar tzf aa.1.tar.gz



或是執行


$ tar tf aa.1.tar.gz



顯示


./
./files
./dd/
./dd/files



### 觀看檔案列表 (使用 vim)

執行


$ vim aa.1.tar.gz



顯示


" tar.vim version v29
" Browsing tarfile /tmp/aa.1.tar.gz
" Select a file with cursor and press ENTER

./
./files
./dd/
./dd/files



### 觀看檔案列表 (使用 file-roller)

執行 (或是在「thunar」或「nautilus」直接點選該檔案)


$ file-roller aa.1.tar.gz



會跳出視窗

一開始顯示資料夾「.」,點選資料夾「.」,會顯示資料夾「dd」和檔案「files」
點選資料夾「dd」,就會看到「Location:」那的值是「/./dd/」

================================================================================

## 測試二 (樓主想要知道的使用方式)

### 打包壓縮

執行


$ tar cvzf aa.2.tar.gz -C bb/cc files dd




或是執行


$ tar cvzf aa.2.tar.gz -C bb/cc $(ls bb/cc)



顯示


files
dd/
dd/files



註:
* 「-C bb/cc」 表示 切換到「bb/cc」這個資料夾
* 「files dd」 表示 要壓縮的檔案列表,所以可以改用「$(ls bb/cc)」來置換。
也就是「man tar」的「SYNOPSIS」那,最後的 [pathname ...]


### 觀看檔案列表 (使用 tar)

執行


$ tar tzf aa.2.tar.gz



或是執行


$ tar tf aa.2.tar.gz



顯示


files
dd/
dd/files



### 觀看檔案列表 (使用 vim)

執行


$ vim aa.2.tar.gz



顯示


" tar.vim version v29
" Browsing tarfile /tmp/aa.2.tar.gz
" Select a file with cursor and press ENTER

files
dd/
dd/files



### 觀看檔案列表 (使用 file-roller)

執行 (或是在「thunar」或「nautilus」直接點選該檔案)


$ file-roller aa.2.tar.gz



會跳出視窗

一開始顯示,是資料夾「dd」和檔案「files」,
點選資料夾「dd」,就會看到「Location:」那的值是「/dd/」

================================================================================

## 測試三 (樓主提到的使用 Archive Manager 也就是 file-roller的方式)

### 打包壓縮

使用「nautilus」或是「thunar」其中之一,

切換到「/tmp/bb/cc/」這個路徑,然後「Ctrl+a」全選,也就是會選到『資料夾「dd」和檔案「files」』。
然後按下右鍵,會出現「功能選單」
「nautilus」選「Compress...」
「thunar」選「Create Archive...」

然後開啟「Terminal」

執行


$ ps aux | grep file-roller



顯示


user 22257 2.2 0.6 627968 39172 ? Sl 13:08 0:00 file-roller --default-dir=/tmp/bb/cc --add /tmp/bb/cc/dd /tmp/bb/cc/files


從上面的資訊,可以直接執行下面指令


$ file-roller --default-dir=/tmp/bb/cc --add /tmp/bb/cc/dd /tmp/bb/cc/files



也會跳出視窗,

按下「Create」按鈕,就會產生「/tmp/bb/cc/cc.tar.gz」這個檔案

### 切換資料夾

執行


$ cd /tmp/bb/cc/



### 觀看檔案列表 (使用 tar)

執行


$ tar tzf cc.tar.gz



或是執行


$ tar tf cc.tar.gz



顯示


files
dd/
dd/files



### 觀看檔案列表 (使用 vim)

執行


$ vim cc.tar.gz



顯示


" tar.vim version v29
" Browsing tarfile /tmp/bb/cc/cc.tar.gz
" Select a file with cursor and press ENTER

files
dd/
dd/files



### 觀看檔案列表 (使用 file-roller)

執行 (或是在「thunar」或「nautilus」直接點選該檔案)


$ file-roller cc.tar.gz



會跳出視窗

一開始顯示,是資料夾「dd」和檔案「files」,
點選資料夾「dd」,就會看到「Location:」那的值是「/dd/」


================================================================================

## 探索「Source Package」

### 下載「Source Package」

執行下面指令,下載「file-roller」的「Source Package


$ apt-get source file-roller



### 觀看「file-roller-3.16.5」資料夾結構

執行


$ tree file-roller-3.16.5/



### 觀看「README_COMMANDLINE」內容

執行


$ less file-roller-3.16.5/README_COMMANDLINE



README_COMMANDLINE」這個檔的內容,有說明上面「file-roller」下指令的用法。

另外也可以執行「$ man file-roller」對照著看。

### 列出「src/fr-command*.c」

在「file-roller-3.16.5/src/」有很多「fr-command」開頭命名的檔案

執行


$ ls file-roller-3.16.5/src/fr-command*.c -1



顯示


file-roller-3.16.5/src/fr-command-7z.c
file-roller-3.16.5/src/fr-command-ace.c
file-roller-3.16.5/src/fr-command-alz.c
file-roller-3.16.5/src/fr-command-ar.c
file-roller-3.16.5/src/fr-command-arj.c
file-roller-3.16.5/src/fr-command.c
file-roller-3.16.5/src/fr-command-cfile.c
file-roller-3.16.5/src/fr-command-cpio.c
file-roller-3.16.5/src/fr-command-dpkg.c
file-roller-3.16.5/src/fr-command-iso.c
file-roller-3.16.5/src/fr-command-jar.c
file-roller-3.16.5/src/fr-command-lha.c
file-roller-3.16.5/src/fr-command-lrzip.c
file-roller-3.16.5/src/fr-command-rar.c
file-roller-3.16.5/src/fr-command-rpm.c
file-roller-3.16.5/src/fr-command-tar.c
file-roller-3.16.5/src/fr-command-unarchiver.c
file-roller-3.16.5/src/fr-command-unsquashfs.c
file-roller-3.16.5/src/fr-command-unstuff.c
file-roller-3.16.5/src/fr-command-zip.c
file-roller-3.16.5/src/fr-command-zoo.c


### 觀看「src/fr-command-tar.c」

執行下面指令,觀看「src/fr-command-tar.c」這個檔案的內容


$ less file-roller-3.16.5/src/fr-command-tar.c



大略瀏覽這個檔案的內容,大概可以了解到「file-roller」不是透過呼叫lib,是透過呼叫外部指令,
也就是呼叫「tar」這個指令來執行相關的功能的。

可以看到裡面也有使用到「tar」的「-C」這個選項,相關的程式碼

### 其他檔案

* src/main.c
* src/fr-application.c


### 編譯前置作業

執行下面指令,安裝編譯時,需要的套件


$ sudo apt-get build-dep file-roller



### GTK+ 3 Reference Manual

* 3.18.9 / Building applications
* 3.14.5 / Building applications (翻譯)


以上參考



2016/9/6 14:18
應用擴展 工具箱


 [無發表權] 請登錄或者註冊


可以查看帖子.
不可發帖.
不可回覆.
不可編輯自己的帖子.
不可刪除自己的帖子.
不可發起投票調查.
不可在投票調查中投票.
不可上傳附件.
不可不經審核直接發帖.