Woher weiß ich, ob ein Time Machine-Backup läuft?

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 tmutillistet 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.

Anstatt Ihren Beitrag zu bearbeiten, werde ich versuchen, auf eine hilfreiche Weise zu antworten. Probleme, die ich sehe, sind 1) APFS befindet sich auf SSD und nicht auf HD - Sie benötigen eine sehr detaillierte Folgefrage, um zu erklären, wie / warum Sie APFS auf HD haben und ob Sie auf APFS oder von APFS sichern. 2) Lokale Snapshots nehmen in der Praxis wirklich keinen zusätzlichen Speicherplatz ein. Der Platz ist bereits festgelegt und wird ausgedünnt, wenn Sie ihn brauchen. Welche genaue Speicherzuweisung befindet sich in dem Volume, das zur Neige geht? Vielleicht ist das eine XY-Frage.
1) Ich habe nur eine SSD mit APFS und eine externe Ethernet-Zeitkapsel. 2) Ich verarbeite viele große Videodateien. An vielen Tagen beende ich meinen Arbeitstag mit 20 GB frei, lasse den Computer an und am Morgen habe ich 140 GB frei. Diese Schnappschüsse sind wirklich nervig, wenn ich diese 120 GB jetzt brauche .
Das ist einfach zu scripten. 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 sein tmdiagnoseund 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.
Ugh, ja, danke, deshalb habe ich diese Frage gestartet, weil ich versuche, diese Befehle zu skripten, und deletelocalsnapshots funktioniert meiner Erfahrung nach einfach besser als thinlocalsnapshots.
Ausgezeichnet - Sie können Ihr Skript gerne auflisten, wenn niemand eines liefert und Sie das dünne Beispiel optimieren müssen. Ich weiß nicht, ob Apple eine Möglichkeit zum Messen der Snapshots bereitgestellt hat, also verwende ich thinlocalsnapshotsover deletelocalsnapshots, 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)
Sie können Ihre Videodateien von der Time Machine-Sicherung ausschließen, wenn sie groß sind und Sie sie in Ihrer Sicherung nicht benötigen.

Antworten (3)

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-helperder 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.

Es gibt auch 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 currentphaseist im Grunde dasselbe wie, tmutil status | awk -F' ' '/BackupPhase/{print $NF}'außer dass letzteres ein ;am Ende hat.
Das ist eine Bearbeitung wert @TJLuoma - danke für alles, was Sie zu dieser Site und Community beitragen.
Danke für die netten Worte @bmike. Ich bin sehr dankbar für diese Seite, also freue ich mich, alles zu tun, um sie zu unterstützen.
tmutil statusWenn 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, jqum Informationen herauszuziehen.

Undokumentierttmutil 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.

Suchebackupd

Wenn der backupdProzess 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.

grep ist gut genug für den laufenden Check in der Praxis - dieses "undokumentierte" Tool ist glücklicherweise seit Lion stabil und das grep funktioniert seitdem ohne Änderung für uns. Natürlich könnte Apple das alles in 10.13.4 ändern - dokumentiert oder nicht. Die ganze Prämisse hier ist mir jedoch suspekt. Ich denke, wir beantworten eine Sache, die dem OP nicht einmal helfen wird. Sobald sie diesen Check eingerichtet haben - wie werden sie ihn verwenden und wird er irgendetwas "lösen", ist für mich neugierig.
Das ist nicht genau. Ich habe Time Machine konfiguriert, aber es läuft derzeit nicht ... tatsächlich ist das Laufwerk nicht einmal verbunden, aber backupdund backupd-helper -launchdwerden beide in angezeigt ps. So tmutil statusist es immer noch der beste Weg, obwohl es nicht dokumentiert ist.
@TJLuoma danke. Ich habe die Antwort aktualisiert.

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.

Wie hilft das in einem Shell-Skript (siehe Frage)?
Diese Frage war "Woher weiß ich, ob ein Time Machine-Backup läuft?". Warum Sie ein Skript verwenden, um lokale Snapshots zu löschen, die später während einer tatsächlichen Sicherung verwendet werden, bin ich mir nicht sicher, ob Sie dies nicht angegeben haben. Wenn Sie verhindern möchten, dass lokale Schnappschüsse ausgeführt werden, aktualisieren Sie bitte Ihre Frage.