Каков командный аналог “Безопасного извлечения диска”?

Вопрос или проблема

Каков эквивалент команды в командной строке функции Nautilus под названием “Безопасно извлечь носитель”? В частности, я удаляю USB-накопитель.

Команда udisks скорее всего то, что вам нужно.

Хотя sudo umount /dev/sdXY сработает, udisks может сделать это без прав уровня root (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

Если ваш диск не смонтирован или никогда не был смонтирован, просто используйте вторую команду:

udisks --detach /dev/sdb

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

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

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

Чтобы размонтировать и отсоединить диск с помощью 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

Аналогично вышеупомянутому, power-off может быть использован для отсоединения диска, даже если нет смонтированных разделов или если ни один раздел никогда не был смонтирован:

udisksctl power-off -b /dev/sdb

Фактический эквивалент операций монтирования/размонтирования Nautilus – это 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.

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

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), и затем его размонтирует.

  1. ‘ls -l /dev/disk/by-id/’ для поиска имён устройств вашего USB-накопителя и его разделов.

    lrwxrwxrwx 1 root root  9 Сен 16 10:49 usb-PNY_USB_2.0_FD_AAC3170000000954-0:0 -> ../../sdk
    lrwxrwxrwx 1 root root 10 Сен 16 10:49 usb-PNY_USB_2.0_FD_AAC3170000000954-0:0-part1 -> ../../sdk1
    lrwxrwxrwx 1 root root 10 Сен 16 10:49 usb-PNY_USB_2.0_FD_AAC3170000000954-0:0-part2 -> ../../sdk2
    

    /dev/disk/by-id/usb-PNY_USB_2.0_FD_AAC3170000000954-0:0-part1 представляет собой символическую ссылку на /dev/sdk1

  2. Если в вашем дистрибутиве нет /dev/disk/by-id/, вы можете использовать ‘df’ для поиска точки монтирования вашего USB-накопителя.

    myuser@myhost:~$ 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/myuser/SD024-64GB
    /dev/sdk2                         1004        876        128  88% /media/myuser/UEFI_NTFS
    /dev/sdk1                      7970172    5798804    2171368  73% /media/myuser/NTFS
    

Таким образом, /media/myuser/UEFI_NTFS -> /dev/sdk2 <- usb-PNY_USB_2.0_FD_AAC3170000000954-0:0-part2

На этом этапе смотрите ответ daboross для команд размонтирования, отключения питания и отсоединения с использованием ‘udisksctl’ и ‘udisks’ с вашими обнаруженными точками монтирования и именами устройств дисков.

  1. ‘udisksctl unmount -b’ или ‘umount’, используя либо /dev/sdc1, либо /media/myuser/SD024-64GB.

    myuser@myhost:~$ udisksctl unmount -b /dev/disk/by-id/usb-PNY_USB_2.0_FD_AAC3170000000954-0:0-part1
    Размонтировано /dev/sdk1.
    myuser@myhost:~$ udisksctl unmount -b /dev/disk/by-id/usb-PNY_USB_2.0_FD_AAC3170000000954-0:0-part2
    Размонтировано /dev/sdk2.
    

    или

    myuser@myhost:~$ sudo umount /dev/sdc1
    [sudo] пароль для myuser: 
    myuser@myhost:~$
    

    или

    myuser@myhost:~$ sudo umount /media/myuser/SD024-64GB
    [sudo] пароль для myuser: 
    myuser@myhost:~$
    
  2. Вы должны увидеть, как значок извлечения USB-накопителя исчезает в Nautilus, как только umount завершится.

  3. ‘udisksctl power-off -b /dev/sd{letter}{partition_number}’ для выключения диска.

    myuser@myhost:~$ udisksctl power-off -b /dev/disk/by-id/usb-PNY_USB_2.0_FD_AAC3170000000954-0:0
    

Примечания:

  1. Устройство, как правило, имеет формат “/dev/sd{letter}{partition_number}”, где {letter} – это диск, а {partition_number} – это номер раздела на этом диске. Ваш диск может иметь более одного смонтированного раздела, поэтому вам нужно будет размонтировать все смонтированные разделы перед самим диском.

eject из пакета eject:

sudo eject /dev/sdX

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

Ответ или решение

Командная строка как эквивалент функции "Безопасное извлечение диска" в Nautilus

Безопасное извлечение USB-накопителя, как и иные операции по управлению дисками в Linux, может осуществляться через командную строку. Это идеальное решение для тех, кто предпочитает терминальные команды вместо графических интерфейсов или кому требуется автоматизировать процессы.

Использование udisks и udisksctl

Для выполнения операции безопасного извлечения диска обычно используются команды udisks и udisksctl. Эти утилиты позволяют управлять дисковыми устройствами без необходимости получения административных прав. Ниже представлены основные команды, которые помогут вам безопасно извлечь USB-флешку:

  1. Узнать name устройства

    Можно использовать команду lsblk или fdisk -l, чтобы выяснить, как называется ваш USB-накопитель. Например, при использовании lsblk будет выведен список всех доступных блоков устройств:

    lsblk
  2. Отмонтировать диск

    Используя udisks, можно сначала отмонтировать устройство:

    udisks --unmount /dev/sdXY

    В этом случае sdXY — это обозначение вашего устройства, где X — это буква, обозначающая диск, а Y — номер раздела (обычно 1).

    В случае нового пакета udisks2, команда будет выглядеть следующим образом:

    udisksctl unmount -b /dev/sdXY
  3. Извлечение устройства

    После того как диск был отмонтирован, вы можете безопасно отключить его:

    udisks --detach /dev/sdX

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

    udisksctl power-off -b /dev/sdX

Пример использования

Если ваш USB-накопитель подключен как /dev/sdb с разделом /dev/sdb1, вы можете выполнить следующую последовательность команд:

udisksctl unmount -b /dev/sdb1
udisksctl power-off -b /dev/sdb

Дополнительно: Использование gvfs

Если вы используете окружение рабочего стола GNOME и Nautilus, вы можете также применять gvfs для управления монтированными устройствами. Это делается с целью минимизации необходимости в административных привилегиях.

  • Чтобы отмонтировать устройство через gvfs:

    gvfs-mount -u /путь/к/точке/монтирования
  • Для получения списка всех смонтированных устройств:

    gvfs-mount -l

Заключение

Использование командной строки для безопасного извлечения USB-накопителей не только увеличивает ваш контроль над системой, но и позволяет эффективно автоматизировать процессы. Команды udisks и udisksctl являются наиболее подходятщими инструментами для данной операции, обеспечивая простоту и эффективность. Надеюсь, вы нашли эту информацию полезной для своей работы в информационных технологиях.

Оцените материал
Добавить комментарий

Капча загружается...