GNU/Linux >> Belajar Linux >  >> Linux

Cara Membuat Snapshot Sistem File menggunakan Perintah Snapper di Linux

Snapper adalah alat baris perintah Linux untuk membuat dan mengelola snapshot sistem file Anda.

Menggunakan perintah snapper, Anda dapat membuat snapshot read-only. Anda dapat menggunakan snapshot ini untuk memulihkan file tertentu atau semua file selama situasi bencana apa pun.

Anda juga dapat menggunakannya untuk membandingkan beberapa snapshot dan kembali ke snapshot lama tertentu.

Snapper hanya didukung pada btrfs (sistem file B-tree copy-on-write), filesystem ext4 dan thin- volume logis berbasis LVM yang disediakan.

Saat snapshot diambil menggunakan perintah snapper, snapshot akan berada di sistem file yang sama sehingga harus ada cukup ruang kosong yang tersedia dan pembersihan FS reguler mungkin diperlukan.

Jika Anda tertarik untuk menggunakan snapshot berbasis rsync, Anda juga harus memeriksa utilitas rsnapshot yang telah kita bahas sebelumnya.

Instal Utilitas Kakap

Anda dapat mengunduh biner kakap untuk berbagai distribusi dan menginstalnya, atau mengunduh kode sumber dan mengompilasinya sendiri.

Misalnya, Anda dapat mengunduh rpm kakap dari repositori SUSE SLES11 SP2.

# rpm -ivh snapper-0.1.6-2.1.x86_64.rpm

Berikut ini adalah ketergantungan untuk paket kakap. Saat Anda menggunakan yum, atau alat manajemen paket lainnya, semua ketergantungan akan diinstal secara otomatis.

  • libsnapper-devel-0.1.6-2.1.x86_64.rpm
  • pam_snapper-0.1.6-2.1.x86_64.rpm
  • snapper-debuginfo-0.1.6-2.1.x86_64.rpm
  • snapper-debugsource-0.1.6-2.1.x86_64.rpm

Buat Sistem File btrfs

Karena btrfs didukung sistem file dari SLES11 SP2, Anda dapat menggunakan btrfs untuk membuat volume logis Anda atau menggunakan perintah btrfs-convert untuk mengonversi sistem file ext3 yang ada ke btrfs.

Jalankan perintah berikut untuk membuat sistem file btrfs baru, Jika Anda belum menginstal program btrfs, gunakan zypper install btrfsprogs untuk menginstalnya.

# lvcreate -L 8G -n snapvol vglocal
Logical volume "snapvol" created

# mkfs.btrfs /dev/vglocal/snapvol

# mount /dev/vglocal/snapvol /snapmount

Buat LVM dengan Provisioning Tipis

Jika Anda ingin membuat LVM dengan ketentuan tipis, gunakan perintah lvcreate untuk melakukan hal berikut.

# lvcreate --thin vglocal/vgthinpool --size 20G
  Rounding up size to full physical extent 32.00 MiB
  Logical volume "vgthinpool" create

# lvcreate --thin vglocal/vgthinpool --virtualsize 8G --name lvthin_snap
  Logical volume "lvthin_snap" created

# lvs
  LV          VG        Attr      LSize   Pool       Origin Data%  Move Log Copy%  Convert
  opt         vglocal -wi-ao---   2.73g
  tmp         vglocal -wi-ao---   2.73g
  usr_local   vglocal -wi-ao---   2.73g
  var         vglocal -wi-ao---   2.73g
  lvthin_snap vglocal  Vwi-a-tz-   8.00g vgthinpool          0.00
  vgthinpool  vglocal  twi-a-tz-  20.00g                     0.00

# mkfs.ext3 /dev/vglocal/lvthin_snap

# mkdir /snapmount

# mount /dev/vglocal/lvthin_snap /snapmount

Buat File Konfigurasi Kakap

Untuk membuat file konfigurasi menggunakan perintah snapper, gunakan perintah “snapper -c” seperti gambar di bawah ini.

Sintaks pada btrfs:

snapper –c  create-config

Pada btrfs, Anda cukup menentukan nama file konfigurasi, dan mountpoint seperti yang ditunjukkan di bawah ini.

snapper -c snapconfig create-config /snapmount

