Cara membuat dan mengembalikan snapshot tambahan hard disk

13

Saya banyak menggunakan Virtual Box untuk keperluan pengujian distro / aplikasi.

Salah satu fitur yang saya sukai dari itu adalah snapshot mesin virtual, ini menyimpan keadaan mesin virtual dan dapat mengembalikannya ke kejayaan sebelumnya jika sesuatu yang Anda lakukan salah tanpa masalah dan tanpa menghabiskan semua ruang hard disk Anda.

Pada sistem live saya, saya tahu cara membuat gambar 1: 1 dari sistem file tetapi semua solusi yang saya tahu akan membuat gambar baru dari sistem file lengkap.

Apakah ada program / sistem file yang mampu mengambil snapshot dari sistem file saat ini, menyimpannya di lokasi lain tetapi alih-alih membuat gambar baru yang lengkap, itu membuat cadangan tambahan?

Untuk mudah menggambarkan apa yang saya inginkan, itu harus sebagai ddgambar dari sistem file, tetapi bukan hanya cadangan lengkap itu juga akan membuat tambahan.


Saya tidak mencari clonezilla, dll. Ini harus berjalan dalam sistem itu sendiri tanpa (atau hampir tidak ada) intervensi dari pengguna, tetapi berisi semua data dari sistem file. Saya juga tidak mencari duplicitycadangan semua sistem Anda kecuali beberapa folder + script dduntuk menyimpan mbr Anda. Saya bisa melakukannya sendiri, mencari kemahiran ekstra.

Saya mencari sesuatu yang bisa saya lakukan sebelum melakukan perubahan besar pada suatu sistem dan kemudian jika sesuatu ketika salah atau saya membakar hard disk saya setelah menumpahkan kopi di atasnya saya hanya bisa boot dari liveCD dan mengembalikan snapshot yang berfungsi ke hard disk.

Tidak perlu setiap hari, bahkan tidak perlu jadwal. Jalankan saja sesekali dan biarkan bekerja dan lebih baik berbasis RAW bukan berbasis salinan file.


Bruno Pereira
sumber
Jadi, Anda mencari aplikasi yang dapat membuat gambar yang dapat diinstal? Jika tidak, mengapa Anda tidak memilih Deja Dup? Jika Anda meminta aplikasi dapat membuat gambar yang dapat diinstal saya ingin tahu jawaban itu juga. Menambahkan favorit.
heartsmagic
baru saja memposting jawaban untuk pertanyaan yang berjudul ... tapi saya melihat Anda mencari lebih banyak cara potensial untuk memulihkan sistem bare metal Anda alih-alih pada tingkat file.
cprofitt
1
Sepertinya Anda ingin tingkat blok, bukan sistem file, cadangan tambahan berdasarkan. Selain menggunakan sistem file yang mendukung snapshot, saya tidak yakin apakah yang Anda tanyakan itu mungkin. LVM, BTRFS bisa jadi kemungkinan.
cprofitt
@profit thx untuk memperbaiki judul, itu lebih benar.
Bruno Pereira
@Bruno - membuat judul yang bagus membantu menjadikan ini berguna bagi orang-orang yang datang kemudian untuk menemukan jawabannya.
cprofitt

Jawaban:

14

Untuk menjelaskan jawaban cprofitt ini (sebagai jawabannya adalah tambahan, karena saya akan menjelaskan) ...

Pertama, Anda perlu tahu tentang tautan keras.

Hard link menunjuk ke data yang sebenarnya ada di disk (lokasi fisik) dan Anda dapat mengakses data menggunakan hard link. Setiap file dan direktori adalah tautan keras ke lokasi data pada disk fisik. Karena itu jika ada dua file (hard link) yang menunjuk ke lokasi yang sama maka data hanya disimpan satu kali .


