Piszę skrypt, który rsycnc mój katalog Time Machine na zdalny serwer za pomocą ssh. Zmieniłem skrypt skryptowy na AppleScript, a potem z powrotem na skrypt Apple i nie obchodzi mnie, jakiego rodzaju skrypt będzie wymagał tego rozwiązania.
Udało mi się rozpocząć proces tworzenia kopii zapasowej za pomocą tego małego fragmentu kodu.
do shell script "/System/Library/CoreServices/backupd.bundle/Contents/Resources/backupd-helper >/dev/null 2>&1 &"
Teraz próbuję wykonać polecenie rsync po zakończeniu tworzenia kopii zapasowej. Czy jest jakiś czysty sposób w AppleScript, aby sprawdzić, czy proces tworzenia kopii zapasowej jest zakończony? A może jest dobry „haczyk”, którego można użyć w bash, aby sprawdzić, czy jest zakończony?
backup
time-machine
applescript
bash
whitneyz
źródło
źródło
Odpowiedzi:
Oto jeden sposób - wiem, że nie jest to „właściwe” rozwiązanie, ale wyobrażam sobie, że to zadziała.
ps ax | grep "/System/Library/CoreServices/backupd.bundle/Contents/Resources/backupd-helper" | grep -v 'grep'
Przeszukuje listę procesów pod kątem procesu tworzenia kopii zapasowej, a następnie odfiltrowuje samą komendę grep. Jeśli polecenie zwróci> 0 wyników, proces tworzenia kopii zapasowej jest nadal aktywny. Jeśli nie, proces się zakończył, więc możesz założyć, że został zakończony.
źródło
pgrep backupd-helper
TIME_MACHINE_PID=$! wait $TIME_MACHINE_PID
może w osobnej odpowiedzi? Dziękuję Ci.tmutil status
jest sposobem na lew, teraz, gdy mamy fajne narzędzie do tego rodzaju zapytań.W nowszym systemie operacyjnym istnieje nieudokumentowane polecenie,
tmutil currentphase
które pokazuje nazwę bieżącej fazy.źródło
tmutuil
jest tak pełen zwycięstwa, że trudno jest wyrazić, jak miło jest zerknąć i szturchać status tworzenia kopii zapasowych, statystyki i prowadzić programowo.Możesz także rozpocząć tworzenie kopii zapasowej za pomocą
tmutil startbackup -b
.-b
blokuje polecenie do momentu zakończenia tworzenia kopii zapasowej.źródło
tmutil status|grep -c "Running = 1"
zwraca „1”, gdy działa, „0”, gdy nie.
źródło
Brak procesów związanych z tworzeniem kopii zapasowych nie gwarantuje pełnego wykonania kopii zapasowej Time Machine
Na woluminie, na którym Time Machine zapisuje swoje kopie zapasowe: obok
/Latest/
katalogu…… rozważ:.inProgress/
... pakiet.Jeśli ten pakiet istnieje, kopia zapasowa jest niekompletna.
źródło
.inProgress
katalogu, Time Machine może być nadal zajęty przygotowywaniem lub porządkowaniem po utworzeniu kopii zapasowej (np. Usuwanie starych kopii zapasowych).Następująca praca dla mnie ...
Skrypt backup_status:
Skrypt backup_wait:
źródło
tmutils
istnieje tylko od 10.7. Wcześniej można używać, jak wspomniano,/System/Library/CoreServices/backupd.bundle/Contents/Resources/backupd-helper
do ręcznego uruchamiania Time Machine.Następnie możesz użyć,
wait
aby poczekać, aż proces się zakończy. Bez argumentów będzie po prostu czekać; jeśli podasz PID, możesz uzyskać jego wartość zwracaną (status wyjścia).W szczególności
wait $!
będzie czekał na ostatni proces rozpoczęty w tej powłoce. Jednak, jak wspomniał Lauri, to oczekiwanie powróci przed ukończeniem wehikułu czasu, ponieważ pomocnik kopii zapasowej kończy się przed utworzeniem kopii zapasowej. Nie udało mi się znaleźć żadnej nazwy procesu wskazującej, że tworzenie kopii zapasowej nie zostało zakończone.Przeglądając zawartość pliku /var/logs/system.log (lub poprzez konsolę) zauważyłem, że po zakończeniu tworzenia kopii zapasowej ostatnią rzeczą, którą należy zrobić, jest wysunięcie obrazu dysku wehikułu czasu. Rzeczywiście sprawdziłem, czy (jest to OS X 10.6.8) podczas tworzenia kopii zapasowej
/Volumes/Time Machine Backups
. W ten sposób możesz po prostu sprawdzić, czy katalog istnieje. Gdy przestaje działać, Time Machine jest skończona.Nie jestem pewien, czy to zadziała dla wszystkich, ponieważ wykonałem instrukcje tutaj, aby wykonać kopię zapasową na komputerze z systemem Windows w sieci.
źródło