Sicherung der Systemprotokolle mit Time Machine

Es scheint, dass Time Machine system.log in /private/var/log nicht sichert.

Mac OS X 10.9.5/Intel Xeon mit sechs Kernen

Kann ich erzwingen, dass diese Datei gesichert wird?

Antworten (2)

Standardmäßig /private/var/logist der Inhalt des Verzeichnisses von Time Machine-Sicherungen ausgeschlossen. Dies kann geändert werden, um den Inhalt einzuschließen, da es sich jedoch um eine Systemdatei handelt, ist es wahrscheinlich klüger, die ausgeschlossenen Dateien, die Sie sichern möchten, zu sichern, indem Sie die Dateien an einen Speicherort kopieren, der in Time Machine-Sicherungen enthalten ist. Allerdings stimme ich der Aussage von cppl nicht zu, "da das Ändern von Kerndateien immer eine schlechte Idee ist", denn wenn es richtig gemacht wird und mit dem Wissen und Verständnis dessen, was man tut, ist es einfach kein Problem!

Wenn Sie das Verzeichnis wirklich in Ihre Time Machine-Sicherungen aufnehmen möchten, /private/var/logkönnen Sie Folgendes tun. Um dies einfacher und sicherer zu machen, würde ich empfehlen, dieses getestete Skript zu verwenden. Es sichert zuerst das Bundle und die Plist und entfernt es nur, /private/var/logwenn es sich an seinem Standardspeicherort in der .plist-Datei befindet. Hinweis: Dieses Skript muss mit sudooder als ausgeführt werden root.

In einem Terminal:

touch modtm
open modtm

Im geöffneten modtm-Dokument:

Kopieren Sie den unten gezeigten Code und fügen Sie ihn in das Dokument ein, speichern Sie es und schließen Sie es dann.

Zurück im Terminal machen Sie das Skript ausführbar:

chmod u+x modtm

Jetzt mit dem zur Ausführung bereiten Skript im Terminal:

sudo ./modtm

Geben Sie Ihr Passwort ein, das während der Eingabe nicht angezeigt wird, und drücken Sie dann die Eingabetaste.

Wenn Standardwerte im Spiel waren, /private/var/logsollten sie sicher entfernt werden, indem zuerst eine Sicherung aus der Datei StdExclusions.plist durchgeführt wurde .

Code:

#!/bin/bash

set -ex

    # Make sure script was run using 'sudo' or by 'root'.