Proses yang diberikan oleh cprofitt melibatkan:

  1. Putar cadangan untuk membuat tempat untuk yang baru. ("Cadangan hari ini" dari kemarin menjadi "Cadangan kemarin", "Cadangan kemarin" dari dua hari yang lalu menjadi "Cadangan dua hari yang lalu" dan seterusnya)

    • Daftar ini terus bertambah selama Anda menginginkannya, namun dalam skrip itu hanya memiliki 4 foto. (Ini melakukan seluruh proses lagi untuk tingkat berikutnya (misalnya seminggu - "cadangan minggu ini") dan memutarnya, jadi itu sebabnya hanya memiliki 4).
    • Pemindahan dilakukan secara terbalik untuk mencegah penulisan ulang
  2. Salin snapshot terbaru yang telah Anda lakukan (mis. "Cadangan kemarin") ke tempat untuk yang baru (mis. "Cadangan hari ini"), membuat tautan keras baru ke file yang ada tanpa menyalin file. Jadi semua file dalam snapshot baru menunjuk ke lokasi yang sama dengan yang sebelumnya .


Contoh ilustrasi

Pada gambar di bawah ini, file dengan warna yang sama yang memiliki nama file yang sama adalah tautan keras ke file yang sama pada disk. Di sini kita hanya berurusan dengan dua snapshot dan beberapa file, tetapi contohnya berskala. (Kecuali fakta saya memindahkan snapshots ke arah yang berlawanan dengan skrip dalam jawaban cproffit)

masukkan deskripsi gambar di sini

Prosesnya adalah ini:

  1. Ada snapshot dari sistem.

  2. Snapshot adalah salinan (membuat tautan keras ke file yang ada)

  3. Rsync dijalankan untuk memperbarui snapshot. Ketika file diubah, ia menyimpan file baru sebagai salinan baru pada hard disk (jadi snapshot lama tidak berubah). Dalam contoh ini, File B telah diubah. Catatan: kita sekarang hanya memiliki 1 salinan File A dan File C dan dua salinan File B disimpan di hard disk

  4. Putar foto (dalam hal ini foto 0 'jatuh' dan dihapus dan saya ganti nama foto 1 menjadi foto 0)

  5. Salin foto snapshot (ulangi langkah 2)

  6. Rsync lagi. (Ulangi langkah 3). Sekarang kita memiliki 1 salinan File A dan 2 salinan File B dan File C


Versi sederhana dari skrip [pertama] (tidak boleh dijalankan, seperti batu loncatan) adalah ini:

#!/bin/bash

# Delete the snapshot we don't want (has 'fallen off')
rm -rf /root/snapshot/home/hourly.3 ;

# Rotate the snapshots by shuffling them back
mv /root/snapshot/home/hourly.2 /root/snapshot/home/hourly.3 ;
mv /root/snapshot/home/hourly.1 /root/snapshot/home/hourly.2 ;

# Copy the snapshot (creating hard links to the existing files)
cp -al /root/snapshot/home/hourly.0 /root/snapshot/home/hourly.1 ;

# Do the rsync ...
# step 4: rsync from the system into the latest snapshot (notice that
# rsync behaves like cp --remove-destination by default, so the destination
# is unlinked first.  If it were not so, this would copy over the other
# snapshot(s) too!
rsync -va --delete /home/ /root/snapshot/home/hourly.0 ;

Sekarang skrip lengkap memiliki penjelasan lengkap di sini (seperti ditautkan dengan cprofitt) dan lebih menyeluruh tetapi pada dasarnya seperti di atas. Script lainnya adalah untuk mengelompokkan snapshot dan bagian lain dari jawaban cprofitt berbicara tentang membuat proses otomatis (menggunakan cron) dan memverifikasi bahwa cadangan berhasil.

Anda dapat mengubah nama, jadi alih-alih direktori yang disebut "setiap jam ..." mereka disebut sesuatu yang lain dan skrip dijalankan secara manual.


Untuk mengembalikan seluruh lot, salin snapshot terbaru (atau yang sebelumnya) kembali ke direktori tempat Anda mengambil backup.

Untuk mengembalikan satu file yang masih dalam snapshot, buka snapshot dan salin kembali ke tempatnya.

