Apa yang Setara dengan Command Line dari “Safely Remove Drive”?

Jawaban:

39

The udisksperintah paling mungkin apa yang Anda cari.

Saat sudo unmount /dev/sdXYakan bekerja, udisks dapat melakukan ini tanpa izin tingkat akar (sudo).

Jika Anda memiliki drive /dev/sdXY, mount, di mana X adalah huruf yang mewakili disk usb Anda dan Y adalah nomor partisi (biasanya 1), Anda dapat menggunakan perintah berikut untuk menghapus drive dengan aman:

udisks --unmount /dev/sdXY
udisks --detach /dev/sdX

Sebagai contoh praktis, jika partisi saya sudah /dev/sdb1terpasang, saya akan menjalankan ini untuk melepas dan melepaskannya:

udisks --unmount /dev/sdb1
udisks --detach /dev/sdb

Saya awalnya menemukan ini melalui pertanyaan ini: https://superuser.com/a/430470/176493 .

Menggunakan udisks2:

Dalam distribusi ubuntu yang lebih baru (saya tidak yakin kapan saklar terjadi), udisks2 diinstal sebagai ganti udisks.

Mencerminkan perintah di atas, untuk melepas dan melepaskan disk dengan udisks2:

udisksctl unmount -b /dev/sdXY
udisksctl power-off -b /dev/sdX

Contoh jika drive saya adalah /dev/sdb1:

udisksctl unmount -b /dev/sdb1
udisksctl power-off -b /dev/sdb
Daboross
sumber
Saya dapatkan Detach failed: Not Authorizedketika saya mencoba menjalankannya tanpa hak root. (Bukan masalah serius, tapi koreksi kecil.)
Jonathan Y.
Apa versi Ubuntu yang Anda jalankan? Juga, bagaimana Anda memasang drive? Jika Anda melakukan mount menggunakan izin root, atau ketika login sebagai pengguna lain (bukan Nautilus atau udisk di pengguna saat ini), pengguna Anda tidak akan memiliki izin untuk meng-unmount penggunaan udisks.
Daboross
2
Ya, saya mount dengan sudo, tetapi saya juga umounted sebelum mencoba --detach. Ini adalah rilis terpercaya dari server ubuntu.
Jonathan Y.
Ah, mungkin ada perbedaan dengan server Ubuntu. Detach tidak berfungsi tanpa izin root di desktop saya.
Daboross
2
@morhook lihat jawaban yang diperbarui dengan dukungan udisks2!
Daboross
21

Setara sebenarnya dengan operasi Nautilus Mount / Unmount adalah gvfs-mount -m -d /dev/ice /some/directorydan gvfs-mount -u /some/directory. Ini menggunakan API yang sama dengan yang digunakan Nautilus, sistem file virtual GIO (gvfs), yang menyediakan alat yang berbeda untuk menggunakan beberapa layanan sebagai titik mount, seperti seseorang, NFS, FTP, perangkat blok, dll.

Untuk mengidentifikasi perangkat mana gvfs-mount -lyang harus dilepas, gunakan saja yang cukup.

Solusi ini memiliki kekhasan yang tidak diperlukan untuk izin yang lebih tinggi, karena semuanya dikelola oleh layanan umount / gvfsd / polkit, yang selanjutnya menyerupai kemiripan dengan perilaku Nautilus.

Braiam
sumber
2
Ini sepertinya jawaban yang paling benar. Meskipun banyak dari kita yang terbiasa berpikir udisks(disarankan dalam jawaban lain) sebagai "cara" pengguna non-root me-mount dan melepas disk yang dapat dilepas di desktop, seperti yang dinyatakan di sini gvfs-mountmungkin menggunakan mekanisme lain. (Pada sistem Utate MATE Ubuntu saya, paket udisk bahkan tidak diinstal.)
Eliah Kagan
1
Ubuntu 18.40 memiliki gioyang merupakan pengganti untuk gvfs-mount.
pejantan
13

Setelah Anda mengetahui perangkat, mungkin menggunakan dfinfo seperti dalam jawaban @rcpao , cara terbaik untuk "mengeluarkan" disk adalah, imho, menggunakan perintah yang sama seperti yang digunakan antarmuka grafis:

udisksctl unmount --block-device /dev/sdc1

Saya memiliki skrip untuk melakukan backup ke disk yang saya tahu akan dipasang di bawah /media/romano/movlin, dan setelah backup saya lakukan:

sync
udisksctl unmount -b $(mount | grep movlin   | cut -d" "  -f1)

Di sini, mount | grep movlin | cut -d" " -f1akan mengekstrak perangkat yang dipasang di bawah label "movlin", (akan /dev/sdc1dalam kasus itu), dan kemudian melepaskannya.

