2014-10-17 27 views
0

我嘗試實現一些我想象得非常簡單但最終比預期更難的事情。擦除文件後保持硬鏈接連接

我有一個文件夾:source/。我有第二個:target/。我在我的第一個文件夾中創建一個文件test.jar。然後,我想讓這個文件出現並且可以在我的第二個文件夾中執行。我看到3個選項:

  • 手動複製/粘貼我的文件。它的作品,但...我不想每次更新我的文件時都這樣做。

  • 符號鏈接。它的工作原理,但如果我執行jar文件,上下文是source/而不是target/就像我想。

  • 硬鏈接。這正是我需要的,但問題是test.jar未被修改,但生成。這意味着擦除後source/test.jar,target.test.jar仍然引用舊文件...是否有可能強制2個文件始終具有相同的值?

感謝您的幫助!

編輯:現在,我解決了這個問題,通過添加一行來將文件從source /目標/複製到腳本中,我將在生成jar之後執行它。我認爲我想要做的事實際上是不可能的。它需要一種新的鏈接,鏈接2個文件的內容,給出它們的路徑名,而不是它們的索引節點...

+0

根據您的環境,您可以設置一個構建任務,爲您複製(生成?)'.jar'。它會增加可移植性,因爲Windows不支持像Unix那樣的符號鏈接。 – 2014-10-17 10:55:53

+0

>>「我不想每次更新我的文件時都這樣做。」檢查['inotifywait'](http://man.cx/inotifywait)或['rsync'](http://man.cx/rsync)是否可以幫助你。 – anishsane 2014-10-17 11:18:15

+0

我檢查了inotifywait和rsync。我很抱歉,我不明白我應該如何使用它來解決我的問題。我認爲@rr的評論爲我的案例提供了最好的方法。我正在使用Maven2。我會嘗試,但我不知道如何實現這一點。我會做一些研究並回來。 – Sharcoux 2014-10-18 18:51:26

回答

0

不要創建文件的軟鏈接。創建整個文件夾的軟鏈接。

喜歡的東西

ln -s {whatever path}/source/ {whatever path}/target 

然後,文件夾目標/是一個文件夾鏈接到所述第一文件夾和上下文應該是相同的。

你也可以嘗試使用git(本地)和checkout source/to folder target。

+0

這裏假設'source'和'target'之間的* no *區別,除了他們的名字。 – chepner 2014-10-17 17:53:10

+0

是的,作爲chapner的客人,這兩個文件夾是不同的。但是,謝謝你的建議。 – Sharcoux 2014-10-18 18:40:22

0

您可以嘗試在target目錄中創建名爲test.jar的可執行shell腳本,並使其調用path/source/test.jar傳遞轉發所有參數。例如:

#!/bin/bash 
path/source/test.jar "[email protected]" 
+0

感謝您的幫助。這可能是一個好主意,但我寧願將jar文件實際存在於文件夾中。這樣,如果我想複製,移動,壓縮...整個文件夾,我可以很容易地做到這一點。 – Sharcoux 2014-10-24 06:39:26

+0

然後我猜你需要在目錄中有一個硬拷貝,並確保source/test.jar的更新反映在目標目錄中...修改構建過程以確保這是您的最佳選擇 – jmajnert 2014-10-24 07:46:54