Skąd mam wiedzieć, czy kopia zapasowa wehikułu czasu jest uruchomiona?

5

Ponieważ APFS ma własne zdanie i zapełnia dysk twardy niechcianymi migawkami, stworzyłem crona do uruchomienia tmutil deletelocalsnapshots xxx. Później dowiedziałem się, że uruchomienie tego polecenia w trakcie tworzenia kopii zapasowej zatrzyma tworzenie kopii zapasowej. Skąd mam wiedzieć, czy trwa tworzenie kopii zapasowej wehikułu czasu, aby uniknąć uruchomienia polecenia? Strona podręcznika dla tmutilnie wyświetla żadnego polecenia statusu.

W tej chwili wykonuję następujące czynności w skrypcie, ponieważ teraz kopie zapasowe montuje się w /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

Nie wydaje się to jednak zbyt precyzyjne. Wolumin może zostać zamontowany kilka minut później po rozpoczęciu tworzenia kopii zapasowej, a także zatrzymanie tworzenia kopii zapasowej pozostawia na chwilę ten wolumin. Wreszcie nazwa zamontowanego woluminu może ulec zmianie w przyszłości, co sprawi, że czek stanie się bezużyteczny.

Grzegorz Adam Hankiewicz
źródło
Zamiast edytować swój post - postaram się odpowiedzieć w sposób, który pomoże. Widzę następujące problemy: 1) APFS jest na dysku SSD i nie ma HD - potrzebujesz bardzo szczegółowego pytania uzupełniającego, aby wyjaśnić, dlaczego / dlaczego masz APFS na HD i jeśli tworzysz kopię zapasową na APFS lub z APFS. 2) Lokalne migawki naprawdę nie zajmują więcej miejsca w praktyce. Przestrzeń jest już zajęta i cieńsza, gdy jej potrzebujesz. Jaka dokładna alokacja miejsca znajduje się w woluminie, który się kończy? Być może jest to pytanie XY.
bmike
1) Mam tylko jeden dysk SSD z APFS i zewnętrzną kapsułę czasową Ethernet. 2) Przetwarzam wiele dużych plików wideo. Wiele dni kończę dzień pracy z 20 GB za darmo, zostawiam włączony komputer, a rano mam 140 GB za darmo. Te migawki są naprawdę denerwujące, gdy potrzebuję teraz tych 120 GB .
Grzegorz Adam Hankiewicz
1
To łatwe do napisania. tmutil thinlocalsnapshots \ 100...z wystarczającą liczbą zer, aby dostać się do 120 GB. Jeśli zapłaciłeś za wsparcie, otworzyłbym skrzynkę z Apple dotyczącą tego przypadku użycia. Wydaje się, że jeden, tmdiagnosea inżynierowie mogą upewnić się, że ich konfiguracja działa w twoim przypadku użycia. Zedytuję mój post, aby uzyskać 1 GB czystki. Świetne pytanie +2, gdybym mógł głosować dwa razy.
bmike
Ugh, tak, dziękuję, dlatego zacząłem to pytanie, ponieważ próbuję napisać te polecenia, a deletelocalsnapshots po prostu działa lepiej niż cienkie lokalnapshoty z mojego doświadczenia.
Grzegorz Adam Hankiewicz
Doskonale - nie krępuj się wymienić swojego skryptu, jeśli nikt go nie dostarczy i musisz poprawić cienki przykład. Nie wiem, czy Apple ujawniło sposób pomiaru migawek, więc używam thinlocalsnapshotsgo, deletelocalsnapshotsgdy muszę pilnie zwolnić miejsce. (powiedzmy, że przygotowując instalację Adobe 50 GB w ciągu tygodnia lub dwóch okresów, abyśmy mogli zainstalować je wszystkie z lokalnego obrazu zamiast z sieci)
bmike

Odpowiedzi:

7

Kanonicznym sposobem sprawdzenia statusu wehikułu czasu jest użycie narzędzia i sprawdzenie statusu:

 tmutil status

Teraz musisz przetworzyć tekst, ponieważ zgłasza wyjście 0 podczas działania i gdy nie działa od czasu powrotu statusu - nie to, że jest prawidłowy status.

Użyłbym:

tmutil status | grep "Running = 0;"

Zwraca 0, jeśli system nie jest aktualnie uruchomiony, i 1, jeśli tworzysz kopię zapasową. Jednak tworzenie kopii zapasowych w High Sierra oznacza zdarzenie niezwiązane z migawką. Migawki dosłownie dotyczą dysków zewnętrznych, które dosłownie nie są APFS. Tylko wewnętrzny dysk SSD jest traktowany jako APFS, a lokalne migawki nie są czymś, co „uruchamia się” tak samo jak „po prostu istnieje” i „działa”, jeśli cokolwiek jest procesem przerzedzania - nie jest to proces tworzenia kopii zapasowej.

Wywołania procesu przerzedzania, backupd-helperktóre nie mają narzędzia wiersza polecenia do sprawdzenia po zakończeniu, ale można je uruchomić, wydając wywołanie blokujące, takie jak:

 tmutil thinlocalsnapshots / 1000000000

