Как сохранять точный "слепок" системы и не тратить много места на жестком диске?

Я люблю экспериментировать со своим Линуксом. Но только есть проблема. Нередко бывает, что эксперимент оканчивается неудачей или вдруг возник непонятный глюк. И потом может быть довольно проблематично “вернуть все на круги своя”. Поэтому, хотелось бы иметь точные копии системы. Но есть другая проблема. У меня маленький жесткий диск (40 гигабайт). Поэтому вариант “тупо все скопировать” не подойдет. Одна копия может быть еще и поместится, но ведь мне нужно больше.

Я в свое время читал, что для маков есть программа “Time machine”. Принцип прост и эффективен. Она создает один слепок, который полностью копирует систему. Этот первый слепок будет занимать больше всего места. Потом, следующий слепок занимает гораздо меньше места потому, что программа просто сохраняет информацию об разнице между первым слепком и вторым. И т.д. Эта программа не копирует изменившиеся файлы. Она как бы создает “патч” с помощью которого можно из старого файла сделать новый.

Какие есть подобные программы для Линукс?
Я слышал, что якобы подобное можно сделать без установки специальных программ, используя rsync
Хотя на всякий случай прошу посоветовать программы попроще, не факт что я смогу разобраться с rsync

Я тоже люблю экспериментировать с системой. Для этого у меня есть второй раздел с копией системы.

btrfs + snapshots

snapshot сохраняет только изменения -> экономия места…

Гуглим на тему “tar инкрементный бэкап”, например

Читал, что для таких случаев удобно использовать GIT. У самого руки не дошли попробовать, но видел статью в LXF за август '09 (№8 (121)). Погуглите, номер должен быть в сети (у меня на бумаге).

Я порой тоже не прочь опыты над системой провести. И калька в этом плане очень подходит.

Для таких случаев удобно использовать scratch-установку.

  • во первых - система занимает значительно меньше
  • во вторых - создание “точек восстановления”
    делается тривиальным копированием и/или архивированием /mnt/scratch/delta и /mnt/scratch/workspace, что занимает гораздо меньше места.

…Она создает один слепок, который полностью копирует систему. Этот первый слепок будет занимать больше всего места…
…Читал, что для таких случаев удобно использовать GIT.

Тоже вариант, я так сильно с этим не заморачивался, но это реальный вариант.
И книжка Pro Git на русском как-раз есть

btrfs + snapshots
snapshot сохраняет только изменения -> экономия места…

Даже более интересный вариант, т.к. создание снэпшотов производится практически мгновенно. Но не знаю, насколько btrfs стабилен, вроде ничего плохого на его счет я не слышал.


Могу дать пару простых советов по копированию delta и workspace (без разницы как это будет реализовано, btrfs или git или простой cp -aAH):
Вопервых - /home /var/log /var/tmp /tmp придется держать на отдельом(отдельных) разделе.
Что касается /tmp - так его вообще неплохо бы вынести на tmpfs прописав в /etc/fstab что-то вроде
none /tmp tmpfs rw,nr_inodes=1M,size=1G,mode=01777,noexec,nodev,nosuid 0 0
для остальных - создать отдельную партицию, и bind-ить их туда.
По началу я пробовал для таких целей использовать /var/calculate, но что-то монтирование не задалось, и теперь я использую точку монтирования /mnt/calculate, и в fstab прописываю нечто вроде

/mnt/calculate/home /home none bind 0 0
/mnt/calculate/log /var/log none bind 0 0
/mnt/calculate/tmp /var/calculate/tmp none bind 0 0
/mnt/calculate/tmp /var/tmp none bind 0 0
/mnt/calculate/linux /var/calculate/linux none bind 0 0
/mnt/calculate/remote /var/calculate/remote none bind 0 0 # если машина не в домене
/mnt/calculate/server-data/ /var/calculate/server-data/ none bind 0 0 # если опыты над cds
/mnt/calculate/server-backup/ /var/calculate/server-backup/ none bind 0 0 # если опыты над cds

Ну также, само собой, из aufs надо вынести (если используются) директории
/var/lib/openldap-data
/var/lib/clamav
/var/lib/postgresql
и т.д.