Media cadangan dapat berupa hard drive eksternal (harus ext2 / ext3 / ext4). Jika Anda back up /(terutama /boot, /home, /etc /rootdan /usr) kemudian, mengatakan ...

  1. Anda memasang drive eksternal, melakukan pencadangan dan membuat snapshot terbaru.

  2. Lepas drive.

  3. Ingat Anda menghapus file (bahkan dari tempat sampah) yang Anda inginkan.

  4. Sambungkan drive eksternal dan ambil file.

  5. Lakukan backup (hanya untuk memastikan)

  6. Putuskan sambungan drive dan bepergian ...

  7. Sadarilah bahwa laptop dan lava tidak bercampur.

  8. Dengan laptop baru Anda menjalankan live cd, format drive internal, pasang drive eksternal Anda dan kemudian cp -a /media/external/snapshot-0/* /media/internal-drive(dengan asumsi snapshot-0 adalah snapshot terbaru)

  9. Instal grub ke MBR (ya itu harus terpisah) - atau gunakan dduntuk membuat cadangan mbr, seperti yang dikatakan cprofitt di bagian bawah jawabannya.

  10. Mulai ulang.

Script perlu disempurnakan (hanya untuk mendapatkan barang yang Anda inginkan) dan prosedur aove mengasumsikan bahwa Anda tidak memiliki /homepartisi. Jika Anda (atau pernah) membuat yang baru pada disk dan memasangnya di tempat mount /dev/sdxy /media/external/homesebelum menyalin.

Portablejim
sumber
Snapshots 100 dd akan memakan biaya 100 x <average size of snapshot> ruang disk. 100 dari ini akan dikenakan biaya <size of snapshot> + <size of changed files>. Saya telah menggunakan ini untuk meletakkan beberapa snapshot / home (~ 400GB) ke dalam disk 500GB.
Portablejim
Anda dapat memasang image disk virtual di sistem file Anda, lalu mengambil cadangannya. Lihat superuser.com/questions/158908/… dan tautan
Portablejim
Seperti dikatakan, ini untuk komputer saya yang sedang berjalan, bukan kotak virtual, vbox hanyalah sebuah contoh.
Bruno Pereira
Pertanyaan yang diperbarui (di bagian akhir alih-alih menambahkan komentar).
Portablejim
@Portablejim: Anda menulis bahwa cp "menjaga tautan yang keras". Saya pikir kalimat ini membingungkan. cp -almembuat hardlink ke file sumber alih-alih menyalin file sumber. Angka Anda juga harus mencerminkan hal itu, misalnya dengan menunjukkan bahwa file A pada gambar 2 adalah file yang sama.
daniel kullmann
7

Anda bisa menggunakan rsync.

Listing one: make_snapshot.sh

#!/bin/bash
# ----------------------------------------------------------------------
# mikes handy rotating-filesystem-snapshot utility
# ----------------------------------------------------------------------
# this needs to be a lot more general, but the basic idea is it makes
# rotating backup-snapshots of /home whenever called
# ----------------------------------------------------------------------

unset PATH  # suggestion from H. Milz: avoid accidental use of $PATH

# ------------- system commands used by this script --------------------
ID=/usr/bin/id;
ECHO=/bin/echo;

MOUNT=/bin/mount;
RM=/bin/rm;
MV=/bin/mv;
CP=/bin/cp;
TOUCH=/bin/touch;

RSYNC=/usr/bin/rsync;


# ------------- file locations -----------------------------------------

MOUNT_DEVICE=/dev/hdb1;
SNAPSHOT_RW=/root/snapshot;
EXCLUDES=/usr/local/etc/backup_exclude;


# ------------- the script itself --------------------------------------

# make sure we're running as root
if (( `$ID -u` != 0 )); then { $ECHO "Sorry, must be root.  Exiting..."; exit; } fi

# attempt to remount the RW mount point as RW; else abort
$MOUNT -o remount,rw $MOUNT_DEVICE $SNAPSHOT_RW ;
if (( $? )); then
{
    $ECHO "snapshot: could not remount $SNAPSHOT_RW readwrite";
    exit;
}
fi;


# rotating snapshots of /home (fixme: this should be more general)

# step 1: delete the oldest snapshot, if it exists:
if [ -d $SNAPSHOT_RW/home/hourly.3 ] ; then         \
$RM -rf $SNAPSHOT_RW/home/hourly.3 ;                \
fi ;

# step 2: shift the middle snapshots(s) back by one, if they exist
if [ -d $SNAPSHOT_RW/home/hourly.2 ] ; then         \
$MV $SNAPSHOT_RW/home/hourly.2 $SNAPSHOT_RW/home/hourly.3 ; \
fi;
if [ -d $SNAPSHOT_RW/home/hourly.1 ] ; then         \
$MV $SNAPSHOT_RW/home/hourly.1 $SNAPSHOT_RW/home/hourly.2 ; \
fi;

# step 3: make a hard-link-only (except for dirs) copy of the latest snapshot,
# if that exists
if [ -d $SNAPSHOT_RW/home/hourly.0 ] ; then         \
$CP -al $SNAPSHOT_RW/home/hourly.0 $SNAPSHOT_RW/home/hourly.1 ; \
fi;

# step 4: rsync from the system into the latest snapshot (notice that
# rsync behaves like cp --remove-destination by default, so the destination
# is unlinked first.  If it were not so, this would copy over the other
# snapshot(s) too!
$RSYNC                              \
    -va --delete --delete-excluded              \
    --exclude-from="$EXCLUDES"              \
    /home/ $SNAPSHOT_RW/home/hourly.0 ;

# step 5: update the mtime of hourly.0 to reflect the snapshot time
$TOUCH $SNAPSHOT_RW/home/hourly.0 ;

# and thats it for home.

# now remount the RW snapshot mountpoint as readonly

$MOUNT -o remount,ro $MOUNT_DEVICE $SNAPSHOT_RW ;
if (( $? )); then
{
    $ECHO "snapshot: could not remount $SNAPSHOT_RW readonly";
    exit;
} fi;

dan yang kedua:

Listing two: daily_snapshot_rotate.sh

#!/bin/bash
# ----------------------------------------------------------------------
# mikes handy rotating-filesystem-snapshot utility: daily snapshots
# ----------------------------------------------------------------------
# intended to be run daily as a cron job when hourly.3 contains the
# midnight (or whenever you want) snapshot; say, 13:00 for 4-hour snapshots.
# ----------------------------------------------------------------------

unset PATH

# ------------- system commands used by this script --------------------
ID=/usr/bin/id;
ECHO=/bin/echo;

MOUNT=/bin/mount;
RM=/bin/rm;
MV=/bin/mv;
CP=/bin/cp;

# ------------- file locations -----------------------------------------

MOUNT_DEVICE=/dev/hdb1;
SNAPSHOT_RW=/root/snapshot;

# ------------- the script itself --------------------------------------

# make sure we're running as root
if (( `$ID -u` != 0 )); then { $ECHO "Sorry, must be root.  Exiting..."; exit; } fi

# attempt to remount the RW mount point as RW; else abort
$MOUNT -o remount,rw $MOUNT_DEVICE $SNAPSHOT_RW ;
if (( $? )); then
{
    $ECHO "snapshot: could not remount $SNAPSHOT_RW readwrite";
    exit;
}
fi;


# step 1: delete the oldest snapshot, if it exists:
if [ -d $SNAPSHOT_RW/home/daily.2 ] ; then          \
$RM -rf $SNAPSHOT_RW/home/daily.2 ;             \
fi ;

# step 2: shift the middle snapshots(s) back by one, if they exist
if [ -d $SNAPSHOT_RW/home/daily.1 ] ; then          \
$MV $SNAPSHOT_RW/home/daily.1 $SNAPSHOT_RW/home/daily.2 ;   \
fi;
if [ -d $SNAPSHOT_RW/home/daily.0 ] ; then          \
$MV $SNAPSHOT_RW/home/daily.0 $SNAPSHOT_RW/home/daily.1;    \
fi;

# step 3: make a hard-link-only (except for dirs) copy of
# hourly.3, assuming that exists, into daily.0
if [ -d $SNAPSHOT_RW/home/hourly.3 ] ; then         \
$CP -al $SNAPSHOT_RW/home/hourly.3 $SNAPSHOT_RW/home/daily.0 ;  \
fi;

# note: do *not* update the mtime of daily.0; it will reflect
# when hourly.3 was made, which should be correct.

# now remount the RW snapshot mountpoint as readonly

$MOUNT -o remount,ro $MOUNT_DEVICE $SNAPSHOT_RW ;
if (( $? )); then
{
    $ECHO "snapshot: could not remount $SNAPSHOT_RW readonly";
    exit;
} fi;

Setelah membuat skrip untuk kebutuhan Anda, tambahkan ke cron jobs.

crontab -e

tambahkan yang berikut:

0 * / 4 * * * /usr/local/bin/make_snapshot.sh

0 13 * * * /usr/local/bin/daily_snapshot_rotate.sh

Mereka menyebabkan make_snapshot.sh dijalankan setiap empat jam pada jam tersebut dan daily_snapshot_rotate.sh dijalankan setiap hari pada pukul 13:00 (yaitu, 13:00).

sumber: http://www.mikerubel.org/computers/rsync_snapshots/

* * * * * command to be executed
- - - - -
| | | | |
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)

Jika Anda ingin menjalankannya setiap jam, Anda akan menambahkan tugas cron untuk setiap jam.

Opsi lain yang mungkin adalah menggunakan rsnapshot

  1. Instal rsnapshot (tersedia di pusat perangkat lunak)

  2. Konfigurasikan rsnapshot dan Tentukan Direktori Sumber Cadangan

Buka /etc/rsnapshot.conf dan batalkan komentar pada baris berikut.

# nano /etc/rsnapshot.conf

cmd_cp          /bin/cp
cmd_ssh /usr/bin/ssh
cmd_du          /usr/bin/du
cmd_rsnapshot_diff      /usr/local/bin/rsnapshot-diff
logfile /var/log/rsnapshot
  1. Tentukan direktori cadangan tujuan Anda di /etc/rsnapshot.conf seperti yang ditunjukkan di bawah ini. Dalam contoh ini,

    / home - direktori sumber yang harus di-backup localhost / - direktori tujuan di mana cadangan akan disimpan. Harap dicatat bahwa direktori ini akan dibuat di bawah direktori /.snapshots/{internal.n}/ seperti yang ditunjukkan pada langkah terakhir.

    nano /etc/rsnapshot.conf

    backup / home / localhost /

  2. Tes Konfigurasi rsnapshot

Lakukan tes konfigurasi untuk memastikan rsnapshot sudah diatur dengan benar dan siap untuk melakukan backup rsync linux.

# rsnapshot configtest
Syntax OK
  1. Verifikasi Konfigurasi Pencadangan Setiap Jam rsnapshot

Anda dapat membuat cadangan direktori atau file linux di berbagai interval. Secara default, cadangan harian dan harian dikonfigurasikan.

Verifikasi konfigurasi cadangan setiap jam.

# rsnapshot -t hourly
echo 6490 > /var/run/rsnapshot.pid
mkdir -m 0700 -p /.snapshots/
mkdir -m 0755 -p /.snapshots/hourly.0/
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /home \
/.snapshots/hourly.0/localhost/
mkdir -m 0755 -p /.snapshots/hourly.0/
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /etc \
/.snapshots/hourly.0/localhost/
mkdir -m 0755 -p /.snapshots/hourly.0/
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \
/usr/local /.snapshots/hourly.0/localhost/
touch /.snapshots/hourly.0/
  1. Verifikasi Konfigurasi Pencadangan Harian rsnapshot

Pastikan proses pencadangan rsnapshot cwrsync harian telah dikonfigurasi dengan benar.

# rsnapshot -t daily
echo 6493 > /var/run/rsnapshot.pid
mkdir -m 0700 -p /.snapshots/
/.snapshots/hourly.5 not present (yet), nothing to copy
  1. Tambahkan Entri Crontab untuk rsnapshot

Setelah Anda memverifikasi bahwa konfigurasi cadangan harian dan rsync telah dipasang dengan benar di utilitas csrs snapshot rsnapshot, sekarang saatnya untuk mengatur anak anjing ini di crontab seperti yang ditunjukkan di bawah ini.

# crontab -e
0 */4 * * * /usr/local/bin/rsnapshot hourly
30 23 * * * /usr/local/bin/rsnapshot daily

