Über das, was sinnvoll ist oder nicht, lässt sich also streiten.
Ich mache bei Kundensystemen gerne ein GIT-Repository mit dem kompletten /etc-Ordner, was ich dann (bei Bedarf) an das entsprechende Redmine-Projekt mit anhänge. So kann ich belegen, dass jemand gepfuscht hat. Außerdem kann ich dann Änderungen schön mitverfolgen. Den Ordner bräuchte ich dann in der Regel nicht mehr mitsichern, was ich aber trotzdem mache.
Ich habe mir angewöhnt alle veränderlichen Daten unter /var abzuspeichern. Diese Daten unter /var sichere ich dann auch mit.
Logs verwalte ich auf Systemen, die mir wichtig sind, mit Logstash/Elasticsearch. Natürlich zum Teil anonymisiert. Ins Backup nehme ich die allerdings nicht auf. Das ist vom Datenschutz her manchmal echt schwierig. Obwohl die Vorratsdatenspeicherung...
Die Berechtigungen von Dateien und Programmen lasse ich vor dem Backup mit getfacl in eine Textdatei sichern. So kann ich sicherstellen, dass nicht "aus versehen" die Berechtigungen zerstört werden bzw. habe eine höhere Chance nach "dummen" Änderungen diese wieder richtig zu setzen.
Was ich momentan versuche umzusetzen ist alle Installationen mit Chef durchzuführen und somit zu "dokumentieren". Wenn ich also einen neuen Server aufsetze verwende ich immer wieder die selben Scripts und kann nachher noch nachvollziehen, was ich gemacht habe und in welcher Reihenfolge. Somit brauche ich den Programmteil auch nicht sichern, da ich aus den Chef-Scripten relativ schnell ein neu aufgesetztes System mit den selben Parametern erhalte. Das hilft auch ganz gut bei Beispielsweise Python-Paketen, die per "pip" installiert werden. Die geraten dann nicht mehr "in Vergessenheit"

Das klappt natürlich nur bei Servern, die ich konsequent damit aufsetze. Bei allen "alten" Sytemen speichere ich die Paketliste ab um diese im Zweifelsfall bei einer Neuinstallation schnell wieder Griffbereit zu haben.
Sollte ich Programme manuell installieren müssen, lege ich die Sourcen / Downloads erst mal unter /opt ab. Dieser Ordner wird auch gesichert.
Natürlich kommt es (wie bereits erwähnt) darauf an die eventuell laufenden Programme richtig zu sichern. Beispielsweise MySQL mit mysqldump oder LDAP mit slapcat.
Was allerdings dann noch viel wichtiger ist als ein Backup, das vermeintlich läuft, ist das regelmäßige Testen der Backups. Also mal einen mysqldump wieder einspielen, testen, ob eine .tgz-Datei wieder lesbar ist, ...