GNU/Linux >> Belajar Linux >  >> Linux

Linux – Menggabungkan Perubahan Sistem File Atas Ke Sistem File Bawah Di Linux Overlay (overlayf) Mount?

Saya ingin dapat menggabungkan perubahan dari sistem file atas dari mount overlay ke sistem file yang lebih rendah.

Saya tertarik keduanya online (yaitu menggabungkan sementara hamparan terpasang) dan luring (lepaskan overlay lalu gabungkan) solusi.

Saya telah menemukan beberapa solusi offline, yang telah saya tambahkan sebagai jawaban.

Adakah yang tahu tentang online solusi? Akan lebih baik jika Anda memiliki perintah tipe “commit” yang dapat Anda jalankan untuk menggabungkan lapisan-lapisan saat overlay masih terpasang.

Sesuatu seperti ini telah ditanyakan dalam pertanyaan berikut tanpa jawaban:

  • Apakah ada cara untuk memodifikasi satu file dan menyinkronkan ke direktori yang lebih rendah di OverlayFs?
  • Bagaimana cara memodifikasi file yang lebih rendah melalui direktori OverlayFS?
  • OverlayFS Mengedit File dengan Mulus di Direktori Bawah
  • OverlayFS – Bagaimana cara membuat perubahan pada sistem file atas tetap ada tanpa melepasnya?

Komentar dalam postingan ini menyarankan berbagai mergerf dan bcache, keduanya memecahkan kasus penggunaan tertentu tetapi bukan kasus penggunaan agnostik sistem file generik yang disediakan overlay.

Tujuan saya adalah memiliki kotak pasir sistem file yang aman dengan snapshot yang dapat digunakan dengan aplikasi Linux apa pun melalui sistem file apa pun (jika praktis), memungkinkan Anda untuk memutar kembali perubahan atau mengkomitnya secara manual saat Anda siap.

Saya curiga bahwa Linux arus utama modern memiliki semua fitur yang diperlukan untuk melakukan ini, berkat semua inovasi sandboxing/virtualisasi beberapa tahun terakhir, jika saja saya tahu cara menggunakannya.

Jawaban yang Diterima:

Upaya online solusi, tapi belum cukup.

Penyiapan (misalnya /tmp direktori, sebagai root):

LOWER=$HOME
mkdir u1 w1 o1 O
mount -t overlay overlay -o lowerdir=$LOWER,upperdir=u1,workdir=w1 o1
mount --bind o1 O

Kemudian Anda dapat bekerja di O direktori, yang merupakan hamparan di atas $LOWER . Saat Anda ingin melakukan snapshot:

mkdir u2 w2 o2
mount -t overlay overlay -o lowerdir=o1,upperdir=u2,workdir=w2 o2

(Perhatikan bahwa hamparan berlapis seperti ini tidak akan berfungsi pada kernel lama).

Tapi kemudian saya ingin beberapa cara untuk secara atom mengubah pengikatan mount di O untuk menunjuk ke o2 bukannya o1 . Saya tidak tahu bagaimana melakukan ini selain:

umount O
mount --bind o2 O

(Bukan atom; ada jendela di mana O dilepas).

Idealnya, proses yang berjalan dapat terus berjalan tanpa mengetahui bahwa sistem file yang mendasari O telah berubah dari o1 ke o2 . Saya tidak tahu apakah ini mungkin, atau apakah mengubah sistem file yang mendasari O seperti ini akan mengganggu aplikasi yang terbuka terlalu banyak. Saya perlu menyelidiki lebih lanjut.

Kemudian, sekali O telah dialihkan ke o2 , kita dapat me-remount o1 baca-saja sebagai tindakan pencegahan, lalu lakukan penggabungan offline menggunakan misalnya rdiffdir atau overlayfs-tools.

Terkait:Lembar Cheat Lembaran Suci

Terakhir, kami ingin beberapa cara untuk me-remount o2 sebagai lowerdir=$HOME,upperdir=u2,workdir=w2 sehingga o1 , u1 dan w1 (semua direktori sekarang kosong) dapat dihapus. Sekali lagi, saya tidak tahu apakah ini mungkin.

Jika tidak, kita dapat mencapai snapshot hanya dengan menumpuk overlay lebih dalam dan lebih dalam dan membiarkan dir overlay dan atas untuk masing-masing terpasang tanpa mencoba menggabungkan atau membersihkan. Tetapi mungkin ada batasan jumlah overlay bersarang yang dapat dipasang. Dan pada titik tertentu, kita masih perlu menggabungkan lapisan ke bawah jika kita ingin mempertahankan perubahan.


Linux
  1. Cara mengenkripsi satu sistem file Linux

  2. Linux – Apa Mount Points yang Ada Pada Sistem Linux Pada Umumnya?

  3. Linux – Union Mount Di Linux?

  1. Linux – Bagaimana Cara Memasang Sistem File Jarak Jauh Dengan Menentukan Nomor Port?

  2. Bind mount di Linux

  3. Cara memasang file iso di Linux

  1. Opsi pemasangan NFS umum di Linux

  2. Bagaimana cara me-mount secara manual sistem file linux baca/tulis sebagai pengguna biasa?

  3. Bagaimana cara memasang file ISO di Linux?