Powyżej ma wystarczającą liczbę zer, aby przerzedzić jeden bajt giga - dodaj dwa zera, aby poprosić o odzyskanie 100 GB.


Chcę poprawić (lub przynajmniej lekko zakwestionować) koncepcję zbyt wielu migawek. APFS jest kopią systemu plików zapisu, a jedyne przykłady tego, że jest źle, wydają się być wysoce wymyślnymi lub niestandardowymi konfiguracjami. Pliki znajdujące się w pobliżu są już zapisane na dysku. System jest po prostu „leniwy”, jeśli chodzi o ich czyszczenie, i nie marnuje czasu na przetwarzanie, dopóki nie dowie się, że a) system jest względnie bezczynny b) pamięć masowa jest stosunkowo bezczynna i nie kończy jej się jeszcze zbyt mało wolnego miejsca.

Apple wciąż wyraźnie zmienia liczbę migawek, które należy zamontować, jak ustawić progi czyszczenia, ile interwałów zachować w sytuacjach, gdy dysk zewnętrzny nie jest podłączony, a lokalne migawki istnieją.

Możesz kopać głębiej za pomocą:

tmutil listlocalsnapshots /
tmutil thinlocalsnapshots / 1
tmutil deletelocalsnapshots YYYY-MM-DD-HHMMSS

Znowu nie widziałem miejsca, w którym musiałem przerzedzać lub usuwać migawki z automatycznego procesu na lokalnych woluminach. Usunięcie może być przydatne, gdy chcesz usunąć dużą kopię zapasową z dysku zewnętrznego. Prawdziwą dźwignią, jaką mieliśmy, było użycie wyłączeń Time Machine, aby pominąć tworzenie kopii zapasowych dużych plików z niewielkimi zmianami. Zobaczymy, jak APFS zareaguje na te pliki - domyślam się, że możesz umieścić typ plików na innym woluminie APFS i cienko agresywnie i okresowo lub kontynuować oglądanie wyłączeń kopii zapasowych, aby sprawdzić, czy to oszczędza przydzielone miejsce bez spowalniając kopiowanie pod względem wydajności zapisu i korzyści z przechowywania.

bmike
źródło
3

Nieudokumentowany tmutil status

Jest nieudokumentowana, a zatem ulec zmianie tmutil status. To połączenie zwraca odpowiedź:

Backup session status:
{
    ClientID = "com.apple.backupd";
    Running = 0;
}

Będziesz musiał przeanalizować część odpowiedzi JSON, aby dowiedzieć się, czy Time Machine działa.

Szukać backupd

W starszych wersjach systemu macOS, jeśli backupdproces jest uruchomiony, wówczas Time Machine aktywnie tworzy kopię zapasową.

Zobacz pytanie StackOverflow, Sprawdź, czy program działa ze skryptem powłoki bash? dla niezawodnych metod sprawdzania uruchomionego procesu.

Graham Miln
źródło
1
grep jest wystarczający do sprawdzania przebiegu w praktyce - to „nieudokumentowane” narzędzie jest na szczęście stabilne, odkąd Lion i grep pracują dla nas od tego czasu bez potrzeby wprowadzania zmian. Oczywiście Apple może to wszystko zmienić w 10.13.4 - udokumentowane lub nie. Cała przesłanka tutaj jest jednak dla mnie podejrzana. Myślę, że odpowiadamy na coś, co nawet nie pomoże OP. Kiedy już to sprawdzą, jak zamierzają z nich skorzystać i czy „rozwiąże” wszystko, co mnie interesuje.
bmike
To nie jest dokładne. Mam Time Machine skonfigurowany, ale nie jest uruchomiony ... w rzeczywistości, dysk nie jest jeszcze podłączony, ale backupdi backupd-helper -launchdoba pokazane w ps. Tak tmutil statusjest nadal najlepszym sposobem, pomimo nieudokumentowane.
TJ Luoma
@TJLuoma dzięki. Zaktualizowałem odpowiedź.
Graham Miln
-1

Sam Time Machine ma pasek menu, którego można używać. Musisz tylko włączyć element paska menu.

W okienku preferencji programu Time Machine znajduje się pole wyboru do wyświetlenia elementu paska menu. Pasek menu pozwala ręcznie wykonać kopię zapasową, jeśli wykonuje kopię zapasową i jak daleko jest.

EDYCJA: To jednak nie pozwoli ci ustawić crona tak, aby wiedział, kiedy jest wykonywana lokalna migawka, musisz to zrobić ręcznie.

Edycja 2: głosowanie w dół lub nie, osoby szukające pytania pod tytułem znajdą moją odpowiedź, która będzie pomocna. Nie będę tego usuwać.

Jahhein
źródło
Jak to pomaga w skrypcie powłoki (patrz pytanie)?
nohillside
To pytanie brzmiało: „Skąd mam wiedzieć, czy kopia zapasowa wehikułu czasu jest uruchomiona?”. Dlaczego używasz skryptu do usuwania lokalnych migawek, które są używane później podczas faktycznej kopii zapasowej, nie jestem pewien, czy nie podałeś. Jeśli chcesz zapobiec wykonywaniu lokalnych migawek, zaktualizuj swoje pytanie.
Jahhein