Bisakah saya mengonfigurasi Macbook saya untuk melepas semua drive eksternal ketika saya menutup penutupnya?

10

Saya memiliki 13 "Macbook Pro baru yang menjalankan Maverick. Komputer ini terhubung ke drive USB eksternal yang saya gunakan untuk cadangan Time Machine saya dan untuk penyimpanan eksternal. Backup Time Machine terjadi beberapa kali per hari dan drive sebagian besar tidak aktif untuk sebagian besar hari itu

Ketika saya bergegas ke pertemuan, ke ruang server atau saya pulang ke rumah pada akhir hari, saya ingin melakukan hal berikut:

  1. Tutup penutup pada Macbook saya, dengan cepat.
  2. Mintalah Mac secara otomatis melepas semua drive eksternal, secepat mungkin, dan secara paksa jika diperlukan. Saya bersedia menunggu beberapa detik untuk mematikan semua lampu.

Apakah ada cara untuk membuat komputer secara otomatis melepas semua drive eksternal segera setelah saya menutup penutup pada Mac saya?

Saat ini jika saya lupa melepas drive eksternal, Mac saya menghukum saya nanti dengan kesalahan "Disk tidak dikeluarkan dengan benar. Jika memungkinkan, selalu keluarkan disk sebelum mencabutnya atau mematikannya."

Saya tahu ini adalah praktik terbaik untuk selalu melepas disk secara bersih sebelum menghapus antarmuka disk, tetapi saya sedang mencari solusi otomatis. Saya tidak terlalu khawatir jika satu gambar cadangan Time Machine terganggu atau rusak, karena salah satu cadangan berikutnya akan bekerja dan saya sangat jarang perlu memulihkan dari cadangan. Karena filesystem adalah filesystem jurnal, jurnal secara transparan menangani banyak kesalahan korupsi filesystem lainnya.

Stefan Lasiewski
sumber
Karena keluar dari akun Anda melepas semua drive, apakah ada kerugian signifikan hanya dengan keluar? Juga, saya percaya OS mem-flush semua filesystem yang ditulis oleh IO, sehingga kemungkinan masalah aktual dengan ejeksi saat tidur nampaknya cukup rendah bagi saya - demikian juga untuk filesystem yang dijurnal.
bmike

Jawaban:

8

Ada sejumlah aplikasi yang dapat menjalankan skrip saat tidur:

  • SleepWatcher - sederhana namun efektif.
  • Skenario - juga dapat menjalankan skrip di waktu lain seperti setelah bangun.
  • ControlPlane - lebih dapat disesuaikan, memungkinkan Anda menjalankan skrip setelah berbagai peristiwa.

Skrip bash seperti berikut ini akan meng-unmount semua disk yang ditentukan:

VOLUMES="/Volumes/drive1 /Volumes/drive2 /Volumes/drive3"
for volume in $VOLUMES ; do [ -d $volume ] && umount -f $volume done

Untuk melepas semua volume kecuali /:

umount -A

atau lebih bersih ...

osascript -e 'tell application "Finder" to eject (every disk whose ejectable is true)'
GRG
sumber
6

Opsi lain adalah Jettison (tersedia melalui App Store) - itulah yang telah saya gunakan selama beberapa bulan sekarang dan tidak memiliki masalah sama sekali. Baru-baru ini memperoleh opsi untuk secara otomatis mengount ulang disk yang masih terhubung ketika Anda bangun dari tidur.

V1.3.0 yang lebih baru (hanya dapat diunduh langsung - saya asumsikan sedang menuju App Store) harganya lebih mahal dan mereka menjelaskan mengapa ini ada dalam FAQ mereka.

Jika saya membacanya dengan benar, orang dapat membeli versi App Store dengan harga dua dolar dan kemudian memutakhirkan ke versi unduh langsung secara gratis, tetapi saya belum mengonfirmasi atau mencobanya.

Tidak persis mahal dengan harga mana pun, tetapi tidak gratis seperti pilihan SleepWatcher.

man8
sumber
4

Saya akan menguraikan jawaban @ grgarside.

Saya menggunakan SleepWatcher

  1. Instal dari port:

    sudo port install sleepwatcher
    
  2. Baca manual di /opt/local/share/doc/sleepwatcher/ReadMe.rtfdan melalui man sleepwatcher. Baca Machint lama ini dari Macworld: Cure an insomniac Mac with SleepWatcher System . Menurut Machint saya cukup menambahkan kode ke ~/.sleepdan ~/.wakeup, atau ke file global /etc/rc.sleep& /etc/rc.wakeup.

  3. Tempatkan kode berikut ~/.sleep:

    osascript -e 'tell application "Finder" to eject (every disk whose ejectable is true)'
    
  4. Aktifkan sleepwatcher. Ubah <key>Disabled</key><true/>ke <key>Disabled</key><false/>.

    sudo vim /Library/LaunchDaemons/org.macports.sleepwatcher.plist
    sudo launchctl load /Library/LaunchDaemons/org.macports.sleepwatcher.plist
    sudo launchctl list | grep sleepwatcher
    
  5. Memeriksa:

    ps aux |grep [s]leepwatcher
    root              421   0.0  0.0  2459568   1012   ??  Ss    2:45PM   0:00.00 /opt/local/bin/daemondo --label=sleepwatcher --start-cmd /opt/local/sbin/sleepwatcher --verbose --sleep /opt/local/etc/rc.sleep --wakeup /opt/local/etc/rc.wakeup ; --pid=exec
    root              422   0.0  0.0  2460656   1888   ??  S     2:45PM   0:00.17 /opt/local/sbin/sleepwatcher --verbose --sleep /opt/local/etc/rc.sleep --wakeup /opt/local/etc/rc.wakeup
    
  6. Selesai!

Stefan Lasiewski
sumber
Saya dapat menggunakan beberapa ulasan pada jawaban ini untuk memastikan bahwa saya mengaktifkannya dengan .plistbenar.
Stefan Lasiewski
Ikuti langkah demi langkah, tetapi tidak berhasil bagi saya. Setelah tidur saya mencabut hard drive eksternal saya, MacBook5,3 saya bangun dan ketika saya membuka tutupnya saya mendapatkan kesalahan disk yang dikeluarkan tidak benar.
Saaru Lindestøkke
Ini bekerja untuk saya, tetapi hanya kadang-kadang. Tidak yakin kenapa.
Stefan Lasiewski
1
Saya masih menggunakan ML, jadi itu bukan Mavericks spesifik, dan saya tidak mendapatkan kesalahan saat mesin aktif. Saya perhatikan bahwa skrip tidur. Kadang-kadang dieksekusi saat bangun, seolah-olah itu tidak mendapatkan cukup waktu untuk melakukannya ketika akan tidur.
Saaru Lindestøkke
1
Juga panduan yang bagus di sini: damacy.net/post/9377132648/…
Dan