К слову о версионировании каталога /etc есть неплохая
статья по версионным файловым системам. Можно использовать что-либо из этого.
А по своему опыту насчет Bacula — надежное средство, если уж ставится настолько сложная и объемная задача. По cron или средствами пре- и пост-задач в bacula можно задавать сбор данных о пакетах (тот же get-selections) на момент копирования. Это позволит в любой момент времени вернуть любое сохраненное состояние системы (с относительно высокой вероятностью ее работоспособности).
К слову о виртуализации — отличное решение, позволяющее экономить в конечном счете массу времени. Восстановление сохраненного состояния вирутализированной машины занимает несколько минут. Состояния (в зависимости от глубины хранения версий) можно хранить как на диске, так и на внешнем хранилище (типа лент или сетевых хранилищ). Здесь возврат к любому состоянию 100%. В данном случае рекомендуется создавать отдельный виртуальный диск/раздел для самой системы и один для пользовательских документов. В таком случае можно вернуть систему на любое состояние. сохранив пользовательские данные. В вашем случае все-таки рекомендую обратить внимание именно на виртуализацию с поддержкой snapshot.