2012-07-12 26 views
6

Tôi có một loạt thư mục trên Linux và mỗi thư mục chứa rất nhiều tệp và dữ liệu. Dữ liệu trong các thư mục đó được tạo tự động, nhưng nhiều người dùng sẽ cần thực hiện phân tích nhiều hơn về dữ liệu đó và tạo thêm tệp, thay đổi cấu trúc, v.v.Cách tạo bản sao thư mục trên Linux với các liên kết

Vì các thư mục dữ liệu này rất lớn, tôi không muốn mọi người tạo một bản sao của dữ liệu gốc, vì vậy tôi muốn tạo một bản sao của thư mục và liên kết đến bản gốc từ thư mục mới. Tuy nhiên, tôi muốn mọi thay đổi chỉ được giữ trong thư mục mới và chỉ để nguyên bản gốc. Tôi không muốn chỉ liên kết các tệp cụ thể mà tôi xác định vì dữ liệu trong các thư mục này rất đa dạng.

Vì vậy, tôi tự hỏi nếu có một cách để tạo bản sao của một thư mục bằng cách liên kết với bản gốc nhưng giữ bất kỳ tệp đã thay đổi nào trong thư mục mới.

Trả lời

21

Hóa ra đây là những gì tôi muốn:

cp -al <origdir> <newdir> 

Nó sẽ sao chép toàn bộ thư mục và tạo liên kết cứng đến các tập tin gốc. Nếu tệp gốc bị xóa, tệp sao chép vẫn tồn tại và ngược lại. Điều này sẽ làm việc hoàn hảo, nhưng tôi thấy newdir không phải đã tồn tại. Miễn là các tệp gốc chỉ đọc, bạn sẽ có thể tạo một bản sao giống hệt, an toàn của thư mục gốc.

+1

Có thể thực hiện điều này khi các tệp gốc không chỉ đọc, nhưng mọi thay đổi được thực hiện cho cả hai bản sao sẽ được thực hiện cho cả hai bản sao như nhau, do đó liên kết cứng không phù hợp nếu bạn muốn có thể sửa đổi tệp được sao chép mà không sửa đổi bản gốc. – thomasrutter

2

Tuy nhiên, vì bạn đang tìm kiếm cách mọi người có thể viết lại các thay đổi, UnionFS có lẽ là những gì bạn đang tìm kiếm. Nó cung cấp các phương tiện để kết hợp các vị trí chỉ đọc và ghi vào một.

Unionfs cho phép kết hợp các chi nhánh chỉ đọc và đọc, cũng như chèn và xóa các chi nhánh ở bất cứ nơi nào trong chế độ hâm mộ.


Nguyên tôi sẽ đề nghị này (tôi sử dụng nó rất nhiều):

Giả sử các điều khoản không phải là một vấn đề (ví dụ như chỉ đọc được yêu cầu) Tôi sẽ đề nghị để ràng buộc-mount chúng vào vị trí.

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

<new-location> phải tồn tại dưới dạng thư mục.

+0

Cảm ơn bạn đã đề xuất! Tôi đã cố gắng gắn kết gắn kết và đã có thể tạo ra một điểm gắn kết mới. Tuy nhiên: 1) Tôi có hàng ngàn thư mục, yêu cầu hàng nghìn giá trị 2) Tôi đã tạo một tệp trong thư mục mới và nó cũng hiển thị trong thư mục gốc –

+0

Hàng nghìn thư mục nhưng không phải là một thư mục gốc có thể được sử dụng ? Bạn sẽ cần nhiều nhất là gắn kết với người dùng trong một kịch bản như vậy. Ngay cả khi người dùng khác nhau có các thư mục con khác nhau của một gốc chung duy nhất, số lượng gắn kết sẽ vẫn bằng số lượng người dùng. – 0xC0000022L

+0

Có thể có một cây trùng lặp ... nhưng việc thay đổi mọi thứ ở cấp hệ điều hành không phải là lý tưởng. Tôi nghĩ rằng tôi có thể cố gắng chỉ tạo các liên kết đến các tệp và thư mục trong thư mục gốc và chỉ đảm bảo các tệp gốc chỉ đọc –