Hệ thống tập tin giống như UnionFS cho windows


12

Tôi đang tìm kiếm một cái gì đó hoạt động như UnionFS trong Windows 7. Usecase của tôi: có thư mục làm việc mã sạch trong một thư mục chỉ đọc và biên dịch nó trong một hệ thống tập tin sẽ lưu trữ các tệp nhị phân được biên dịch ở cùng một nơi, nhưng về mặt vật lý thư mục khác nhau.

Các thư viện không hoạt động theo cách này, mặc dù chúng được chấp nhận như một câu trả lời trong UnionFS giống nhau trên các cửa sổ, các thư mục hợp nhất - chúng chỉ hiển thị các thư mục cấp cao nhất ở một nơi.

Bản thân mã này rất lớn (2GB dữ liệu) và tôi muốn tránh sao chép nó cho mọi bản dựng trong máy chủ bản dựng của mình.


Ôi, ôi. : - / Tôi đang cố gắng tự giải quyết chính xác vấn đề tương tự và không đọc đủ cẩn thận. Tôi sẽ xóa bình luận của tôi. Tôi hầu như không quen thuộc với nền tảng Windows. : - /
Omnifarious

Câu trả lời:


2

Bạn có thể sử dụng các liên kết tượng trưng để giả mạo này? http://en.wikipedia.org/wiki/NTFS_symbolic_link Nó không trả lời chính xác câu hỏi nhưng tôi nghĩ nó sẽ giải quyết trường hợp sử dụng bạn đã đưa ra.


Tôi không thấy làm thế nào nó có thể ... bạn có thể giải thích?
liori

Tôi không biết cách cấu trúc cây xây dựng của bạn nhưng giả sử nó giống như src, src / bin, src / obj, thì bạn có thể có bin và obj là các liên kết tượng trưng đến bất cứ nơi nào bạn muốn mã. Chỉ cần đảm bảo rằng bản dựng của bạn không xóa hoàn toàn các thư mục đó. Hoặc có src là liên kết tượng trưng đến "chỉ đọc" sau đó có các liên kết trong chỉ đọc trở lại. Dù bằng cách nào bạn cũng có thể làm cho nó hoạt động. Trừ khi tôi hoàn toàn thiếu kịch bản của bạn.
MikeBaz - MSFT

Tôi không kiểm soát quy trình xây dựng và nó có thể viết ở mọi nơi.
liori

@liori: đối với trường hợp sử dụng này, bạn có thể sao chép các thư mục và tạo các liên kết tượng trưng cho mọi tệp (tương tự cd SOURCE; find -type d -exec sh -c 'cd BUILDDIR && mkdir "$@"' _ {} +; find -type f -exec sh -c 'mklink "$1" "BUILDDIR/$1"' _ {} \;hoặc một số Windows tương đương).
Gilles 'SO- ngừng trở nên xấu xa'

@Gilles: bạn khiến tôi nghĩ rằng sao chép không phải là giải pháp tồi ... (bên cạnh đó, bạn có thể biến nó thành câu trả lời không?)
liori

2

Bạn có thể tạo các liên minh của một người nghèo với các liên kết tượng trưng: tái tạo cấu trúc thư mục của nguồn, nhưng tạo các liên kết (tượng trưng hoặc cứng) cho các tệp. Điều này phải phù hợp với mục đích của bạn miễn là hệ thống xây dựng không cố gắng sửa đổi các tệp nguồn.

Với GNU cp, nó dễ như cp -alhoặc cp -as. Nhưng tôi không biết có cổng công cụ GNU nào hiểu các liên kết Windows không.

Nếu bạn cần gọi lệnh mklink, có thể thực hiện bằng các công cụ POSIX (cảnh báo, được nhập trực tiếp vào trình duyệt):

cd SOURCE
find -type d -exec sh -c 'cd BUILDDIR && mkdir "$@"' _ {} +
find -type f -exec sh -c 'mklink "$1" "BUILDDIR/$1"' _ {} \;

Tôi cho rằng có một cách Windows gốc liên quan đến Powershell, nhưng tôi không biết nó trông như thế nào. Có thể đáng để điều tra nếu cây thư mục của bạn lớn và đĩa của bạn nhanh vì việc chuyển đổi trong Windows có xu hướng chậm và các lệnh ở trên cần phải rẽ nhánh rất nhiều.


Cách riêng sẽ là một cái gì đó giống như for /R %BUILDDIR% %F in (*.*) do @junction X:%pnxF %F, sử dụng junctioncông cụ từ sysiternals.
MSalters

@MSalters Liên kết tượng trưng có nguồn gốc từ Windows bây giờ. Và các mối nối NTFS không giống nhau.
Nick Whaley

@NickWhaley: Thật vậy, các mối nối về cơ bản là các liên kết cứng.
MSalters

2

Có trong các phiên bản gần đây của Windows , nhưng tôi không biết cách sử dụng nó.


"UWF là một tính năng mới cho Tiêu chuẩn 8 và không có sẵn như là một phần của Windows 8." Không có khả năng này có sẵn trong các phiên bản Windows của người dùng cuối.
Daniel B


Hữu ích cho các trường hợp khác, nhưng không phải cái này. Tốt để biết và đáng chú ý.
Robert Wm Ruedisueli

1

Tôi đã tìm thấy cái này, nhưng tôi không thực sự biết nó hoạt động tốt như thế nào:


Các dự án được lưu trữ trên Google Code là không rõ ràng. Bạn có thể muốn tìm kiếm một phiên bản cập nhật ở đâu đó. Có thể là một ngã ba.
Robert Wm Ruedisueli
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.