Da APFS seinen eigenen Kopf hat und die Festplatte mit unerwünschten Snapshots füllt, habe ich einen cron zum Ausführen erstellt tmutil deletelocalsnapshots xxx
. Später fand ich heraus, dass die Ausführung dieses Befehls während einer laufenden Sicherung die Sicherung stoppt. Wie kann ich feststellen, ob eine Time Machine-Sicherung ausgeführt wird, um die Ausführung des Befehls zu vermeiden? Die Manpage für tmutil
listet keinen Statusbefehl auf.
Im Moment mache ich Folgendes im Skript, da Backups jetzt unter bereitgestellt werden /Volumes/Time Machine Backups/
:
ls -d /Volumes/Time* 2>/dev/null|grep Machin >/dev/null
if [[ $? != 0 ]]; then
# run here tmutil snapshot deletion commands
fi
Dies scheint jedoch nicht sehr genau zu sein. Das Volume kann einige Minuten später, nachdem eine Sicherung gestartet wurde, bereitgestellt werden, und auch das Stoppen einer Sicherung lässt dieses bereitgestellte Volume für eine Weile. Schließlich könnte sich der Name des bereitgestellten Volumes in Zukunft ändern, wodurch die Überprüfung nutzlos wird.
Die kanonische Methode zum Überprüfen des Status der Zeitmaschine besteht darin, das Dienstprogramm zu verwenden und den Status zu überprüfen oder bei neueren Betriebssystemen nur die aktuelle Phase zu überprüfen:
tmutil status
tmutil currentphase
Jetzt müssen Sie den Text verarbeiten, da er den Ausgang 0 meldet, wenn er ausgeführt wird, und wenn er nicht ausgeführt wird, da der Status zurückgegeben wurde - nicht, dass es einen korrekten Status gibt.
Ich würde ... benutzen:
tmutil status | grep "Running = 0;"
Das gibt 0 zurück, wenn das System derzeit nicht läuft, und 1, wenn Sie sichern. Das Sichern auf High Sierra impliziert jedoch ein Nicht-Schnappschuss-Ereignis. Die Snapshots befinden sich buchstäblich auf externen Laufwerken, die buchstäblich kein APFS sind. Nur die interne SSD erhält APFS-Behandlung und die lokalen Snapshots sind nicht etwas, das "läuft", sondern "nur existiert", und das "Laufen", wenn überhaupt, ist der Ausdünnungsprozess - nicht der Sicherungsprozess.
Der Ausdünnungsprozess ruft auf, backupd-helper
der kein Befehlszeilentool hat, um zu überprüfen, wann er fertig ist, aber Sie können die Ausführung zeitlich festlegen, indem Sie einen blockierenden Aufruf wie den folgenden ausgeben:
tmutil thinlocalsnapshots / 1000000000
Oben hat genug Nullen, um ein Gigabyte zu verdünnen - fügen Sie zwei Nullen hinzu, um 100 GB zurück zu verlangen.
Ich möchte das Konzept der zu vielen Schnappschüsse korrigieren (oder zumindest leicht in Frage stellen). APFS ist ein Copy-on-Write-Dateisystem, und die einzigen Beispiele dafür, dass dies schlecht ist, scheinen stark erfundene oder nicht standardmäßige Konfigurationen zu sein. Die vorhandenen Dateien sind bereits auf die Festplatte geschrieben. Das System ist nur "faul" beim Aufräumen und verbraucht keine Verarbeitungszeit, bis es weiß, dass a) das System relativ untätig ist b) der Speicher relativ untätig ist und der freie Speicherplatz noch nicht knapp wird.
Apple ist eindeutig noch im Fluss, wie viele Snapshots bereitgestellt werden sollen, wie die Bereinigungsschwellenwerte festgelegt werden, wie viele Intervalle in Situationen beibehalten werden sollen, in denen das externe Laufwerk nicht verbunden ist und die lokalen Snapshots vorhanden sind.
Sie können tiefer graben mit:
tmutil listlocalsnapshots /
tmutil thinlocalsnapshots / 1
tmutil deletelocalsnapshots YYYY-MM-DD-HHMMSS
Auch hier habe ich noch keinen Ort gefunden, an dem ich Snapshots aus dem automatischen Prozess auf lokalen Volumes ausdünnen oder löschen musste. Das Löschen kann praktisch sein, wenn Sie ein großes Backup von einem externen Laufwerk löschen möchten. Der eigentliche Hebel, den wir früher hatten, bestand darin, Time Machine-Ausschlüsse zu verwenden, um die Sicherung großer Dateien mit winzigen Änderungen auszulassen. Es bleibt abzuwarten, wie APFS auf diese Dateien reagiert - ich vermute, dass Sie diese Art von Dateien möglicherweise auf einem anderen APFS-Volume ablegen und aggressiv und regelmäßig ausdünnen oder weiterhin die Backup-Ausschlüsse beobachten können, um zu sehen, ob Sie dadurch zugewiesenen Speicherplatz sparen ohne Verlangsamung der Kopierleistung beim Schreiben und Speichervorteile.
tmutil currentphase
(das mindestens seit 10.11 existiert), das eine Ein-Wort-Zusammenfassung dessen gibt, was Time Machine derzeit tut. Es gibt 'BackupNotRunning' aus, wenn Time Machine nicht aktiv ist. Es gibt eine Vielzahl anderer "Wörter", die verwendet werden, wenn es läuft . tmutil currentphase
ist im Grunde dasselbe wie, tmutil status | awk -F' ' '/BackupPhase/{print $NF}'
außer dass letzteres ein ;
am Ende hat.tmutil status
Wenn Sie die Ausgabe von in ein einfacher zu analysierendes Format wie JSON
konvertieren möchten , können Sie tmutil status | tail -n+2 | plutil -convert json -o - -- -
. Dann können Sie diesen Ausgang werfen, jq
um Informationen herauszuziehen.tmutil status
Es gibt eine undokumentierte und daher Änderungen vorbehaltene tmutil status
. Dieser Aufruf gibt die Antwort zurück:
Backup session status:
{
ClientID = "com.apple.backupd";
Running = 0;
}
Sie müssen den JSON-Teil der Antwort analysieren, um zu erfahren, ob Time Machine ausgeführt wird.
backupd
Wenn der backupd
Prozess in älteren Versionen von macOS ausgeführt wird, sichert Time Machine aktiv.
Siehe die StackOverflow-Frage, Prüfen Sie, ob das Programm mit dem Bash-Shell-Skript ausgeführt wird? für robuste Methoden zur Überprüfung eines laufenden Prozesses.
backupd
und backupd-helper -launchd
werden beide in angezeigt ps
. So tmutil status
ist es immer noch der beste Weg, obwohl es nicht dokumentiert ist.Time Machine selbst hat eine Menüleiste, die Sie verwenden können. Sie müssen nur das Menüleistenelement aktivieren.
Im Einstellungsbereich von Time Machine gibt es eine Kontrollkästchenauswahl, damit das Menüleistenelement angezeigt wird. Die Menüleiste ermöglicht es Ihnen, manuell eine Sicherung durchzuführen, wenn eine Sicherung durchgeführt wird und wie weit sie fortgeschritten ist.
BEARBEITEN: Dies ermöglicht es Ihnen jedoch nicht, einen Cron einzurichten, um zu wissen, wann ein lokaler Snapshot erstellt wird, Sie müssten dies manuell tun.
Bearbeiten 2: Abgestimmt oder nicht, diejenigen, die nach der Frage mit dem Titel suchen, werden meine Antwort als hilfreich empfinden. Ich werde es nicht löschen.
Fahrrad
Grzegorz Adam Hankiewicz
Fahrrad
tmutil thinlocalsnapshots \ 100...
mit genügend Nullen, um Sie auf 120 GB zu bringen. Wenn Sie bezahlten Support haben, würde ich einen Fall bei Apple zu diesem Anwendungsfall eröffnen. Scheint einer zu seintmdiagnose
und die Ingenieure könnten sicherstellen, dass ihre Konfiguration für Ihren Anwendungsfall funktioniert. Ich werde meinen Beitrag bearbeiten, um Ihnen eine 1-GB-Bereinigung zu verschaffen. Tolle Frage +2, ob ich zweimal abstimmen könnte.Grzegorz Adam Hankiewicz
Fahrrad
thinlocalsnapshots
overdeletelocalsnapshots
, wenn ich dringend Speicherplatz freigeben muss. (z. B. bei der Vorabbereitstellung einer 50-GB-Adobe-Installation über ein oder zwei Wochen, damit wir sie alle vom lokalen Image statt über das Netzwerk installieren können)Thorbjørn Ravn Andersen