sumber: http://www.thegeekstuff.com/2009/08/tutorial-backup-linux-using-rsnapshot-rsync-utility/

---- Pemulihan Logam Telanjang

Saya akan menggunakan dd dan tar untuk melakukan pemulihan baremetal.

Cadangkan metadata penting:

# dd if-/dev/hda of=/backups/mbr bs=512 count=1

Cadangkan sistem operasi:

# mkdir /backups
# mount nfsserver:/backups/<servername> /backups


# cd /
# tar cfz /backups/system.tar.gz --exclude /mnt --exclude /proc --exclude /backups

Saya pribadi akan cenderung mengambil sistem saya off-line jika saya ingin membuat file restore baremetal.

cprofitt
sumber
2
Semua jawaban Anda terlihat sangat bagus, tidak ada masalah dan semua tapi bukan itu yang saya minta, salah satu metode tidak akan mengembalikan MBR dan ddtidak tambahan. Tidak satu pun dari ini yang saya tanyakan. 10% terakhir mungkin menarik untuk dicari tetapi semua informasi lainnya benar-benar tidak.
Bruno Pereira
Rincian di atas berurusan dengan sistem file (sebagai sistem file) dan saya menambahkan proses dd untuk berurusan dengan MBR.
cprofitt
3

Ada 2 cara untuk melakukan pencadangan tambahan berdasarkan blok

  • Snapshots berbasis filesystem
  • Snapshots berbasis program