if [[ $(id -u) != 0 ]]; then
   echo "This script must be run as root." 1>&2
   exit 1
 else
        # Set variables.

    b="/System/Library/CoreServices/backupd.bundle"
    f="/System/Library/CoreServices/backupd.bundle/Contents/Resources/StdExclusions.plist"
    e="/private/var/log"

        # Backup, by copy, both the bundle and plist.

    [[ ! -d ${b%%.*}.ORI.${b##*.} ]] && cp -aR "$b" "${b%%.*}.ORI.${b##*.}"
    [[ ! -f $f.ORI ]] && cp -a "$f" "$f.ORI"

        # Get the value of the first element of the 'FileContentsExcluded' array.

    v="$(/usr/libexec/PlistBuddy -c "Print :FileContentsExcluded:0" "$f")"

    if [[ $v == $e ]]; then
            # Target value matched, delete it from .plist file.
        /usr/libexec/PlistBuddy -c "Delete :FileContentsExcluded:0"  "$f"
        echo "$e removed from $f"
    else
        echo "$e not found where expected!"
        exit 1
    fi
    exit 0
fi

Bild mit syntaktischer Hervorhebung:

Geben Sie hier die Bildbeschreibung ein

Hinweis: Dieses Skript kann in OS X 10.11 nicht ausgeführt werden, es sei denn, SIP wird vorübergehend deaktiviert.

Nein, während die standardmäßige Time Machine Sie Verzeichnisse ausschließen lässt , gibt es leider keine Möglichkeit, Verzeichnisse einzuschließen .

Auch das Befehlszeilenprogramm ist keine Hilfe tmutil- wieder können Sie nur Verzeichnisse ausschließen.

Wenn Sie den Inhalt wirklich /private/var/logsichern müssen, würde ich vorschlagen, ein einfaches Skript zu verwenden, um das Verzeichnis an einen Ort zu kopieren, an dem gesichert wird.

Um die Dateien regelmäßig zu kopieren, können Sie Automator oder ein einfaches Bash-Skript mit einem einzigen rsyncAufruf verwenden wie:

rsync -ar --delete /private/var/log/ /Users/yourusername/Documents/logbackups/

Bitte beachten Sie, dass einige Unterverzeichnisse aufgrund von Standardberechtigungen Probleme bereiten können ... wie dieses hier:

drwx------   3 root    wheel    102 17 Sep 15:30 com.apple.revisiond

Aus den Kommentaren durch Testen unten habe ich das /private/var/log' directory withtmutil` getestet und wir bekommen:

testac:~: tmutil isexcluded /private/var/log/
[Included]    /private/var/log/
testac:~: tmutil removeexclusion /private/var/log/
MDSetAttribute(): Removing extended attributes from '/private/var/log' failed errno: Permission denied

Wenn Sie also die von @ user3439894 vorgeschlagenen Dateien nicht über die Tools und die Standardbenutzeroberfläche ändern, gibt es keine Möglichkeit, dies zu tun. Angesichts der Tatsache, dass das Ändern von Core-Dateien immer eine schlechte Idee ist, würde ich sie an einen bereits enthaltenen Speicherort kopieren. (Abgesehen von allem anderen können Systemaktualisierungen oder die Time Machine-Integrität Ihre Änderungen rückgängig machen).

Sie sagten: "... es gibt keine Möglichkeit, Verzeichnisse einzuschließen." und in diesem speziellen Anwendungsfall würde ich sagen, dass Sie sich irren könnten, denn wenn ein bestimmtes Verzeichnis standardmäßig ausgeschlossen ist, kann es möglicherweise durch Entfernen des Ausschlusses eingeschlossen werden! Ich habe es nicht versucht, aber ich würde sicherlich denken, bevor ich sage, dass es nicht aufgenommen werden kann. Wie auch immer, da es mit einer Systemdatei herumspielen würde, wäre Ihr Vorschlag, den Inhalt an einen Ort zu kopieren, der gesichert wird, sicherer.
Leider gibt es keinen Mechanismus zum Ausschließen /private(oder für diese Materie /systemusw. /Library), dass sie überhaupt nicht "eingeschlossen" oder "ausgeschlossen" sind ...
Sie irren sich, /private/var/logist ausdrücklich ausgeschlossen. Auf meinem System ist es das erste Element des FileContentsExcluded- Arrays des Root Dictionary in der StdExclusions.plist der backupd.bundle/private/var/log und ich würde vermuten, dass das Entfernen es daher dazu führen würde, dass es in ein Time Machine-Backup aufgenommen wird . Ich denke, ich muss es einfach testen und sehen.
Okay, ich habe /private/var/logdie entfernt StdExclusions.plistund dann eine Time Machine-Sicherung erstellt. Es enthielt absolut den Inhalt, /private/var/logder zuvor nicht gesichert worden war. Ich vermute also nicht mehr, dass das Entfernen dazu führen würde, dass es eingeschlossen wird. Ich kann in diesem Anwendungsfall mit absoluter Sicherheit sagen, dass das Entfernen des Standardausschlusses dazu führt, dass Dateien an /private/var/logdiesem Ort gesichert werden, die zuvor nicht von Time Machine gesichert wurden!
Entschuldigung, ich habe über die Verwendung der Time Machine-Schnittstelle gesprochen, ich habe nicht über das Hacken von Systemdateien gesprochen ... (obwohl ich mir vorstelle, ob es in der plist enthalten ist, mit der Sie tmutildas Verzeichnis ausschließen könnten - lassen Sie mich nachsehen)
Siehe aktualisierte Antwort tmutillässt Sie den Ausschluss nicht entfernen … es wird ein Fehler bei der Berechtigung für erweiterte Attribute ausgegeben.