Что представляет собой эквивалент командной строки «Безопасное извлечение диска»?

42

Что является эквивалентом функции Nautilus в командной строке под названием «Безопасное извлечение диска». В частности, я удаляю флешку.

H2ONaCl
источник
Вы можете найти superuser.com/a/430470/176493 полезным
daboross

Ответы:

40

Команда, udisksскорее всего, то, что вы ищете.

Хотя это sudo unmount /dev/sdXYбудет работать, udisks может делать это без прав корневого уровня (sudo).

Если у вас подключен диск /dev/sdXY, где X - это буква, обозначающая ваш usb-диск, а Y - номер раздела (обычно 1), вы можете использовать следующие команды для безопасного извлечения диска:

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

Для практического примера, если у меня есть /dev/sdb1смонтированный раздел , я бы запустил это, чтобы размонтировать и отсоединить его:

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

Первоначально я нашел это через этот вопрос: https://superuser.com/a/430470/176493 .

Использование udisks2:

В более новых дистрибутивах Ubuntu (я не уверен, когда произошло переключение), вместо udisks устанавливается udisks2.

Отражение команд выше, чтобы размонтировать и отсоединить диск с помощью udisks2:

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

Пример, если мой диск /dev/sdb1:

udisksctl unmount -b /dev/sdb1
udisksctl power-off -b /dev/sdb
daboross
источник
Я получаю, Detach failed: Not Authorizedкогда пытаюсь запустить его без прав root. (Не серьезная проблема, но небольшая поправка.)
Джонатан Y.
Какую версию Ubuntu вы используете? Кроме того, как вы установили диск? Если вы смонтировали с использованием прав root или вошли в систему как другой пользователь (в отличие от Nautilus или udisks у текущего пользователя), у вашего пользователя не будет разрешения на размонтирование с помощью udisks.
Даборосс
2
Да, я был на коне sudo, но я тоже umountпытался --detach. Это надежный релиз сервера Ubuntu.
Джонатан Я.
Ах, тогда может быть разница с сервером Ubuntu. Detach работает без разрешения root на моем рабочем столе.
Даборосс
2
@morhook смотрите обновленный ответ с поддержкой udisks2!
Даборосс
21

Фактическим эквивалентом операции Nautilus Mount / Unmount является gvfs-mount -m -d /dev/ice /some/directoryи gvfs-mount -u /some/directory. При этом используется тот же API, который использует Nautilus, виртуальная файловая система GIO (gvfs), которая предоставляет различные инструменты для использования нескольких служб в качестве точек монтирования, таких как smb, NFS, FTP, блочные устройства и т. Д.

Чтобы определить, какое устройство нужно размонтировать, просто используйте, gvfs-mount -lчего должно быть достаточно.

Это решение имеет особенность, которая не требуется для повышенных разрешений, поскольку все управляется службами umount / gvfsd / polkit, что в дальнейшем напоминает сходство с поведением Nautilus.

Braiam
источник
2
Это, кажется, самый правильный ответ. Хотя многие из нас привыкли думать udisks(предлагается в других ответах) как «способ», когда пользователи без полномочий root монтируют и размонтируют съемные диски на рабочем столе, как указано здесь, gvfs-mountмогут использоваться другие механизмы. (В моей системе Ubuntu MATE Utopic пакет udisks даже не установлен.)
Элия ​​Каган,
1
В Ubuntu 18.40 есть gioзамена gvfs-mount.
Стадог
13

Когда вы знаете устройство, возможно, используя dfинформацию, как в ответе @rcpao , лучший способ «извлечь» диск, это imho, использовать ту же команду, что и графический интерфейс:

udisksctl unmount --block-device /dev/sdc1

У меня есть скрипт для резервного копирования на диск, который, как я знаю, будет монтироваться /media/romano/movlin, и после резервного копирования я делаю:

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

Здесь mount | grep movlin | cut -d" " -f1будет извлечено устройство, которое смонтировано под меткой «movlin», (будет /dev/sdc1в этом случае), а затем оно будет размонтировано.

Rmano
источник
Действительно ли необходимо вручную запускать syncраньше udisksctl unmount?
Элия ​​Каган,
Возможно нет. Но я совершенно не уверен в правильном поведении кеша в целом; Иногда я чувствую, что USB-накопитель продолжает мигать после отключения ... в течение нескольких секунд. Пусть это говорит, что это пережиток старого sync; sync; sync && poweroff...
Rmano
@Rmano Я много раз видел мигание на предположительно демонтированной флешке (обычно это делается через графический интерфейс под KDE). Я пытаюсь подождать, прежде чем отключить его. Это выглядит (на мой неподготовленный взгляд) как-то не совсем правильно. Еще хуже было бы с флешкой без индикатора активности.
Джо
1
Rmano, так udisksкак больше не присутствует по умолчанию в Ubuntu, udisksctlможет быть предпочтительным решением. udisksctl power-off --block-device /dev/sdcвыключает свет на внешнем USB-накопителе, чтобы он мог подойти в качестве следующей команды, следующей за вами.
H2ONaCl
8
  1. df, чтобы найти точку монтирования вашей флешки.

    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. Размонтируйте, используя / dev / sdc1 или / media / rcpao / SD024-64GB.

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

    или

    rcpao@bun:~$ sudo umount /media/rcpao/SD024-64GB
    [sudo] password for rcpao: 
    rcpao@bun:~$
    
  3. Вы сможете увидеть, как значок извлечения флэш-накопителя исчез в nautilus, как только umount завершит работу.

rcpa0
источник
2
dfвыглядит очень полезным для определения, где находится устройство.
H2ONaCl
2
Для флешки это разумно. Для диска «Безопасное извлечение» также раскручивает его, чего не делает это решение (см. Ответ DaboRoss для этого).
Нейт Элдридж
3
Да, udisks --detachполезно для полного отсоединения дисков после размонтирования.
Даборосс
1
dfи umountявляются стандартными утилитами UNIX. Всегда полезно знать их, потому что они всегда будут работать, в то время как udisksэто зависит от dbus и запущенного udisksd .
Саймон Рихтер
1
@NateEldredge: «Для флэш-накопителя это разумно ...» - на самом деле это не так, и я отказываюсь голосовать по этой причине: в прошлом году я должен был выполнить развертывание приложения и наивно использовал быструю команду вдоль строк из cp /path/to /drive && umount drive. Это сделало 2 флеш-накопителя (временно) недоступными для записи, пока я не понял, что это была команда, которая их вызвала. Запуск "Scan & Repair" на компьютере с Windows исправил диски. Ответ DaboRoss ниже гораздо безопаснее.
Энди Э
3

ejectиз пакета извлечения :

sudo eject /dev/sdX

отображается во umountвсех разделах, и переводите устройство в состояние, которое необходимо удалить, и снова подключите его для повторного подключения.

Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
источник
Для некоторых приложений эта команда извлечения является лучшим способом сделать это. Большинство других ответов «достаточно хороши», но технически значок извлечения на Nautalis не выполняет такие функции, как отключение питания устройства. По моему опыту eject ближе к функциональности самой кнопки eject usb. Если вы хотите избежать sudo, вы можете добавить себя в группу дисков (требуется выход из системы и вход в систему). Команда для этого - «пользовательский диск sudo adduser»
SpiRail