Sintaks pada LVM dengan ketentuan tipis:

snapper –c  create-config --fstype="lvm(xfs)"

Pada LVM yang disediakan tipis, selain menentukan nama file konfigurasi, dan mountpoint, Anda juga harus menentukan jenis sistem file menggunakan –fstype seperti yang ditunjukkan di bawah ini:

snapper -c snapconfig1 create-config --fstype="lvm(xfs)" /snapmount1

Melihat dan Menghapus File Konfigurasi Kakap

Setelah membuat file konfigurasi, Anda akan melihat direktori .snapshots dibuat di bawah direktori /snapmount.

Anda juga akan melihat file konfigurasi dibuat di bawah /etc/snapper/configs/snapconfig. Informasi tentang semua subvolume yang dikonfigurasi untuk snapshot akan disimpan dalam file ini.

File log yang digunakan untuk tujuan pemecahan masalah terletak di bawah /var/log/snapper.log

Untuk melihat semua file konfigurasi, jalankan perintah snapper berikut:

# snapper list-configs
Config      	| 	Subvolume
------------+------------
snapconfig  	| 	/snapmount         ? btrfs filesystem
snapconfig1 	| 	/snapmount1       ? Thin provisioned filesystem

Untuk menghapus file konfigurasi, gunakan sintaks berikut:

snapper –c  delete-config

Misalnya, perintah berikut menghapus file konfigurasi snapconfig di bawah direktori /etc/snapper/configs.

# snapper -c snapconfig delete-config

Buat snapshot menggunakan Snapper

Untuk membuat snapshot dari sistem file, gunakan sintaks perintah snapper berikut:

snapper –config  create –description "description of the snapshot"

Misalnya, berikut ini akan mengambil snapshot baru.

# snapper --config snapconfig create --description "Snapshot taken on 02-24-0354"

Setelah Anda mengambil snapshot, lihat informasi snapshot seperti yang ditunjukkan di bawah ini:

# snapper --config snapconfig list
Type   | # | Pre # | Date                     | User | Cleanup | Description                  | Userdata
-------+---+-------+--------------------------+------+---------+------------------------------+---------
single | 0 |       |                          | root |         | current                      |
single | 1 |       | Mon Feb 24 15:57:00 2014 | root |         | Snapshot taken on 02-24-0354 |

Ambil Cuplikan Kedua untuk Perbandingan

Untuk tujuan pengujian, saya membatalkan testfile1 di bawah direktori /snapmount.

# cat /dev/null > testfile1

# ls -ltr
-rw-r--r-- 1 root root 11 Feb 24 11:28 testfile2
-rw-r--r-- 1 root root 43 Feb 24 11:28 testfile3
drwxr-x--- 1 root root  2 Feb 24 15:57 .snapshots
-rw-r--r-- 1 root root  0 Feb 24 16:25 testfile1

Setelah perubahan di atas, mari kita ambil snapshot lagi.

# snapper --config snapconfig create --description "Snapshot taken on 02-24-0427"

Seperti yang Anda lihat di bawah, sekarang kami memiliki dua snapshot.

# snapper --config snapconfig list
Type   | # | Pre # | Date                     | User | Cleanup | Description                  | Userdata
-------+---+-------+--------------------------+------+---------+------------------------------+---------
single | 0 |       |                          | root |         | current                      |
single | 1 |       | Mon Feb 24 15:57:00 2014 | root |         | Snapshot taken on 02-24-0354 |
single | 2 |       | Mon Feb 24 16:27:48 2014 | root |         | Snapshot taken on 02-24-0427 |

Bandingkan Snapshot ke-1 dan ke-2

Sekarang, mari kita bandingkan kedua snapshot tersebut.

Perintah di bawah ini membandingkan snapshot#1 dengan snapshot#2.

# snapper -c snapconfig status 1..2
c.... /snapmount/testfile1

Pada keluaran:

  • “c” pada output menunjukkan bahwa konten telah dimodifikasi.
  • “+” menunjukkan bahwa file baru ditambahkan ke direktori.
  • “-” menunjukkan ada file yang telah dihapus.

Ambil Beberapa Foto dan Bandingkan Outputnya

