Боюсь, что-то вы не так делаете. В этом месте у php нет проблем с русским языком. Другое дело, если передать subject как строку cp1251 без обработки он будет криво показываться на другой стороне (в нормальных mail-клиентах), но это более другая проблема.
Рекомендую добавить в код «error_reporting(E_ALL);ini_set('display_errors', 1);» что бы посмотреть что происходит.
Тут все очень просто — если за десятки лет существования *nix систем ничего такого не возникло, то, вероятно, такой уж насущной необходимости в этом нет. Общая практика такова: /etc/, /var/, /home/ бэкапится, остальное и так не сложно восстановить, зная список установленных пакетов. Когда что-то ломается, принято обычно разбираться что именно поломалось и вносить точечные изменения в систему, а не откатывать ее к некоему прошлому состоянию. Хотя бы потому что поломки, как правило, связаны с внешними обстоятельствами.
Вы о /usr/bin/perl или о /etc/smb/smb.conf? Это очень разные звери и к ним затруднительно применить некий универсальный подход.
Если все это вас интересует в плане секурности, о рекомендую посмотреть на что-нибудь вроде rkhunter. Он умеет запоминать состояние некоторых важных файлов и проверять относительно сохраненного состояния.
А для решений с «целостным подходом» действительно нет. Конфиги и все остальное — это сильно разные звери. Или надо смотреть на виртуализацию, с образами систем и снапшотами. Но это совсем из другой оперы.
Честное слово — за нцать лет общения с линуксом, не припомню что бы возникала такая необходимость. Как правило, залазя в тот же smb.conf, знаешь что хочешь получить в итоге и последовательно идешь к своей цели, держа в голове изменений, которые уже сделал.