Unidade de disco rígido USB externa, WD Elements, sem desligar-se

2

Eu possuo um disco rígido externo do Seagate Free Agent nos últimos 4 a 5 anos. Depois de conectado e terminar com as transferências de arquivos, clicarei no menu "Remover com segurança". Em seguida, ele irá desligar-se graciosamente, parando a rotação do disco para dentro. Eu posso sentir isso se tocado. Além disso, a luz de energia também será desligada.

Recentemente, comprei um novo disco rígido externo, o WD Elements. Se eu emitir 'Remover com segurança' para este disco rígido, ele só será desmontado, mas não será desligado, os discos continuarão girando, eu posso sentir quando tocado. Eu também tentei o botão 'Power off the drive' no aplicativo 'Disks' vem com o Ubuntu. Então, também, é só desmontar apenas.

Eu gostaria de ver o disco rígido WD Elements sendo desativado, antes de desconectá-lo manualmente. Eu presumo que desconectar o dispositivo com força antes que ele pare pode reduzir sua vida útil.

Existe algum outro comando ou programa que me ajude a fazer isso?

    
por Junaid 17.03.2015 / 07:06

3 respostas

0

Seguir o script de shell faz o trabalho para mim.

#!/bin/sh

DEVICE=$(udisksctl status | grep -i "WD Elements" | xargs echo | cut -d' ' -f6)

udisks --unmount /dev/$(echo $DEVICE)1
sudo udisksctl power-off --block-device /dev/$DEVICE

Na verdade, é uma combinação de ideias de postagens de @Serg e @Fabby.

    
por Junaid 02.02.2016 / 09:47
1

Você precisa de um pacote adicional que contenha um utilitário para realmente desligar a WD, já que a WD não suporta o Linux pronto para uso:

sudo apt-get install usdisks2
sudo udisksctl power-off --block-device /dev/XdY

onde X e Y são as letras correspondentes ao seu disco.

    
por Fabby 24.03.2015 / 14:26
1

Até agora eu não encontrei uma alternativa simples para "ejetar com segurança" no gerenciador de arquivos, então esta é a minha justificativa para usar a linha de comando aqui.

Primeiro, você precisa descobrir o ID do seu dispositivo de disco rígido externo ou o ID do bloco. Em seguida, você pode usar udisks ou udisksctl para desmontar e, na verdade, desligar o dispositivo. Eu respondi a questão relacionada há algum tempo, quando comecei com o Ubuntu, então eu sugiro que você também se refira a ele. Basicamente, eu uso udisks --unmount /dev/sdb1 && udisks --detach /dev/sdb onde sdb1 é o ponto de montagem e sdb é o disco real.

Você pode usar lsblk e identificá-lo por ponto de montagem e tamanho; Por outro lado, você pode usar udisksctl status . Por exemplo, eu tenho um drive usb Sandisk Cruiser conectado agora. A saída dos comandos é a seguinte:

Como você pode ver, ambos relatam que minha unidade usb está identificada como / dev / sdc. Cada vez que você pugin um dispositivo USB, ele será identificado com letras diferentes, sdb, sdc, sdf e assim por diante, enquanto sda é sempre o seu disco rígido.

Então, no meu caso, eu ejetaria o usb com udisks --unmount /dev/sdc1 && udisks --detach /dev/sdc ou alternativamente com o que Fabby sugeriu. Com o one-liner que eu uso, notei que o ID do dispositivo é preservado, ou seja, se eu ejetar o usd e reconectá-lo, ele ainda dá o dispositivo sdc name.

DICA: você pode usar udisksctl status | grep -i wd para mostrar apenas informações para o disco rígido externo.

Agora, aqui está algo que fiz puramente por diversão, mas você pode achá-lo útil e adaptar-se às suas próprias necessidades. E se pudéssemos escrever um script para fazer o ejetor seguro para nós?

Precisamos deixar o shell saber o id do bloco do disco rígido externo ou do usb. Qual seria a saída deste comando: udisksctl status | grep -i sandisk | xargs echo ? Seria este: SanDisk Cruzer Glide 1.27 2005425573077FA0AA67 sdd , ou em outras palavras, informações sobre o usb, delimitadas por espaços, com o id do dispositivo sendo o último argumento ou o sexto. Aqui podemos usar o comando cut para extraí-lo da seguinte forma: udisksctl status | grep -i sandisk | xargs echo | cut -d' ' -f6

É claro que para você, você teria que usar udisksctl status | grep -i wd | xargs echo e contar qual elemento é o seu id de bloco e, em seguida, usar o número apropriado em cut -d' ' -fx

Em seguida, eu juntei o script remove-usb.sh. Aqui está:

#!/bin/sh

DEVICE=$( udisksctl status | grep -i sandisk | xargs echo | cut -d' ' -f6 )


udisks --unmount /dev/$(echo $DEVICE)1 && udisks --detach /dev/$DEVICE

Em seguida, coloque-o na minha pasta / home / user / bin, chmod + x /home/user/bin/remove-usb.sh. Não se esqueça de ter essa pasta bin a ser adicionada ao seu caminho . Agora você também pode criar um arquivo de área de trabalho ou torna o script executável no gerenciador de arquivos

E aqui está o roteiro em ação

    
por Sergiy Kolodyazhnyy 28.03.2015 / 09:11