Saya membuat beberapa cuplikan pengujian dengan sedikit file yang ditambahkan, beberapa file yang dihapus, dan sedikit perubahan konten.

# snapper --config snapconfig list
Type   | # | Pre # | Date                     | User | Cleanup | Description                  | Userdata
-------+---+-------+--------------------------+------+---------+------------------------------+---------
single | 0 |       |                          | root |         | current                      |
single | 1 |       | Mon Feb 24 15:57:00 2014 | root |         | Snapshot taken on 02-24-0354 |
single | 2 |       | Mon Feb 24 16:27:48 2014 | root |         | Snapshot taken on 02-24-0427 |
single | 3 |       | Mon Feb 24 16:37:53 2014 | root |         | Snapshot taken on 02-24-0437 |
single | 4 |       | Mon Feb 24 16:38:17 2014 | root |         | Snapshot taken on 02-24-0440 |

Output berikut mencantumkan file yang ditambahkan, diubah, dan dihapus.

# snapper -c snapconfig status 4..1
-.... /snapmount/a
-.... /snapmount/b
-.... /snapmount/c
c.... /snapmount/testfile1
+.... /snapmount/testfile2

Lihat Perbedaan Antara Snapshot

Sekarang untuk melihat perbedaan konten tertentu dalam file antara snapshot#1 dan snapshot#4, Anda dapat menggunakan perintah berikut.

# snapper -c snapconfig diff 4..1 /snapmount/testfile1
--- /snapmount/.snapshots/4/snapshot/testfile1  2014-02-24 16:25:44.416490642 -0500
+++ /snapmount/.snapshots/1/snapshot/testfile1  2014-02-24 11:27:35.000000000 -0500
@@ -0,0 +1 @@
+This is a test file

Outputnya dalam format khas dari output perintah diff.

Pulihkan File Tertentu dari Snapshot

Setelah Anda melihat perbedaan antara snapshot, dan Anda tahu file spesifik apa yang ingin Anda pulihkan, Anda dapat memulihkannya seperti yang dijelaskan di sini.

Sebelum pemulihan, kami tidak memiliki testfile2 dalam daftar ini.

# ls -ltr
-rw-r--r-- 1 root root 43 Feb 24 11:28 testfile3
-rw-r--r-- 1 root root  0 Feb 24 16:25 testfile1
drwxr-x--- 1 root root 10 Feb 24 16:45 .snapshots

Misalnya, untuk mengembalikan satu file dari snapshot, yaitu /snapmount/testfile2 (file yang telah dihapus) dari snapshot#1 gunakan perintah di bawah ini:

# snapper -c snapconfig -v undochange 1..4 /snapmount/testfile2
create:1 modify:0 delete:0
creating /snapmount/testfile2

Setelah pemulihan, kita melihat testfile2 dalam daftar.

# ls -ltr
-rw-r--r-- 1 root root 43 Feb 24 11:28 testfile3
-rw-r--r-- 1 root root  0 Feb 24 16:25 testfile1
drwxr-x--- 1 root root 10 Feb 24 16:45 .snapshots
-rw-r--r-- 1 root root 11 Feb 24 16:55 testfile2

Pulihkan Semua File dari Snapshot

Untuk memulihkan semua file dari snapshot, lakukan hal berikut:

Sekarang, mari kita kembalikan semua file dari snapshot tertentu. Perhatikan bagaimana ini menghapus beberapa file, membuat file, dan memodifikasi file.

# snapper -c snapconfig -v undochange 1..4
create:1 modify:1 delete:3
deleting /snapmount/c
deleting /snapmount/b
deleting /snapmount/a
modifying /snapmount/testfile1
creating /snapmount/testfile2

Linux
  1. Cara membuat sistem file pada partisi Linux atau volume logis

  2. Cara membuat Pengguna Linux Menggunakan Ansible

  3. Cara Reboot Linux Menggunakan Command Line

  1. Cara Membuat Script Perintah Linux

  2. Linux ln perintah

  3. Cara membuat snapshot volume tipis LVM menggunakan perintah snapper

  1. Cara Membuat File di Linux Menggunakan Terminal/Command Line

  2. Bagaimana cara mematikan proses di Linux menggunakan perintah?

  3. Cara membuat file sparse di Linux menggunakan perintah 'dd'