Saya sedang menulis skrip yang akan rsycnc direktori Time Machine saya ke server jauh menggunakan ssh. Saya telah beralih dari skrip shell ke AppleScript dan kemudian kembali ke skrip Apple dan saya tidak terlalu peduli skrip seperti apa yang akan diperlukan oleh solusi.
Saya telah berhasil memulai proses pencadangan dengan potongan kode kecil ini.
do shell script "/System/Library/CoreServices/backupd.bundle/Contents/Resources/backupd-helper >/dev/null 2>&1 &"
Apa yang saya coba lakukan sekarang adalah melakukan perintah rsync dilakukan setelah cadangan selesai. Apakah ada cara bersih di AppleScript untuk memeriksa untuk melihat apakah proses pencadangan selesai? Atau adakah "kait" yang bagus yang bisa Anda gunakan di bash untuk memeriksa apakah sudah selesai?
backup
time-machine
applescript
bash
whitneyz
sumber
sumber
Jawaban:
Ini salah satu cara - saya tahu itu tidak ada solusi yang "tepat", tapi saya bayangkan itu akan berhasil.
ps ax | grep "/System/Library/CoreServices/backupd.bundle/Contents/Resources/backupd-helper" | grep -v 'grep'
Apa yang dilakukannya adalah mencari daftar proses untuk proses backupd-helper, lalu memfilter perintah grep agar tidak muncul. Jika perintah kembali> 0 hasil, proses backupd-helper masih aktif. Jika tidak, prosesnya telah berakhir, dan Anda mungkin menganggap itu selesai.
sumber
pgrep backupd-helper
TIME_MACHINE_PID=$! wait $TIME_MACHINE_PID
mungkin dalam jawaban yang terpisah? Terima kasih.tmutil status
adalah cara Lion sekarang bahwa kami memiliki alat yang bagus untuk jenis pertanyaan ini.Pada OS yang lebih baru, ada perintah tidak berdokumen
tmutil currentphase
yang menunjukkan nama fase saat ini.sumber
tmutuil
sangat penuh dengan kemenangan, sulit untuk menyatakan betapa menyenangkannya untuk mengintip dan melihat status cadangan, statistik, dan menggerakkan berbagai hal secara terprogram.Anda juga dapat memulai pencadangan dengan
tmutil startbackup -b
.-b
memblokir perintah sampai cadangan selesai.sumber
tmutil status|grep -c "Running = 1"
mengembalikan '1' saat berjalan, '0' saat tidak.
sumber
Tidak adanya proses terkait cadangan bukan jaminan bahwa cadangan Time Machine selesai
Pada volume yang Time Machine menulis cadangannya: di samping
/Latest/
direktori ... ..., pertimbangkan:.inProgress/
bundel ... ...Jika bundel itu ada, cadangan tidak lengkap.
sumber
.inProgress
direktori, Time Machine mungkin masih sibuk mempersiapkan atau merapikan setelah cadangan (mis. Menghapus cadangan lama).Pekerjaan berikut untuk saya ...
Script backup_status:
Script backup_wait:
sumber
tmutils
hanya ada dari 10,7 pada. Sebelum itu Anda dapat menggunakan, seperti yang disebutkan,/System/Library/CoreServices/backupd.bundle/Contents/Resources/backupd-helper
untuk menjalankan Time Machine secara manual.Anda kemudian dapat menggunakan
wait
untuk menunggu sampai proses selesai. Tanpa argumen, ia hanya akan menunggu; jika Anda memberikan PID Anda bisa mendapatkan nilai baliknya (status keluar).Terutama,
wait $!
akan menunggu proses terakhir dimulai di shell itu. Namun, seperti yang disebutkan Lauri, penantian ini akan kembali sebelum mesin waktu selesai karena backupd-helper selesai sebelum pencadangan dilakukan. Saya tidak dapat menemukan nama proses yang menunjukkan bahwa cadangan tidak lengkap.Melihat isi /var/logs/system.log (atau melalui Konsol), saya perhatikan bahwa ketika cadangan selesai, hal terakhir yang dilakukan adalah mengeluarkan gambar disk mesin waktu. Cukup yakin saya memeriksa (ini adalah OS X 10.6.8) selama cadangan ada
/Volumes/Time Machine Backups
. Dengan demikian Anda cukup memeriksa apakah direktori tersebut ada. Ketika tidak lagi berfungsi, Time Machine selesai.Saya tidak yakin apakah ini akan bekerja untuk semua orang karena saya telah mengikuti petunjuk di sini untuk membuat cadangan ke mesin Windows di jaringan.
sumber