Snapshots berbasis filesystem

Baik ZFS dan BTRFS menyediakan snapshot inkremental berbasis blok ( BTRFS , ZFS (halaman 25) ). Anda bisa memiliki drive yang Anda rsync untuk itu baik ZFS atau BTRFS dan snapshot.

Ada juga snapshot LVM (disebutkan oleh cprofitt) yang menyediakan snapshot inkremental berdasarkan blok yang sama.

Snapshots berbasis program

Ada beberapa program cadangan , namun beberapa tetap dengan tujuan:

Saya tahu Anda secara khusus menyebutkan bahwa Anda tidak mencari sesuatu seperti bermuka dua, namun saya pikir saya mungkin menyebutkan beberapa fitur.

Namun program ini mengharuskan Anda untuk menginstalnya untuk memulihkan. Keindahan dari sesuatu seperti rsync adalah bahwa hampir setiap instalasi linux memiliki rsync (mis., Core kecil (distribusi 10MB) tidak ada) secara default.

Duplicity

Itu hanya menyimpan diff (level blok) dan kemudian kompres dan mengenkripsi mereka. Hal ini menyebabkan penyimpanan lebih sedikit daripada metode rsync, namun (setidaknya seperti yang saya lihat) sistem file perlu direkonstruksi, yang akan memakan waktu (jika Anda menggunakan cadangan tambahan dengan itu, dan itu tergantung pada waktu sejak cadangan penuh terakhir)

