Membuat snapshot dari sistem linux

11

Saya ingin melakukan hal berikut - Simpan keadaan saat ini pada OS linux saya (centOS6.5). Lakukan beberapa perubahan (lebih khusus menyuntikkan kesalahan dan menguji beberapa layanan untuk memeriksa bagaimana perilakunya ketika jenis kesalahan tertentu terjadi.) Kemudian kembalikan sistem kembali ke keadaan tersimpan. Saya tidak dapat menemukan cara untuk melakukan ini pada sistem linux. Saya memiliki mesin dengan centOS 6.5 dengan filesystem ext4. Juga ini adalah server fisik dan bukan mesin virtual.

Ada ide atau saran?

bRuta
sumber
Server fisik, atau mesin virtual?
steve
1
Saya sarankan untuk menjalankan OS Anda pada perangkat lunak virtualisasi seperti VirtualBox. Ini mendukung snapshot dengan baik.
yaegashi
Ini adalah server fisik. Saya perlu melakukan ini pada beberapa mesin (server fisik) dan tidak dapat mengubah konfigurasi untuk menjalankan OS saya pada perangkat lunak virtualisasi.
bRuta
Biasanya diperlukan lapisan meta tambahan seperti virtualisasi untuk mendukung snapshot sistem. Akan sangat sulit untuk membuat server fisik berperilaku seolah-olah mereka berada di bawah kendali dari tingkat firmware dan bootloader.
yaegashi

Jawaban:

8

Saya akan membuatnya tetap sederhana dan mengkloningnya. Boot sistem live dari USB (saya rasa paling mudah adalah Ubuntu dari thumb drive USB), kemudian buang hard disk Anda ke partisi lain (atau hard drive eksternal dll.), Mis.

dd if=/dev/sda1 bs=64M of=/mnt/my_mounted_backup_drive/backup-sda1

di mana Anda perlu mengganti /dev/sda1dengan root ( /) partisi Anda. Lakukan hal yang sama dengan partisi lain (seperti satu untuk /boot, /boot/efi, /home) mana yang berlaku.

Jika Anda perlu menghemat ruang, Anda bisa melakukannya

dd if=/dev/sda1 bs=64M | gzip --fast | dd bs=32M of=/mnt/my_mounted_backup_drive/backup-sda1.gz

atau, lebih rumit, lebih lambat tetapi menghemat beberapa byte lagi,

mkdir -p /mnt/linux
mount -o ro /dev/sda1 /mnt/linux
cd /mnt/linux
tar cvJf /mnt/my_mounted_backup_drive/linux-backup.tar.xz .??* *

Anda kemudian dapat mengembalikan sebaliknya, misalnya

mkdir -p /mnt/linux
mount /dev/sda1 /mnt/linux
cd /mnt/linux
tar xvJf /mnt/my_mounted_backup_drive/linux-backup.tar.xz

atau

dd /mnt/my_mounted_backup_drive/backup-sda1.gz bs=32M | gzip --decompress | dd bs=64M of=/dev/sda1

(Hati-hati di mana Anda menulis data Anda, ini menghapus semuanya /dev/sda1, jadi lakukan dengan benar pertama kali :-)

Ned64
sumber
PS: Jika Anda mengharapkan sesuatu yang salah, backup tabel partisi, seperti dd if=/dev/sda bs=64M count=2 of=/mnt/my_mounted_backup_drive/backup-sda. Ketika mengembalikan Anda perlu berhati-hati untuk tidak menulis terlalu banyak blok kembali ke disk di sini - tidak bisa mengatakan berapa banyak tanpa melihat tata letak partisi Anda. Pulihkan hingga (tidak termasuk) blok tempat partisi pertama Anda dimulai sesuai dengan gdiskatau fdisk.
Ned64
5

Anda dapat menggunakan rsync untuk membuat cadangan seluruh sistem.

rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /* /path/to/backup/folder

Ada artikel yang luar biasa di Arch Linux Wiki tentang hal itu

Hugo Rodrigues
sumber
Itu cukup singkat untuk menjadi pilihan terbaik bagi saya. Tentu saja jika Anda tidak memiliki, rsyncAnda dapat menggunakan ddyang saya gunakan untuk membuat cadangan drive usb saya.
m3nda
1

Anda dapat menggunakan FSArchiver , yang akan menyimpan konten sistem file ke file terkompresi dan mengembalikan sistem file saat mengekstraksi data.

Berikut ini adalah contoh dari dokumentasi :

fsarchiver savefs /mnt/backup/gentoo-rootfs.fsa /dev/sda1

Anda juga dapat menggunakan kompresi multi-utas, dan memulihkan secara langsung:

fsarchiver restfs /mnt/backup/gentoo-rootfs.fsa id=0,dest=/dev/sda1
Paulo Almeida
sumber
-1

Untuk kembali ke keadaan sebelumnya, Anda bisa memasang sistem file saat ini ke direktori baru. Ini memasang sistem file ke direktori root baru yang ditentukan oleh perintah berikut:

mount DIR DIR

Untuk memulihkan keadaan ini, ubah root dari sistem file dari direktori yang ditentukan dalam perintah mount.

umount DIR

pengguna346623
sumber