2012-02-15 33 views
1

我在文件夾中有一個文件,我對這個文件不知情(它是如何生成和更新的),因爲它來自我的系統上運行的應用程序其中我沒有源代碼。硬盤上的文件無法按預期方式在OS X上運行

的文件格式是清楚json和我成功創建硬鏈接到它(使用外殼命令ln file hardLinkToFile),並置於其上的另一個目錄。
此時我檢查「2」文件,它們與預期完全相同,但是當我在應用程序中執行導致原始文件更新的操作時,硬鏈接不會更新。

有關我如何解決此問題的任何想法?

UPDATE:如通過弗拉德拉扎連科MVDS指出,該文件可能被刪除,並創建一個新的,是有什麼我可以做,以獲得溶液相當於硬鏈接一個我最初想的是?

+1

使用符號鏈接。該應用程序顯然刪除該文件並創建一個新的。在啓動此應用程序之前和之後,使用'stat -f%l filename'檢查文件的鏈接數。 – mvds 2012-02-15 17:58:11

回答

2

如果硬鏈接沒有得到更新,這意味着應用程序正在刪除舊文件並創建一個新文件。因此,您仍然擁有前一個文件的硬拷貝,但是新文件具有完全不同的inode,儘管路徑仍然相同。您可以通過簡單地更改該文件的內容來驗證它 - 鏈接應該更新。

+0

我已經更新了答案,認爲你是對的(我最初也是這樣想,並且在這裏要求確認)...現在我正在尋找解決這個奇怪行爲的方法 – Francesco 2012-02-15 18:04:01

1

我在TextEdit中獲得相同的行爲,但在TextMate中沒有。我懷疑這是由於OS X Lions文檔體系結構中內置的版本控制。 TextEdit使用版本控制,而TextMate則不使用。正如@Vlad Lazarenko所描述的,該功能很可能會替換文件而不是更改文件。

+0

我不認爲這是關於修訂控制,我不直接在這些文件上工作,它們是由另一個應用程序 – Francesco 2012-02-15 18:05:20

+0

生成的(不是直接),它適用於崇高文本,但不適用於文本編輯 – Nav 2015-09-23 16:58:21

0

我猜這有點太晚了... 不管怎麼說,我意外地發現,如果您更改文件的默認應用程序,硬鏈接將與原始文件分離。即使您單擊全部更改並且不涉及該特定文件。

1

@Vlad and Francesco。這真的是這樣。我驗證了vi使inode保持不變,並且src和dest文件都改變了,凱特編輯器沒有,我正在瘋狂地理解爲什麼我在src文件中所做的更改不在dest文件中。 您可以使用命令ls -li srcfile destfile輕鬆地檢查它,然後使用我提到的每個編輯器編輯其中的一個。 順便說它是不好的,硬鏈接是應用程序依賴

+0

「硬鏈接取決於應用程序並不好」 - 阿門。 – dave 2017-04-01 03:02:28