Filesystem seperti UnionFS untuk windows

12

Saya mencari sesuatu yang berfungsi seperti UnionFS di Windows 7. Usecase saya: memiliki direktori kerja kode bersih dalam direktori read-only, dan mengompilasinya dalam sistem file gabungan yang akan menyimpan biner yang dikompilasi secara logis di tempat yang sama, tetapi secara fisik di direktori berbeda.

Perpustakaan tidak bekerja dengan cara ini, meskipun mereka diterima sebagai jawaban di UnionFS sama di windows, Hampir menggabungkan folder - mereka hanya menampilkan direktori tingkat atas di satu tempat.

Kode itu sendiri sangat besar (2GB data), dan saya ingin menghindari menyalinnya untuk setiap build di server build saya.

liori
sumber
Oh, oops. : - / Saya mencoba memecahkan masalah yang sama persis sendiri, dan tidak membaca dengan cukup cermat. Saya akan menghapus komentar saya. Saya hampir tidak mengenal platform Windows. : - /
Mahakuasa

Jawaban:

2

Bisakah Anda menggunakan tautan simbolis untuk memalsukan ini? http://en.wikipedia.org/wiki/NTFS_symbolic_link Ini tidak menjawab pertanyaan yang tepat tapi saya pikir itu akan menyelesaikan kasus penggunaan yang Anda berikan.

MikeBaz - MSFT
sumber
Saya tidak mengerti bagaimana mungkin ... bisakah Anda menjelaskan?
liori
Saya tidak tahu bagaimana struktur build Anda, tetapi dengan asumsi itu seperti src, src / bin, src / obj, maka Anda dapat memiliki bin dan obj menjadi tautan simbolis ke mana pun Anda ingin kode tersebut berada. Pastikan build Anda tidak menghapus folder-folder itu sepenuhnya. Atau miliki src sebagai tautan simbolis ke "read only" lalu minta tautan di read only kembali. Bagaimanapun Anda harus bisa membuatnya bekerja. Kecuali saya benar-benar kehilangan skenario Anda.
MikeBaz - MSFT
Saya tidak mengontrol prosedur pembuatan, dan bisa menulis di mana-mana.
liori
@liori: untuk kasus penggunaan ini, Anda dapat mereproduksi direktori dan membuat tautan simbolis untuk setiap file (sesuatu seperti cd SOURCE; find -type d -exec sh -c 'cd BUILDDIR && mkdir "$@"' _ {} +; find -type f -exec sh -c 'mklink "$1" "BUILDDIR/$1"' _ {} \;atau setara dengan Windows).
Gilles 'SO- stop being evil'
@Gilles: Anda membuat saya berpikir menyalin bukanlah solusi yang buruk ... (selain itu, bisakah Anda membuatnya menjadi jawaban?)
liori
2

Anda dapat membuat unionfs orang miskin dengan tautan simbolik: mereproduksi struktur direktori sumber, tetapi membuat tautan (simbolik atau keras) untuk file. Ini harus sesuai untuk tujuan Anda selama sistem build tidak mencoba untuk memodifikasi file sumber.

Dengan GNU cp, semudah cp -alatau cp -as. Tapi saya tidak tahu apakah ada port alat GNU yang mengerti tautan Windows.

Jika Anda perlu memanggil perintah mklink, itu bisa dilakukan dengan alat POSIX (peringatan, ketikkan langsung ke browser):

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

Saya kira ada cara Windows asli yang melibatkan Powershell, tapi saya tidak tahu seperti apa bentuknya. Mungkin perlu diselidiki jika pohon direktori Anda besar dan disk Anda cepat karena forking di Windows cenderung lambat, dan perintah di atas perlu banyak bercabang.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Cara asli akan menjadi seperti for /R %BUILDDIR% %F in (*.*) do @junction X:%pnxF %F, menggunakan junctionalat dari sysinternals.
MSalters
@MSalters Tautan simbolik adalah asli ke Windows sekarang. Dan persimpangan NTFS bukan hal yang sama.
Nick Whaley
@NickWhaley: Memang, persimpangan pada dasarnya adalah tautan keras.
MSalters
2

Ya ada di Windows versi terbaru , tapi saya tidak tahu bagaimana menggunakannya.

pengguna541686
sumber
"UWF adalah fitur baru untuk Standard 8, dan tidak tersedia sebagai bagian dari Windows 8." Tidak mungkin ini tersedia dalam versi Windows pengguna akhir.
Daniel B
Berguna untuk kasus lain, tetapi tidak untuk yang satu ini. Baik untuk diketahui dan patut dicatat.
Robert Wm Ruedisueli
1

Saya menemukan ini, tetapi saya tidak benar-benar tahu seberapa baik kerjanya:

Beraneka ragam
sumber
Proyek yang diarsipkan di Google Code tidak dipelihara. Anda mungkin ingin mencari versi yang diperbarui di suatu tempat. Mungkin garpu.
Robert Wm Ruedisueli