在 Mac OS X 下壓縮目錄時的問題

西元 2005 年 11 月 28 日 凌晨 2 點 48 分





因為我現在是用 iBook (最近換成 iMac G5 了),在跟廣大的 Windows 使用群 (親朋好友) 交換檔案 (ex: 照片、資料) 時會有一個問題,那就是壓縮檔可能會出現一些不相關的檔案。譬如你想用 Finder 內建的「封存」功能來壓縮一個目錄 (如下圖)。

用 Finder 壓縮一個資料夾

事情應該是完美落幕的,但是你可曾注意到,你封存出來的 zip 檔裡面有一些不相關的檔案?你可以在終端機下用 unzip 指令檢查一下壓縮檔的內容 (在這裡的範例是壓縮一個目錄,目錄下有三張 jpg 格式的照片),如下圖。

用 Finder 壓縮出來的壓縮檔內容

你會發現除了壓縮檔裡有三張照片,還會有 __MACOSX 目錄、._.DS_Store 檔案 (82 bytes) 和 .DS_Store 檔案 (6148 bytes,大約 6 KB)?.DS_Store 是一個由 Mac OS X 產生的系統隱藏檔 (平常你在 Finder 不會發現到它的存在),Mac OS X 會在每個目錄產生這個檔案,並在這個檔案裡記錄當使用者用 Finder 開啟這個資料夾時,Finder 視窗的大小是多少、視窗是位於螢幕的哪個位置、每個檔案或目錄顯示時的 icon 要多大、資料夾裡的檔案顯示方式為何 (ex: 列表、直欄或是只有顯示 icon) 等等。單這方面來講,Mac OS X 維護 .DS_Store 檔案的用意是好的,但是一旦這個檔案傳到 Windows 時就是一個佔磁碟空間、看了就礙眼的垃圾檔案了。為了讓對方在收到你的檔案時,不會也接收到一堆沒有用處的 .DS_Store 檔案和 __MACOSX 目錄,我們可以用 CleanArchiver (英文網頁) 這個可愛的小軟體來壓縮你的目錄和檔案。

CleanArchiver 軟體的視窗

CleanArchiver 支援 gzip、bzip2、zip、Disk Image、StuffIt 和 StuffIt X 等多種格式,只要在 CleanArchiver 視窗先選定想要的壓縮格式,然後把要壓縮的目錄和檔案,一次拖曳到 CleanArchiver 視窗,最後決定壓縮檔存放目錄和檔案名稱,CleanArchiver 就會幫你壓縮出一個沒有 .DS_Store__MACOSX 這些惱人的檔案和目錄的壓縮檔了。下圖是用 CleanArchiver 壓縮出來的檔案內容,裡面只有一個目錄和三個檔案。

用 CleanArchiver 壓縮出來的壓縮檔內容

如果你習慣在終端機用 tar 來壓縮檔案,正常情況下你也是會壓出有 .DS_Store__MACOSX 檔案的壓縮檔,如下圖。

用 tar 壓縮出來的壓縮檔內容

但是你只要加上 --exclude=".DS_Store" 就可以讓 tar 不會去加入 .DS_Store 和其它不想要的檔案到壓縮檔裡。不過,每次壓縮都要打這麼長的指令不會累嗎? Orz

用 tar 加上 exclude 選項壓縮出來的壓縮檔內容

最後,因為 Mac OS X 會在每個目錄下產生 .DS_Store 檔案,所以它也會在可移除的磁碟機 (ex: 外接式硬碟機) 留下「足跡」,當你把這顆外接硬碟接到 Windows 時,你又會看到一堆 .DS_Store 檔案了。 XD

在這裡提供一個讓 Mac OS X 不會在可移除的磁碟機產生 .DS_Store 檔案的方法 (引用自 applewood 的「避免製造 .DS_Store 隱形檔」),你只要在終端機下執行:

defaults write com.apple.desktopservices DSDontWriteNetworkStores true

然後重開機一次即可,簡單吧? :)







2 則留言 @ “在 Mac OS X 下壓縮目錄時的問題”

  1. MyAvatars 0.2 MyBlogLog
    Gravatar

    (這是什麼?)

    買iMac G5啦?怎麼不在blog上介紹介紹?

  2. MyAvatars 0.2 MyBlogLog
    Gravatar

    (這是什麼?)

    To JoJoWu:
    這個…iMac G5 都被大家介紹到爛了,我就不贅述了。 :p

留個言吧!