2012-07-12 109 views
6

我有一系列在Linux上的目錄,每個目錄包含大量的文件和數據。在這些目錄中的數據自動生成的,但多個用戶需要對數據進行更多的分析和生成多個文件,改變結構等如何在Linux上創建一個目錄的副本與鏈接

由於這些數據目錄是非常大的,我不希望幾個人們要複製原始數據,所以我想製作目錄的副本並鏈接到新的原始數據。但是,我希望只對新目錄進行更改,並保留原始只讀。我不想僅鏈接我定義的特定文件,因爲這些目錄中的數據如此多變。

所以我想知道如果有一種方法通過鏈接到原來的,但保持在只有新目錄中的任何更改的文件創建一個目錄的副本。

回答

21

事實證明,這是我想:

cp -al <origdir> <newdir> 

它將複製整個目錄下,並創建硬鏈接的原始文件。如果原始文件被刪除,則複製的文件仍然存在,反之亦然。這會很好地工作,但我發現newdir不可能已經存在。只要原始文件是隻讀的,您就可以創建原始目錄的完全相同的安全副本。

+1

當原始文件不是隻讀時,可以這樣做,但是對任一副本所作的任何更改都將同時作用於兩個副本,因此,如果您希望能夠修改複製的文件而不進行修改,則硬鏈接不適用原本的。 – thomasrutter 2014-07-22 00:20:47

2

不過,既然你正在尋找的人可以寫回,變化的方式,UnionFS可能是你在找什麼。它提供了將只讀和讀寫位置合併爲一個的手段。

Unionfs允許任何混合的只讀和讀寫分支,以及插入和刪除分支中任何地方的分支。


本來我是打算推薦這(我用了很多):

假設權限是不是一個問題(如只讀是必需的)我建議綁定貼裝他們到位。

mount -B <original> <new-location> 
# or 
mount --bind <original> <new-location> 

<new-location>必須作爲文件夾存在。

+0

感謝您的建議!我嘗試了掛載綁定,並能夠創建一個新的掛載點。但是:1)我有成千上萬的目錄,這將需要成千上萬2)我在新目錄中創建一個文件,它在原來的目錄 – 2012-07-12 17:15:25

+0

成千上萬的目錄,但不是一個單一的根他們可能使用也表現出了坐騎?在這種情況下,您最多需要與用戶一樣多的坐騎。即使不同的用戶具有該單一公共根的不同子文件夾,掛載次數仍將等於用戶數量。 – 0xC0000022L 2012-07-12 17:21:08

+0

複製樹是可能的......但在操作系統級別更改內容並不理想。我想我可能會嘗試以遞歸方式創建指向原始文件和目錄的鏈接,並確保原始文件僅爲只讀 – 2012-07-12 18:45:08

相關問題