Rmano
sumber
Apakah benar-benar perlu untuk menjalankan secara manual syncsebelumnya udisksctl unmount?
Eliah Kagan
Mungkin tidak. Tapi saya cukup yakin dengan perilaku cache yang benar secara umum; Saya kadang merasa bahwa USB drive masih berkedip setelah umount ... selama beberapa detik. Katakanlah itu adalah sisa dari yang lama sync; sync; sync && poweroff...
Rmano
@Rmano Saya telah melihat flashing pada flash drive yang seharusnya diturunkan (biasanya dilakukan melalui gui di bawah KDE) berkali-kali. Saya mencoba menunggu sebelum mencabutnya. Ini memang terlihat (bagi mata saya yang tidak terlatih) seperti ada sesuatu yang tidak beres. Akan lebih buruk dengan flash drive tanpa lampu indikator aktivitas.
Joe
1
Rmano, karena udiskstidak lagi hadir secara default di Ubuntu udisksctlmungkin merupakan solusi yang lebih disukai. udisksctl power-off --block-device /dev/sdcmematikan lampu pada USB Flash drive eksternal sehingga mungkin cocok sebagai perintah berikutnya untuk mengikuti Anda.
H2ONaCl
8
  1. df untuk menemukan titik pemasangan flash drive Anda.

    rcpao@bun:~$ df
    Filesystem                   1K-blocks       Used  Available Use% Mounted on
    /dev/mapper/ubuntu--vg-root 1916153032  658404668 1160390336  37% /
    none                                 4          0          4   0% /sys/fs/cgroup
    udev                          16438692          4   16438688   1% /dev
    tmpfs                          3289976       2156    3287820   1% /run
    none                              5120          0       5120   0% /run/lock
    none                          16449860      18768   16431092   1% /run/shm
    none                            102400         48     102352   1% /run/user
    /dev/sda1                       240972      98990     129541  44% /boot
    /dev/sdc1                     60915712      20992   60894720   1% /media/rcpao/SD024-64GB
    
  2. Lepas pemasangan menggunakan / dev / sdc1 atau / media / rcpao / SD024-64GB.

    rcpao@bun:~$ sudo umount /dev/sdc1
    [sudo] password for rcpao: 
    rcpao@bun:~$
    

    atau

    rcpao@bun:~$ sudo umount /media/rcpao/SD024-64GB
    [sudo] password for rcpao: 
    rcpao@bun:~$
    
  3. Anda seharusnya dapat melihat ikon eject flash drive menghilang di nautilus segera setelah umount selesai.

rcpa0
sumber
2
dfterlihat sangat berguna untuk mengidentifikasi di mana perangkat berada.
H2ONaCl
2
Untuk flash drive, ini masuk akal. Untuk disk drive, "Safely Remove" juga memutarnya, yang tidak dilakukan solusi ini (lihat jawaban oleh DaboRoss untuk itu).
Nate Eldredge
3
Ya, udisks --detachsangat membantu untuk melepaskan drive sepenuhnya setelah melepas pemasangan.
daboross
1
dfdan umountmerupakan utilitas standar UNIX. Itu selalu baik untuk mengenal mereka, karena ini akan selalu bekerja, sementara udisksitu tergantung pada dbus dan udisksd yang berjalan .
Simon Richter
1
@NateEldredge: "Untuk flash drive, ini masuk akal ..." - sebenarnya, tidak dan saya tidak memilih karena alasan ini: tahun lalu saya harus melakukan penerapan aplikasi qa dan secara naif menggunakan perintah cepat di sepanjang baris dari cp /path/to /drive && umount drive. Ini membuat 2 flash drive (sementara) tidak dapat ditulis sampai saya menyadari itu adalah perintah yang menyebabkannya. Menjalankan "Pindai & perbaiki" pada mesin Windows memperbaiki drive. Jawaban DaboRoss di bawah ini jauh lebih aman.
Andy E
2

ejectdari paket eject :

sudo eject /dev/sdX

muncul ke umountsemua partisi, dan letakkan perangkat dalam kondisi yang harus Anda hapus dan pasang kembali untuk melakukan remount.

Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
sumber
Untuk beberapa aplikasi, perintah eject ini adalah cara terbaik untuk melakukannya. Sebagian besar jawaban lain "cukup baik" tetapi secara teknis Ikon Keluaran di Nautalis tidak melakukan hal-hal seperti mematikan perangkat. Dalam pengalaman saya, eject lebih dekat dengan fungsi tombol eject usb itu sendiri. Jika Anda ingin menghindari sudo, Anda dapat menambahkan diri Anda ke grup disk (memerlukan log-out dan masuk). Perintah untuk ini adalah "sudo adduser user disk"
SpiRail