The halaman manual menjelaskan cara kerjanya.

Cadangan besar

Program klien-server yang membuat, seperti duplikat, perbedaan level blok, akan tetapi menyimpan perubahan dari titik pemulihan terakhir, sehingga snapshot terbaru adalah yang tercepat untuk dipulihkan. Kembali ke masa (bukan snapshot terbaru) membutuhkan lebih banyak perbedaan untuk dianalisis dan karena itu lebih lambat.

Beberapa orang membandingkan rdiff-backup dengan rsnapshot (sepertinya cara yang lebih otomatis dari rsync mentod). Hampir semua cara fokus menggunakan rdiff melalui jaringan, namun saya menemukan satu yang menyebutkan cara melakukannya di localhost .

Portablejim
sumber
ok saya suka ini, mau jelaskan bagaimana cara membuatnya bekerja dengan mengembalikan partisi? yaitu, jika saya memecahkan disk bagaimana saya mengembalikan sistem lengkap saya dari snapshot tanpa harus membuat partisi sendiri, dll. tidak terlalu rinci atau termasuk skrip, hanya beberapa nama perintah dan apa yang akan mereka lakukan.
Bruno Pereira
Saya belum memiliki pengalaman dengan sistem ini, saya hanya menemukan ini dari melakukan penelitian menggunakan Google (karenanya mengapa mereka hanya tautan). misalnya saya belajar apa yang duplicitysebenarnya.
Portablejim
3

