O que é o equivalente na linha de comando de "Remover unidade com segurança"?

42

Qual é o equivalente na linha de comando do recurso Nautilus chamado "Remover Unidade com Segurança". Especificamente, estou removendo uma unidade flash USB.

H2ONaCl
fonte
Você pode achar superuser.com/a/430470/176493 útil
daboross

Respostas:

39

O udiskscomando provavelmente é o que você está procurando.

Embora sudo unmount /dev/sdXYfuncione, os udiscos podem fazer isso sem as permissões no nível da raiz (sudo).

Se você possui uma unidade /dev/sdXYmontada, em que X é uma letra que representa seu disco USB e Y é o número da partição (geralmente 1), você pode usar os seguintes comandos para remover a unidade com segurança:

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

Para um exemplo prático, se eu tiver a partição /dev/sdb1montada, eu executaria isso para desmontar e desanexá-la:

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

Originalmente, encontrei isso através desta pergunta: https://superuser.com/a/430470/176493 .

Usando udisks2:

Nas distribuições mais recentes do ubuntu (não tenho certeza de quando a troca ocorreu), o udisks2 é instalado em vez dos udisks.

Espelhando os comandos acima, para desmontar e desanexar um disco com udisks2:

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

Exemplo se minha unidade for /dev/sdb1:

udisksctl unmount -b /dev/sdb1
udisksctl power-off -b /dev/sdb
daboross
fonte
Recebo Detach failed: Not Authorizedquando tento executá-lo sem privilégios de root. (Não é um problema sério, mas uma pequena correção.)
Jonathan Y.
Qual versão do Ubuntu você está executando? Além disso, como você montou a unidade? Se você montou usando permissões de root ou quando efetuou login como outro usuário (em oposição ao Nautilus ou udisks no usuário atual), seu usuário não terá permissão para desmontar o uso udisks.
daboross
2
Sim, montei com sudo, mas também umounted antes de tentar --detach. É uma versão confiável do servidor ubuntu.
Jonathan Y.
Ah, pode ser uma diferença com o servidor Ubuntu então. Desanexar funciona sem permissão de root na minha área de trabalho.
daboross
2
@morhook veja a resposta atualizada com o suporte do udisks2!
187 daboross
21

O equivalente real à operação Nautilus Mount / Unmount é gvfs-mount -m -d /dev/ice /some/directorye gvfs-mount -u /some/directory. Ele usa a mesma API usada pelo Nautilus, sistema de arquivos virtual GIO (gvfs), que fornece ferramentas diferentes para usar vários serviços como pontos de montagem, como smb, NFS, FTP, dispositivos de bloco etc.

Para identificar qual dispositivo você precisa desmontar, basta usar o gvfs-mount -lque deve ser suficiente.

Essa solução possui a peculiaridade de que não requer permissões elevadas, pois tudo é gerenciado pelos serviços umount / gvfsd / polkit, que se assemelham ainda mais à semelhança com o comportamento do Nautilus.

Braiam
fonte
2
Esta parece ser a resposta mais correta. Embora muitos de nós estejam acostumados a pensar udisks(sugerido em outras respostas) como "o modo como" os usuários não raiz montam e desmontam discos removíveis na área de trabalho, conforme indicado aqui, gvfs-mountpodem usar outros mecanismos. (No meu Ubuntu MATE sistema utópico, o pacote udisks é nem mesmo instalado.)
Elias Kagan
1
O Ubuntu 18.40 possui o gioque é o substituto do gvfs-mount.
studog 6/03
13

Depois de conhecer o dispositivo, possivelmente usando as dfinformações da resposta @rcpao , a melhor maneira de "ejetar" o disco é, imho, usando o mesmo comando que a interface gráfica está usando:

udisksctl unmount --block-device /dev/sdc1

Eu tenho um script para fazer um backup em um disco no qual eu sei que será montado /media/romano/movline, após o backup, eu faço:

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

Aqui, mount | grep movlin | cut -d" " -f1extrairá o dispositivo que está montado sob o rótulo "movlin", (seria /dev/sdc1nesse caso) e, em seguida, desmontará.

Rmano
fonte
É realmente necessário executar manualmente syncantes udisksctl unmount?
Eliah Kagan
Provavelmente não. Mas não tenho certeza do comportamento correto do cache em geral; Às vezes sinto que a unidade USB ainda está piscando após a quantidade ... durante alguns segundos. Deixe-o dizer que é um remanescente do antigo sync; sync; sync && poweroff...
Rmano
@Rmano Eu vi o flash em um flash drive supostamente desmontado (geralmente feito através de uma interface gráfica no KDE) muitas vezes. Eu tento esperar antes de desconectá-lo. Isso parece (para meu olho destreinado) como se algo não estivesse certo. Seria ainda pior com uma unidade flash sem luz indicadora de atividade.
Joe
1
Rmano, já que udisksnão está mais presente por padrão no Ubuntu, udisksctlpode ser uma solução preferida. udisksctl power-off --block-device /dev/sdcapaga a luz em uma unidade flash USB externa, para que possa ser o próximo comando a seguir o seu.
H2ONaCl
8
  1. df para encontrar o ponto de montagem da sua unidade flash.

    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. Desmonte usando / dev / sdc1 ou / media / rcpao / SD024-64GB.

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

    ou

    rcpao@bun:~$ sudo umount /media/rcpao/SD024-64GB
    [sudo] password for rcpao: 
    rcpao@bun:~$
    
  3. Você poderá ver o ícone de ejeção da unidade flash desaparecer no nautilus assim que a quantidade terminar.

rcpa0
fonte
2
dfparece muito útil para identificar onde está o dispositivo.
H2ONaCl
2
Para uma unidade flash, isso é razoável. Para uma unidade de disco, o "Remover com segurança" também a reduz, o que esta solução não faz (consulte a resposta da DaboRoss para isso).
Nate Eldredge
3
Sim, udisks --detaché útil para desconectar unidades completamente após desmontar.
Daboross
1
dfe umountsão utilitários padrão do UNIX. É sempre bom conhecê-los, porque eles sempre funcionam, enquanto udisksdepende do dbus e de um udisksd em execução .
Simon Richter
1
@NateEldredge: "Para uma unidade flash, isso é razoável ..." - na verdade, não é e estou votando negativamente por esse motivo: no ano passado eu tive que fazer um aplicativo qa deploy e ingenuamente usei um comando rápido ao longo das linhas de cp /path/to /drive && umount drive. Isso transformou duas unidades flash (temporariamente) em graváveis ​​até que eu percebi que era o comando que a causou. A execução de "Digitalizar e reparar" em uma máquina Windows corrigia as unidades. A resposta do DaboRoss abaixo é muito mais segura.
Andy E
2

ejectdo pacote de ejeção :

sudo eject /dev/sdX

aparece em umounttodas as partições e coloque o dispositivo em um estado que você deve remover e reconecte-o para remontar.

Ciro Santilli adicionou uma nova foto
fonte
Para algumas aplicações, este comando ejetar é a melhor maneira de fazê-lo. A maioria das outras respostas é "boa o suficiente", mas tecnicamente o ícone Ejetar no Nautalis não faz coisas como desligar o dispositivo. Na minha experiência, o ejetar está mais próximo da funcionalidade do próprio botão ejetar usb. Se você deseja evitar o sudo, pode se adicionar ao grupo de discos (requer logout e logon). O comando para isso é "sudo adduser user disk"
SpiRail 14/02