Fitur snapshot dari sistem file Btrfs menggunakan prinsip Copy-on-Write (CoW). Jadi, tidak memakan banyak ruang disk, dan Anda dapat mengambil snapshot dari subvolume secara instan.
Sistem file Btrfs mendukung 2 jenis snapshot.
- Cuplikan yang dapat ditulis: Jika Anda mengambil snapshot yang dapat ditulis, Anda dapat memodifikasi file/direktori snapshot itu nanti. Ini adalah tipe snapshot default dari sistem file Btrfs.
- Cuplikan hanya-baca: Jika Anda mengambil snapshot hanya-baca, Anda tidak dapat mengubah file/direktori snapshot itu nanti.
Artikel ini akan menunjukkan kepada Anda cara mengambil snapshot yang dapat ditulis dan hanya-baca dari subvolume sistem file Btrfs Anda. Saya juga akan menunjukkan cara memperbarui snapshot yang dapat ditulis dan memulihkan file dari snapshot. Saya akan menunjukkan cara menghapus snapshot juga. Jadi, mari kita mulai.
Prasyarat
Untuk mencoba contoh artikel ini,
- Anda harus menginstal sistem file Btrfs di komputer Anda.
- Anda harus memiliki hard disk atau SSD dengan setidaknya 1 partisi gratis (berukuran berapa pun).
Saya memiliki hard disk 20 GB sdb di mesin Ubuntu saya. Saya telah membuat 2 partisi sdb1 dan sdb2 di harddisk ini. Saya akan menggunakan partisi sdb1 dalam artikel ini.
$ sudo lsblk -e7
Hard disk atau SSD Anda mungkin memiliki nama yang berbeda dari milik saya, begitu juga dengan partisinya. Jadi, pastikan untuk menggantinya dengan milikmu mulai sekarang.
Jika Anda memerlukan bantuan untuk menginstal sistem file Btrfs di Ubuntu, periksa artikel saya Instal dan Gunakan Btrfs di Ubuntu 20.04 LTS.
Jika Anda memerlukan bantuan untuk menginstal sistem file Btrfs di Fedora, lihat artikel saya Instal dan Gunakan Btrf di Fedora 33.
Membuat Sistem File Btrfs
Untuk bereksperimen dengan subvolume Btrfs, Anda perlu membuat sistem file Btrfs.
Untuk membuat sistem file Btrfs dengan label data di sdb1 partisi, jalankan perintah berikut:
$ sudo mkfs.btrfs -L data /dev/sdb1
Sistem file Btrfs harus dibuat.
Buat direktori /data dengan perintah berikut:
$ sudo mkdir -v /data
Untuk memasang sistem file Btrfs yang dibuat di sdb1 partisi di /data direktori, jalankan perintah berikut:
$ sudo mount /dev/sdb1 /data
Sistem file Btrfs harus dipasang seperti yang Anda lihat pada tangkapan layar di bawah ini.
$df -h /data
Mempersiapkan Sistem File Btrfs untuk Snapshot
Di Btrfs, Anda hanya dapat mengambil snapshot dari subvolume Btrf. Akar utama dari sistem file Btrfs juga merupakan subvolume. Jadi, Anda dapat mengambil cadangan seluruh sistem file Btrfs serta subvolume tertentu.
Bagian ini akan membuat subvolume Btrfs /data/proyek/web1 dan buat file yang diperlukan untuk bagian selanjutnya dari artikel ini di bawah. Saya juga akan membuat direktori tempat Anda dapat menyimpan foto Anda. Di bagian selanjutnya, saya akan menunjukkan kepada Anda cara mengambil snapshot (dapat ditulis dan hanya-baca), memperbarui snapshot yang dapat ditulis, dan memulihkan file dari snapshot. Jadi, mari kita mulai.
Pertama, buat direktori baru /data/proyek sebagai berikut:
$ sudo mkdir -v /data/proyek
Buat subvolume baru web1 dalam /data/proyek direktori sebagai berikut:
$ sudo btrfs subvolume create /data/projects/web1
Buat file baru indeks.html dalam /data/proyek/web1 subvolume sebagai berikut:
$ sudo nano /data/proyek/web1/indeks.html
Ketik baris kode berikut di indeks.html mengajukan.
Halo Dunia 4
Setelah selesai, tekan
Buat file baru gaya.css dalam /data/proyek/web1 subvolume sebagai berikut:
$ sudo nano /data/proyek/web1/style/.css
Ketik baris kode berikut di gaya.css mengajukan.
h1warna: hijau;
Setelah selesai, tekan
Sekarang, /data/proyek/web1 subvolume memiliki indeks.html dan gaya.css mengajukan.
$ ls -lh /data/proyek/web1
Saya ingin menyimpan semua snapshot dari sistem file Btrfs ini di /data/.snapshot direktori.
Buat /data/.snapshot direktori dengan perintah berikut:
$ sudo mkdir -v /data/.snapshot
Mengambil Cuplikan Subvolume
Untuk mengambil snapshot dari /data/proyek/web1 subvolume ke dalam /data/.snapshot/web1-2020-12-25 direktori (akan dibuat secara otomatis), jalankan perintah berikut:
$ sudo btrfs subvolume snapshot /data/projects/web1 /data/.snapshot/web1-2020-12-25
Sebuah cuplikan dari /data/proyek/web1 direktori harus dibuat di /data/.snapshot/web1-2020-12-25 direktori.
Seperti yang Anda lihat pada tangkapan layar di bawah, subvolume baru .snapshot/web1-2020-12-25 dibuat. Sebuah snapshot sebenarnya adalah subvolume.
$ sudo btrfs daftar subvolume /data
Anda dapat melihat informasi lebih lanjut tentang snapshot yang Anda buat di /data/.snapshot/web1-2020-12-25 direktori sebagai berikut:
$ sudo btrfs subvolume tampilkan /data/.snapshot/web1-2020-12-25
Seperti yang Anda lihat, semua file yang ada di /data/proyek/web1 subvolume ada di /data/.snapshot/web1-2020-12-25 foto.
$pohon -a /data
Memulihkan File dari Snapshot
Di bagian ini, saya akan menunjukkan cara memulihkan file dari snapshot Btrfs.
Pertama, saya akan menunjukkan cara memulihkan satu file dari snapshot from.
Buka /data/proyek/web1/indeks.html file dengan editor teks nano sebagai berikut:
$ sudo nano /data/proyek/web1/indeks.html
Buat perubahan apa pun yang Anda inginkan.
Setelah selesai, tekan
Seperti yang Anda lihat, yang utama indeks.html file berbeda dengan indeks.html file di snapshot.
$ cat /data/proyek/web1/indeks.html$ kucing /data/.snapshot/web1-2020-12-25/indeks.html
Kami telah membuat perubahan pada main indeks.html file tidak diinginkan, dan kami ingin memulihkan recover indeks.html file dari snapshot.
Anda dapat memulihkan indeks.html file dari snapshot sebagai berikut:
$ sudo cp -v /data/.snapshot/web1-2020-12-25/indeks.html /data/proyek/web1/indeks/.html
Seperti yang Anda lihat, indeks.html file dipulihkan dari snapshot.
$ cat /data/proyek/web1/indeks.html$ kucing /data/.snapshot/web1-2020-12-25/indeks.html
Sekarang, mari kita lihat bagaimana memulihkan semua file/direktori dari snapshot.
Hapus semua file dari /data/proyek/web1 cuplikan sebagai berikut:
$ sudo rm -rv /data/proyek/web1/*
Untuk memulihkan semua file/direktori dari snapshot, jalankan perintah berikut:
$ sudo rsync -avz /data/.snapshots/web1-2020-12-25/ /data/projects/web1/
Seperti yang Anda lihat, file/direktori dipulihkan dari snapshot.
$ ls -lh /data/proyek/web1
Akhirnya, mari kita lihat bagaimana memulihkan file/direktori dari snapshot dalam mode mirror. Dalam mode cermin, file/direktori subvolume akan sama seperti di snapshot. Jika ada file/direktori di subvolume yang tidak tersedia di snapshot, mereka akan dihapus.
Mari buat file baru di subvolume untuk membedakan pohon file dari snapshot.
Membuat Baca aku.txt file di /data/proyek/web1 subvolume sebagai berikut:
$ echo "halo dunia 5" | sudo tee /data/proyek/web1/README.txt
Seperti yang Anda lihat, pohon file dari /data/proyek/web1 subvolume berbeda dari /data/.snapshot/web1-2020-12-25 foto.
$pohon -a /data
Untuk mengembalikan file/direktori dari /data/.snapshot/web1-2020-12-25 cuplikan ke /data/proyek/web1 subvolume dalam mode mirror, jalankan perintah berikut:
$ sudo rsync -avz --delete /data/.snapshots/web1-2020-12-25/ /data/projects/web1/
Semua file/direktori dari /data/proyek/web1 subvolume harus dipulihkan (dalam mode cermin) dari /data/.snapshot/web1-2020-12-25 foto.
Pohon file dari /data/proyek/web1 subvolume dan /data/.snapshot/web1-2020-12-25 snapshot harus sama.
Seperti yang Anda lihat, indeks.file dan gaya html.isi file css sama di /data/proyek/web1 subvolume dan /data/.snapshot/web1-2020-12-25 foto.
Isi dari indeks.html dan gaya.css file di /data/proyek/web1 subvolume.
$ cat /data/proyek/web1/indeks.html$ cat /data/projects/web1/style.css
Isi dari indeks.html dan gaya.css file di /data/.snapshot/web1-2020-12-25 foto.
$ cat /data/proyek/web1/indeks.html$ cat /data/projects/web1/style.css
Memperbarui Cuplikan
Secara default, sistem file Btrfs mengambil snapshot yang dapat ditulis. Cuplikan Btrfs seperti subvolume. Jadi, Anda dapat memodifikasi/memperbarui file/direktori dari snapshot yang dapat ditulis.
Ayo perbarui indeks.html file di /data/proyek/web1 subvolume.
Pertama, buka indeks.html file dari /data/proyek/web1 subvolume dengan nano editor teks sebagai berikut:
$ sudo nano /data/proyek/web1/indeks.html
Buat perubahan apa pun yang Anda inginkan. Setelah selesai, tekan
Seperti yang Anda lihat, indeks.file html dari /data/proyek/web1 subvolume berbeda dari /data/.snapshot/web1-2020-12-25 foto.
$ cat /data/proyek/web1/indeks.html$ kucing /data/.snapshot/web1-2020-12-25/indeks.html
Anda ingin menyimpannya indeks.html file dari /data/proyek/web1 subvolume.
Untuk memperbarui indeks.html file di /data/.snapshot/web1-2020-12-25 snapshot, jalankan perintah berikut:
$ sudo cp -v /data/projects/web1/index.html /data/.snapshot/web1-2020-12-25/indeks.html
Seperti yang Anda lihat, indeks.html file dari /data/.snapshot/web1-2020-12-25 snapshot diperbarui.
Memperbarui snapshot semudah menyalin file baru ke snapshot.
Mengambil Snapshot Hanya Baca dari Subvolume of
Terkadang, Anda tidak ingin snapshot yang Anda ambil diperbarui dengan cara apa pun. Dalam hal ini, Anda dapat membuat snapshot hanya-baca.
Misalnya, untuk membuat snapshot hanya-baca /data/.snapshot/web1-2020-12-26 dari /data/proyek/web1 subvolume, jalankan perintah berikut:
$ sudo btrfs subvolume snapshot -r /data/projects/web1 /data/.snapshot/web1-2020-12-26
Seperti yang Anda lihat, subvolume baru .snapshot/web1-2020-12-26 dibuat.
$ sudo btrfs daftar subvolume /data
Seperti yang Anda lihat, cuplikannya /data/.snapshot/web1-2020-12-26 hanya bisa dibaca.
$ sudo btrfs subvolume tampilkan /data/.snapshot/web1-2020-12-26
Ayo perbarui indeks.html file dari /data/proyek/web1 subvolume.
Untuk melakukannya, buka indeks.html file dari /data/proyek/web1 subvolume dengan nano editor teks sebagai berikut:
$ sudo nano /data/proyek/web1/indeks.html
Buat perubahan apa pun yang Anda inginkan. Setelah selesai, tekan
Seperti yang Anda lihat, indeks.html dalam /data/proyek/web1 subvolume berbeda dari /data/.snapshot/web1-2020-12-26 foto.
$ cat /data/proyek/web1/indeks.html$ kucing /data/.snapshot/web1-2020-12-26/indeks.html
Ayo coba update indeks.html file di /data/.snapshot/web1-2020-12-26 foto.
$ sudo cp -v /data/projects/web1/index.html /data/.snapshot/web1-2020-12-26/indeks.html
Seperti yang Anda lihat, Anda tidak dapat memperbarui indeks.html file dari /data/.snapshot/web1-2020-12-26 snapshot karena snapshot bersifat hanya-baca.
Menghapus Snapshot
Saya telah memberi tahu Anda sebelumnya bahwa snapshot Btrf seperti subvolume. Jadi, Anda dapat menghapus snapshot Btrfs seperti Anda menghapus subvolume Btrfs. Perintah yang sama.
Ini adalah bagaimana pohon file dari sistem file Btrfs dipasang di /data direktori terlihat seperti saat ini.
$pohon -a /data
Mari kita hilangkan .snapshot/web1-2020-12-25 foto.
$ sudo btrfs daftar subvolume /data
Untuk menghapus /data/.snapshot/web1-2020-12-25 snapshot, jalankan perintah berikut:
$ sudo btrfs subvolume hapus /data/.snapshot/web1-2020-12-25
Seperti yang Anda lihat, cuplikannya .snapshot/web1-2020-12-25 tidak ada lagi.
$ sudo btrfs daftar subvolume /data
Seperti yang Anda lihat, file/direktori dari /data/.snapshot/web1-2020-12-25 snapshot juga dihapus.
$pohon -a /data
Kesimpulan
Artikel ini telah menunjukkan kepada Anda cara mengambil snapshot yang dapat ditulis dan hanya-baca dari subvolume sistem file Btrfs Anda. Saya juga telah menunjukkan kepada Anda cara memperbarui snapshot yang dapat ditulis dan memulihkan file dari snapshot. Saya telah menunjukkan kepada Anda cara menghapus snapshot Btrfs juga. Artikel ini akan membantu Anda memulai dengan fitur snapshot Btrfs.