Anda harus melihat di ddar ( beranda ).

Ini tambahan dalam arti tidak mentransfer bagian identik dari foto itu. Kata ini tidak bertambah dalam arti klasik kata tersebut, karena berhadapan dengan snapshot.

Catatan: Saya belum mencoba ini sendiri (tapi saya percaya penulis). Mungkin tidak melakukan apa yang ingin Anda capai, tetapi masih ada solusi yang lebih mirip pada halaman (mis. ZFS ), sehingga sebagai titik awal, itu mungkin terbukti bermanfaat.

lgarzo
sumber
1
Saya adalah penulis ddar (terima kasih atas penyebutannya!). Jika saya memahami pertanyaan dengan benar, menyerahkan serangkaian snapshot LVM akan melakukan persis seperti yang diminta. Seperti yang Anda katakan, ini berkaitan dengan snapshot dan bukan tambahan tetapi snapshots akan memiliki efek yang sama dengan keuntungan bahwa snapshots lama dapat dihapus sesuka hati tanpa mempengaruhi yang lebih baru.
Robie Basak
@robie saya akan sangat terbebani untuk melihat bagaimana itu akan bekerja, dapatkah Anda membuat panduan yang sangat kecil untuk saya atau pengguna yang mungkin mencari solusi semacam ini?
Bruno Pereira
1

Saya pikir Anda dapat melakukan ini dengan LVM satu-satunya teori, dan itu akan membuang sejumlah besar hard disk. Teori saya adalah bahwa Anda dapat membuat sistem root Anda hidup pada volume logis, maka jika Anda ingin melakukan tes Anda dapat membuat snapshot dan me-restart mesin menggunakan volume baru.

Snapshots LVM membutuhkan volume asli untuk bekerja. Ini karena volume baru menyimpan perbedaan antara snapshot dan sistem file nyata.

Jika Anda meninggalkan sistem dalam kondisi ini, Anda akan mulai membuang ruang disk saat sistem file baru berubah. Saya tidak tahu apakah ada cara untuk mengkonsolidasikan snapshot dan filesystem definitive. Tentunya Anda dapat dd ke volume logis lain, tetapi untuk ini Anda akan membutuhkan dua kali ruang filesystem Anda ditambah perbedaan antara "titik pemulihan" dan keadaan saat ini.

Dan semua ini membutuhkan reboot dan jauh dari otomatis.

Diperkirakan pula beberapa sistem file modern seperti ini, seperti zfs pada sistem solaris atau btrf eksperimental.

teis
sumber
1

Yang ini sedikit di atas kepala saya, tetapi sepertinya bagian dari apa yang ingin Anda lakukan adalah membuat cadangan sebagian dari file biner (seperti file gambar partisi). Ada paket yang dirancang untuk melakukan itu (saya baru saja membaca - tidak mencobanya.)

Lihatlah bup.

https://github.com/apenwarr/bup

Mungkin memberi Anda beberapa ide.

Joe
sumber