Bagaimana saya bisa membayangi seluruh pohon direktori dan menyalin file sebelum menulisnya?

1

Saya memiliki repositori kode sumber besar di Linux NFS mount dan saya ingin membuat salinan bayangan dari repositori tersebut sehingga hanya file yang saya tulis di repositori bayangan ini yang dimodifikasi dalam repositori bayangan saya. Semua file lain tetap symlink atau hardlink ke master, repositori asli.

Bisakah ini dilakukan dengan hardlink di NFS?

Saya dapat membayangkan skrip di mana, seperti dalam sistem kontrol versi, saya memeriksa file yang ingin saya modifikasi dari aslinya, yang menyebabkan skrip memutus tautan antara repositori master dan shadow, membuat salinan repositori master file yang kemudian bisa saya modifikasi. Namun, saya yakin orang lain telah menciptakan sebuah utilitas untuk ini dan saya hanya tidak mengetahui mantra Linux yang tidak jelas yang diperlukan untuk menyulap solusi saya.

Ross Rogers
sumber
Tidak tahu apakah Anda masih melakukan ini, tetapi hari ini saya akan merekomendasikan menggunakan btrfs. Ini fitur kloning copy-on-write dari direktori yang melakukan persis apa yang Anda inginkan di sini, tanpa repot melacak symlinks (dan tanpa aplikasi pihak ketiga menyadari fakta bahwa klon ini "apa pun kurang" dari yang asli file). Juga dengan manfaat tambahan bahwa hanya blok yang berbeda disimpan ketika file yang dikloning diubah. FSes lain (seperti ZFS) juga menawarkan kloning copy-on-write, tetapi tidak dari direktori atau file yang sewenang-wenang. Btrfs cukup keren seperti itu :)
DanielSmedegaardBuus

Jawaban:

3

Sistem jendela X11 menyertakan seperangkat utilitas yang menyertakan lndir ( http://linux.die.net/man/1/lndir ), yang membuat direktori bayangan. Itu membuat salinan direktori asli sehingga:

  1. setiap direktori dalam salinan adalah direktori nyata
  2. setiap file biasa dalam salinan adalah tautan simbolis ke aslinya

Ketika Anda ingin memodifikasi file, Anda harus:

  1. hapus symlink-nya di dalam copy
  2. salin file asli ke direktori tree copy
  3. dan memodifikasinya

mungkin lebih manual daripada yang Anda inginkan, tetapi mungkin lebih mudah daripada mengatur sistem file baru. Di Ubuntu 12.04, ini adalah bagian dari paket xutils-dev.

Haim Roman
sumber
2

Sebuah unionfs pengaturan berbasis bisa bekerja untuk Anda. Unionfs memungkinkan Anda menggabungkan NFS read-only dengan ditulis sebuah, dinamis berkembang , perangkat loop bertenaga filesystem .

artisoex
sumber
Saya heran mengapa jawaban ini tidak diterima? Ini yang paling lengkap, saya percaya.
Vladislav Rastrusny