Snapper adalah utilitas baris perintah di Linux yang digunakan untuk membuat dan mengelola snapshot dari volume tipis LVM. Itu dapat membuat, menghapus, dan membandingkan snapshot dan mengembalikan perubahan yang dilakukan di antara snapshot. Snapper juga memungkinkan pembuatan dan pengelolaan snapshot yang mudah untuk Btrfs.
Memasang kakap
Gunakan perintah yum untuk menginstal paket perangkat lunak kakap.
# yum install snapper ... Transaction Summary ============================================================= Install 1 Package (+3 Dependent packages) Total download size: 499 k Installed size: 1.5 M Is this ok [y/d/N]: y ... Complete!
Gunakan perintah rpm –ql untuk melihat file yang disediakan oleh paket snapper.
# rpm –ql snapper /etc/cron.daily/snapper /etc/cron.hourly/snapper /etc/dbus-1/system.d/org.opensus.Snapper.conf /etc/logrotate.d/snapper /usr/bin/snapper /usr/sbin/snapperd /usr/share/dbus-1/system-services/org.opensus.Snapper.service ...Perhatikan dua file cron snapper.
– Secara default, snapper menyiapkan cron.hourly tugas untuk membuat snapshot di .snapshots subdirektori volume dan cron.daily tugas untuk membersihkan snapshot lama.
– Anda dapat mengedit file konfigurasi untuk menonaktifkan atau mengubah perilaku ini.
1. Membuat Volume Logika yang Disediakan Secara Tipis
Gunakan perintah lvcreate untuk membuat volume yang disediakan tipis bernama – thinvol1. Perhatikan bahwa volume ini perlu di-mount sebelum kita membuat snapshot menggunakan perintah snapper.
# vgs VG #PV #LV #SN Attr VSize VFree myvolg 1 0 0 wz--n- 1020.00m 1020.00m
Buat kumpulan tipis:
# lvcreate –v –L 100m –T myvolg/mythinpool ... Logical volume “mythinpool” created
Buat volume yang disediakan tipis :
# lvcreate –v –V 200m –T myvolg/mythinpool –n thinvol1 ... Logical volume “thinvol1” created
Buat sistem file pada volume tipis.
# mkfs.ext4 /dev/myvolg/thinvol1 ... Writing superblocks and filesystem accounting information: done
Pasang sistem file:
# mkdir /myvol1 # mount /dev/myvolg/thinvol1 /myvol1
2. Membuat file konfigurasi kakap
Untuk membuat snapshot menggunakan snapper, file konfigurasi diperlukan untuk volume tipis LVM atau subvolume Btrfs. Volume LVM dan Btrfs juga harus memiliki sistem file terpasang. Gunakan perintah create-config untuk membuat file konfigurasi. Contoh berikut membuat file konfigurasi bernama myvol_snap untuk sistem file LVM ext4 yang dipasang di /myvol1:
# snapper –c myvol1_snap create-config –f "lvm(ext4)" /myvol1
– Perintah ini menambahkan entri ke /etc/sysconfig/snapper.
– Perintah ini membuat file konfigurasi /etc/snapper/configs/myvol1_snap.
– Perintah ini membuat direktori .snapshots di /myvol1 direktori.
# cat /etc/sysconfig/snapper ... SNAPPER_CONFIGS=”myvol1_snap”
# cat /etc/snapper/configs/myvol1_snap ... # subvolume to snapshot SUBVOLUME=”/myvol1” # filesystem type FSTYPE=”lvm(ext4)” ... # start comparing pre- and post-snapshot in background after... BACKGROUND_COMPARISON=”yes” # run daily number cleanup NUMBER_CLEANUP=”yes” ... # create hourly snapshots TIMELINE_CREATE=”yes” # cleanup hourly snapshots after some time TIMELINE_CLEANUP=”yes” ... # cleanup empty pre-post-pairs EMPTY_PRE_POST_CLEANUP=”yes” ...
Snapshot dari sistem file /myvol1 disimpan di subdirektori .snapshots.
# ls –la /myvol1 ... drwxr-x--- ... .snapshots ...
Jenis snapshot
Ada tiga jenis snapshot yang dapat Anda buat dengan menggunakan snapper:
pre: Gunakan untuk merekam status volume sebelum modifikasi. Pra snapshot harus selalu memiliki snapshot postingan yang sesuai.
posting: Gunakan untuk merekam status volume setelah modifikasi.
tunggal: Snapshot ini tidak memiliki hubungan khusus dengan snapshot lain.
3. Membuat cuplikan
Buat beberapa file uji di direktori /myvol1.
# echo "This is a test file" > /myvol1/test_file
Gunakan snapper create -t pre untuk membuat pra snapshot dari volume yang ditentukan oleh myvol1_snap berkas konfigurasi. Sertakan opsi –p untuk menampilkan jumlah snapshot yang sedang dibuat. (Dalam contoh ini, nomor pra snapshot adalah 1)
# snapper –c myvol1_snap create –t pre –p 1
Snapshot disimpan dengan nomor snapshot di subdirektori .snapshots volume. Lihat konten direktori /myvol1/.snapshots.
# ls –l /myvol1/.snapshots ... drwxr-xr-x ... 1
Lihat konten direktori /myvol1/.snapshots/1.
# ls –l /myvol1/.snapshots/1 ... -rw------- ... info.xml drwxr-x--- ... snapshot
Sekarang ubah isi direktori /myvol1 dengan menghapus test_file.
# rm /myvol1/test_file
Gunakan snapper create -t post untuk membuat snapshot post dari volume yang ditentukan oleh file konfigurasi myvol1_snap. Sertakan opsi –pre-num 1 untuk mengaitkan snapshot posting ini dengan snapshot sebelumnya 1. Sertakan opsi –p untuk menampilkan jumlah snapshot yang sedang dibuat.
# snapper –c myvol1_snap create –t post --pre-num 1 –p 2
Anda akan melihat nama direktori baru 2 dibuat di direktori .snapshots.
# ls –l /myvol1/.snapshots/2 ... -rw------- ... filelist-1.txt -rw------- ... info.xml drwxr-x--- ... snapshot
Filelist-1.txt berisi file yang telah dihapus setelah snapshot awal dan sebelum snapshot postingan.
# cat /myvol1/.snapshots/2/filelist-1.txt -..... /test_file
Membandingkan snapshot sebelum dan sesudah
Gunakan perintah status snapper untuk menampilkan file dan direktori yang telah ditambahkan, dihapus, atau dimodifikasi antara pra snapshot 1 dan pasca snapshot 2.
# snapper –c myvol1_snap status 1..2 -..... /test_file
Gunakan perintah snapper diff untuk menampilkan perbedaan antara isi file di pra snapshot 1 dan pasca snapshot 2.
# snapper –c myvol1_snap diff 1..2 Binary files /myvol1/.snapshots/1/snapshot/test_file and /myvol1/.snapshots/2/snapshot/test_file differ
Gunakan perintah snapper list untuk membuat daftar snapshot yang ada untuk volume yang ditentukan oleh file konfigurasi myvol1_snap.
# snapper –c myvol1_snap list Type | # | Pre # | Date | User | Cleanup |Description| Userdata ------+---+-------+------+------+---------+------------+-------- single| 0 | | ... | root | | Current | pre | 1 | | ... | root | | | post | 2 | 1 | ... | root | | |
membalikkan perubahan dari post snapshot ke pre shanshot
Untuk membatalkan perubahan dari snapshot pos ke pra snapshot yaitu untuk memulihkan file_test gunakan snapper undochange perintah.
# snapper –c myvol1_snap undochange 1..2 create:1 modify:0 delete:0
Verifikasi
# ls /myvol1 lost+found test_file