2009年12月2日 星期三

包版本惹辣


最近我在包版本的時候老是出狀況
不是不能compress不然就是不能copyflash drives
實在讓人感到很機八

所以就去survey了一下到底哪裡出問題
先排除電腦本身的問題後
嘗試了用網路(drop box)取代flash drives來傳遞資料
結果發現能compress & copy!!!!

所以矛頭就指向flash drives
雖然我家小黑被我操很大
但是以往他為我傳遞了無數高槽
所以應該沒有問題才是呀



so應該是format的問題
於是又survey了一下
發現在不同format的情況下
有可能會生成 Resource forks
而且機歪的是 他爽就生 不爽不會生
(所以如果你很努力你老婆還沒懷孕的話記得檢討一下這樣)(just kidding)
這些Resource forks是不能compress且不能copy的

另外要注意的是
這些Resource forkshidden files
要用terminal去檢查
或者提供一個開啓Mac看hidden files的方法:

在terminal打上
defaults write com.apple.finder AppleShowAllFiles -bool true
killall Finder

就可以不用開在Finder看到所有隱藏檔惹
反之
defaults write com.apple.finder AppleShowAllFiles -bool false
可以取消這項設定

解決方法是砍掉這些Resource Forks
當然也有AP幫助你處理這些Resource Forks
連結如下


以下是關於Resource fork的文件

9 則留言:

  1. 原本失敗的原因是包的時候因為Resource Forks倒致compress失敗,還是缺少Resource Forks倒致包好的檔案執行時失敗?
    Format 是指 NTFS之類的格式嗎?

    回覆刪除
  2. 是前者,有Resource Forks,導致失敗。Resource Forks不能壓縮或者被Copy。yep,Format是指NTFS之類的格式,要講清楚一點就是,隨身碟用FAT32的格式,而我沒記錯的話Mac 的file system是HFS+。當然mac也讀得到FAT32可是會有些機制。btw Mac讀不到NTFS的樣子!有錯請糾正~~

    回覆刪除
  3. Mac 讀得倒 NTFS 但寫不進去

    Resource fork 是 Mac 檔案系統 (HFS/HFS+) 特有的東西。HFS/HFS+的每個檔案都有兩個fork,一個叫data fork另一個叫resource fork,以往resource fork 顧名思義就是放resource用的,但換倒Mac OS X 後 resource fork 漸漸沒在用了,取而代之的是bundle/package的概念。

    回原題,所以在從HFS/HFS+將檔案copy到不同檔案系統時,就會把data fork 跟 resource fork 分開,data fork還是以原檔形式存在,而resource fork就會加了個prefix並以隱藏檔的形勢存在。

    回覆刪除
  4. 所以說 NTFS 可以被Mac讀到,且抓下來用嗎? 那這樣一來在抓下來的時候也可能產生resource fork這樣是嗎?(抓下來的意思是從隨身碟copy到mac <<)可是如果說被bundle/package的概念取代後 為什麼apple不搞定這個機制XD?

    btw,我有點不懂如何被bundle/package取代 我以為是兩件事情~有文件可以詳閱嗎~?

    回覆刪除
  5. 以application為例,我猜測當初Apple希望 resource 與 app本身只要以單一檔案的形式存在,而不是一個executable file又配上一個或多個resource file,方便移動或管理app。所以Apple創造了resource fork,好讓resource可以跟著檔案跑。但Mac OS X 裡的bundle解決了這個問題並同時解決了跨檔案系統的問題。

    回覆刪除
  6. 促V,懂惹。神祕的Mac!!!!

    回覆刪除