Conheça este utilitário de linha de comando para controlar discos no Linux

Unidades de armazenamento externas ou internas podem ser acessadas e controladas com o utilitário de linha de comando (CLI) udisksctl.
O programa permite realizar diversas operações avançadas nas unidades conectadas.

Obter informações, verificar o status, monitorar unidades, montar/desmontar dispositivos, travar/destravar unidades criptografadas, desligar completamente ou configurar o SMART etc. — são algumas das tarefas que podem ser executadas com este pequeno utilitário.

Abra um terminal e me acompanhe nas experiências que seguem.

Como obter informações sobre um dispositivo de armazenamento conectado ao meu computador

O utilitário tem autocompletar para facilitar a digitação, portanto use a tecla TAB para tornar mais eficiente o uso dele.

A opção status permite ver as unidades atualmente conectadas ao seu sistema:


udisksctl status

MODEL                     REVISION  SERIAL               DEVICE
--------------------------------------------------------------------------
Hitachi HTS545050A7E380   GG2OA6C0  TE85123RJG3K4W       sda     
SanDisk SSD i100 24GB     11.56.04  123200143249         sdb     
WDC WD5000BPVT-22HXZT1    01.01A01  WD-WXD1A41D1154      sdc     
TOSHIBA MK5059GSXP        GT001L    51NAP03LT            sdd     
SanDisk Cruzer Blade      1.26      4C530699960225111162 sde

Como você pode ver, acima, as informações obtidas e mostradas pelo utilitário são bem detalhadas.

Use a opção info para obter informações específicas sobre um objeto (lembre-se de telcar TAB para completar a digitação):


udisksctl info --drive SanDisk_Cruzer_Blade_4C530699960225111162

A opção dump irá mostrar uma quantidade de dados muito maior, sobre todas as unidades possíveis:


udisksctl dump

Os dados detalhados das unidades podem ocupar diversas páginas de terminal. Use a tecla de espaçamento, para passar as páginas e a tecla Q para sair do modo de visualização do comando.

Sugiro usar o comando grep para obter informações específicas:

udisksctl dump | grep Hitachi
    Drive:                      '/org/freedesktop/UDisks2/drives/Hitachi_HTS545050A7E380_TE85123RJG3K4W'
    Id:                         by-id-ata-Hitachi_HTS545050A7E380_TE85123RJG3K4W
    Symlinks:                   /dev/disk/by-id/ata-Hitachi_HTS545050A7E380_TE85123RJG3K4W
    Drive:                      '/org/freedesktop/UDisks2/drives/Hitachi_HTS545050A7E380_TE85123RJG3K4W'
    Id:                         by-id-ata-Hitachi_HTS545050A7E380_TE85123RJG3K4W-part1
    Symlinks:                   /dev/disk/by-id/ata-Hitachi_HTS545050A7E380_TE85123RJG3K4W-part1
    Drive:                      '/org/freedesktop/UDisks2/drives/Hitachi_HTS545050A7E380_TE85123RJG3K4W'
    Id:                         by-id-ata-Hitachi_HTS545050A7E380_TE85123RJG3K4W-part2
    Symlinks:                   /dev/disk/by-id/ata-Hitachi_HTS545050A7E380_TE85123RJG3K4W-part2
/org/freedesktop/UDisks2/drives/Hitachi_HTS545050A7E380_TE85123RJG3K4W:
    Id:                         Hitachi-HTS545050A7E380-TE85123RJG3K4W
    Model:                      Hitachi HTS545050A7E380

Para monitorar uma unidade use a opção monitor, seguida do nome do dispositivo:


udisksctl monitor SanDisk_Cruzer_Blade_4C530699960225111162 
Monitoring the udisks daemon. Press Ctrl+C to exit.
14:55:24.735: The udisks-daemon is running (name-owner :1.1046).

A unidade, acima, está desmontada e “dormente”. Se houver alguma atividade ligada a ela, o terminal irá mostrar.
Quando quiser terminar o programa tecle Ctrl+C.

Como trabalhar com unidades criptografadas usando o udisksctl

As opções lock e unlock se referem às unidades alvo de criptografia.
No exemplo, abaixo, uso um drive USB criptografado com LUKS.

Para destravar, use unlock e forneça a senha:


udisksctl unlock -b /dev/sde

Passphrase: 
Unlocked /dev/sde as /dev/dm-0.

Para travar novamente, use lock:


udisksctl lock -b /dev/sde

Locked /dev/sde.

O comando pode ser útil dentro de scripts de backup que necessitem de alguma criptografia, para manter os seus dados ainda mais seguros.

Como transferir arquivos entre o Kindle e seu computador

Há basicamente 2 formas de transferir fácil os arquivos para o seu leitor digital Kindle.
Você pode usar um cabo USB ou enviar através do email.

Este texto se baseia na oitava geração do Kindle básico.
No lado do computador, eu uso o Linux (Debian 9 Stretch). Digo isso apenas por que as imagens podem ser um pouco diferentes das que você tem aí, contudo, os procedimentos são os mesmos.

Como conectar e transferir arquivos entre o computador e o Kindle via USB

Este método é ótimo para quem deseja fazer backup de seus arquivos contidos no Kindle também, caso tenha razões para não confiar muito no backup automático feito na nuvem.
Comece por conectar o cabo ao Kindle e ao PC/laptop.
kindle usb light power button connect
Ao conectar, o Kindle entra no USB Drive Mode.
Este é o modo padrão e permite, enquanto carrega, fazer eventuais transferências de arquivos.
Use o gerenciador de arquivos do seu sistema para acessar o Kindle como um drive comum.
kindle no gerenciador de arquivos

Acesse a pasta ‘documents’, dentro do Kindle, onde também são armazenados os arquivos adquiridos através da loja da Amazon ou baixados da Internet.
Se quiser que algum documento de texto seja acessível de dentro do navegador do Kindle, transfira-o para este local.
kindle gerenciador de arquivos

Nativamente, os formatos suportados pelo Kindle são AZW, AZW3, TXT, PDF, unprotected MOBI e PRC.
Outros padrões também podem ser lidos, como HTML5/CSS3, DOC, DOCX e EPUB.
Além deles, a plataforma suporta arquivos de imagens JPEG, GIF, PNG, e BMP.

Quando terminar de transferir arquivos, desmonte ou ejete o dispositivo, antes de desconectar o cabo.

A desconexão inadequada do Kindle pode ocasionar danos aos seus arquivos. Fique atenta(o).


Leia outras dicas sobre o Kindle, neste site.

Como obter detalhes dos dispositivos USB no seu sistema

Há inúmeras ferramentas, no Linux, disponíveis para os usuários obterem informações sobre as conexões USB presentes no seu sistema.
Neste post, vou falar de algumas, que podem ser úteis para conseguir informações sobre dispositivos conectados a uma destas portas.
O utilitário usb-devices pode ser usado para exibir na tela do terminal detalhes, com bastante informações, sobre BUSes USB no seu sistema, mesmo que não haja algo conectado.
Se houver, contudo, ele irá mostrar informações sobre o device conectado.
linux usb devices

O usb-devices é um shell script (bash) desenvolvido para exibir informações e detalhes dos “buses” USB presentes no sistema, bem como, dos dispositivos anexados

A saída do script é similar ao conteúdo do arquivo de sistema usb/devices que, usualmente, fica sob o diretório /proc/bus:

less /proc/bus/input/devices
I: Bus=0019 Vendor=0000 Product=0001 Version=0000
N: Name="Power Button"
P: Phys=PNP0C0C/button/input0
S: Sysfs=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:10/PNP0C0C:00/input/input0
U: Uniq=
H: Handlers=kbd event0 
B: PROP=0
B: EV=3
B: KEY=10000000000000 0

...


I: Bus=0003 Vendor=04f2 Product=b1d8 Version=5563
N: Name="1.3M WebCam"
P: Phys=usb-0000:00:1a.0-1.1/button
S: Sysfs=/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.1/1-1.1:1.0/input/input13
U: Uniq=
H: Handlers=kbd event13 
B: PROP=0
B: EV=3
B: KEY=100000 0 0 0

Outro arquivo do sistema, relacionado às informações de dispositivos ou sistemas de arquivos USB (caso estejam montados) é o /sys/kernel/debug/usb/devices. Este, contudo, nem sempre está disponível para usuários sem privilégios administrativos:

cat /sys/kernel/debug/usb/devices
cat: /sys/kernel/debug/usb/devices: Permission denied

O script usb-devices não requer privilégios administrativos para retornar informações úteis sobre os dispositivos USB conectados ao seu hardware.
Como limitação, o script só lista as interfaces ativas — aquelas marcadas com um ‘*’ no arquivo /sys/kernel/debug/usb/devices:

sudo cat /sys/kernel/debug/usb/devices | grep "*"
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
C:* #Ifs= 3 Cfg#= 1 Atr=a0 MxPwr=100mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=01 Driver=usbhid
I:* If#= 1 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=00 Prot=00 Driver=usbhid
I:* If#= 2 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=02 Driver=usbhid
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=500mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=0e(video) Sub=01 Prot=00 Driver=uvcvideo
I:* If#= 1 Alt= 0 #EPs= 0 Cls=0e(video) Sub=02 Prot=00 Driver=uvcvideo

Use o lsusb, para obter informações mais enxutas

Os métodos listados acima, podem trazer informações detalhadas voltadas para desenvolvedores.
O utilitários lsusb é mais útil para quem deseja um conjunto de informações mais sucinto:

lsusb 
Bus 002 Device 003: ID 413c:2501 Dell Computer Corp. 
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 04f2:b1d8 Chicony Electronics Co., Ltd 
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Para obter uma relação mais detalhada, use a opção ‘–verbose’:

lsusb --verbose | less 

Se for executado com privilégios administrativos, o lsusb poderá exibir mais informações.
Como sempre, use o comando grep para filtrar os dados de acordo com suas necessidades:

sudo lsusb --verbose | grep -i bcdusb

O comando acima, irá exibir as versões USB disponíveis no seu sistema.
Veja o que obtive no meu computador de testes (ele é velhinho…):

  bcdUSB               2.00
  bcdUSB               2.00
  bcdUSB               2.00
  bcdUSB               2.00
  bcdUSB               2.00
  bcdUSB               2.00
  bcdUSB               2.00
  bcdUSB               2.00
  bcdUSB               2.00

Como obter informações sobre dispositivos USB em ambiente gráfico

Quem prefere o ambiente gráfico, pode instalar o usbview:

sudo apt install usbview

Este aplicativo irá retornar um conjunto de informações mais extenso, se for executado com privilégios administrativos:

sudo usbview

usbview
O utilitário usbview exibe as informações obtidas de /sys/kernel/debug/usb/devices — por isto, requer ser executado como super usuário.

Conheça o usbhid-dump

O utilitário usbhid-dump lança o stream de dados vindos de dispositivos USB.
O padrão é monitorar o fluxo de todos os dispositivos.
Mas você pode restringir a um só.
No exemplo que segue, o utilitário irá exibir o fluxo vindo do teclado USB (se você tiver um).
Tenha cuidado: você vai perder o controle do teclado USB, ao executar este comando:

sudo usbhid-dump -es

Para interromper o aplicativo, tecle ‘Ctrl + C’ no teclado nativo do seu notebook.
dump stream from mouse and keyboard to screen
O que este programa faz é desconectar os drivers do kernel, relacionados ao(s) dispositivo(s) em questão — assim, nenhum outro programa vai conseguir captar as entradas a partir daquele(s) dispositivo(s).
Se você não conseguir interromper a desconexão, com ‘Ctrl + C’, basta aguardar o tempo padrão de 60 segundos, para recuperar o controle sobre seu dispositivo USB.
Leia mais em Como obter mais informações sobre as portas USB no Linux.

Como acessar dados do smartphone Android via USB

O acesso a dispositivos Android via USB segue alguns padrões e tem algumas opções ou parâmetros que, por vezes, confundem os usuários iniciantes.
Neste texto, vou abordar as formas mais comuns de acessar um smartphone (ou tablet) Android, a partir do PC, através de uma conexão USB.
Antes de começar, vou esclarecer o leitor sobre os equipamentos e os softwares envolvidos nos meus testes.
marshmallow girl android logo stay puft
No lado do smartphone, trata-se de um Motorola Moto G 3, com o Android 6.0 Marshmallow.
Mesmo que o seu smartphone não seja desta marca e/ou modelo, as informações deste texto são genéricas o suficiente para cobrir a grande maioria dos dispositivos.
Quero acrescentar que o aparelho usa o cartão SD no modo interno de armazenamento — o acesso à memória interna não é possível nesta configuração, portanto.
Do lado do PC, estou usando um notebook com o Debian Linux 8.3 Jessie e a interface padrão Gnome 3 — muito semelhante ao Ubuntu.
Ainda que você use outro sistema operacional, acredito que este post possa ser útil para você, caso você esteja tendo dificuldades básicas para entender como conectar o celular ao PC.

As diferentes formas de acessar o smartphone Android via USB

Do lado do smartphone Android, é importante que você selecione o modo de conexão — o seu computador vai reagir a esta escolha.
Para isto, arraste a barra de status de cima para baixo e toque no ícone de opções de conexão USB, conforme você pode ver na tela 1, abaixo:
android-conexao-usb
Em seguida, você deve selecionar uma das opções de conexão USB, na tela 2.
As opções são usar USB para:

  1. Carregamento apenas — quando você não deseja conexão alguma e quer apenas dar uma carga no seu aparelho.
    O artigo Como melhorar a eficiênica da carga da bateria do seu celular ou tablet aborda este assunto com mais profundidade.
  2. Transferir arquivos (MTP) — O Media Transfer Protocol ou protocolo de transferência de mídia permite que o sistema operacional do seu PC inquira o dispositivo Android e ele responde, oferecendo a lista de arquivos e executando as ações pedidas.
    Este protocolo não permite que o Windows, o Linux ou o Mac tenha acesso direto ao conteúdo do dispositivo Android.
    Esta abordagem é que permite que você possa acessar um cartão formatado (em ext4) e criptografado de qualquer sistema operacional — o que inclui o Windows, que não tem suporte a este sistema de arquivos mais avançado.
    Você deve usar quase sempre este protocolo — principalmente se quiser ter mais liberdade de escolha na transferência de arquivos.
  3. Transferir fotos (PTP) — O Picture Transfer Protocol é voltado para fazer a transferência mais eficiente de imagens e vídeos.
    O MTP é um protocolo baseado no PTP, com a adição de recursos.
  4. MIDI — esta opção de conexão é voltada para uso com teclados externos e outros dispositivos, como amplificadores, microfones, speakers etc.

O ajuste do lado do PC

Do lado do PC, os ajustes são mínimos.
O máximo que você precisa fazer é clicar para montar o dispositivo — quando isto não for automático.
montar e abrir dispositivo USB no Gnome 3
Com a minha configuração (no Android), só será possível enxergar os dados através dos protocolos MTP e PTP.
Ao selecionar o segundo protocolo de acesso (no telefone), as pastas específicas de imagens e vídeos serão apresentadas.
Captura de tela de 2016-03-17 16:49:26
O protocolo MTP, em dispositivos que usam o cartão no modo portátil ou portable mode, irá exibir uma tela com acesso à memória de armazenamento interno e ao cartão SD.
Em dispositivos com o cartão formatado como “adopted mode“, internal mode ou modo interno, só é possível acessar o cartão.
Acesso ao cartão de memória via USB

Como determinar a velocidade de seu memory card ou pendrive no Linux com o comando dd

Fazer uma análise do desempenho ou da performance de um dispositivo de armazenamento removível (cartão de memória, drive flash, pendrive etc) é bastante fácil.
Neste texto vou mostrar como usar o comando dd, como ferramenta padrão de qualquer distro Linux, para fazer um benchmarking nos seus dispositivos.
Este tipo de resultado pode ser interessante obter toda vez em que você precisar decidir qual dispositivo quer usar para instalar uma distro Linux Live, por exemplo — onde você vai precisar ter o máximo de desempenho.

A minha história é a seguinte: estou querendo revitalizar um dos meus notebooks antigos, que está sem o disco rigido.
Para isto, vou usar uma ou duas distribuições GNU/Linux Live rodando do pendrive ou do cartão de memória e vou optar por instalá-las nos dispositivos mais rápidos que eu tiver — ou, pelo menos, nos menos lerdos.
Os pendrives usados neste teste são antigos e a máquina conta apenas com 2GB de memória RAM.
Uma quantidade de memória RAM inferior a 3 GB é, na minha opinião, desestimulante para tentar rodar o Linux inteiramente na RAM — para isto, basta usar o parâmetro boot=toram na inicialização do GRUB, caso você queira tentar.
Se você tem também uma máquina antiga à qual gostaria de dar mais algum tempo de sobrevida (de 6 meses a 1 ano, ou mais… ), recomendo investir na compra de um drive em estado sólido SSD.
Além de ganhar velocidade, quando a máquina velha parar de funcionar definitivamente, você pode usar seu SSD em outra máquina.

Não esqueça de fazer backup completo dos dados armazenados nos dispositivos — os procedimentos descritos neste texto ocasionam perda de dados.
Seguem as descrições de cada metodologia usada.

Como determinar a velocidade de leitura e escrita de um dispositivo de armazenamento com o comando dd

O comando dd, no GNU/Linux é um dos comandos tradicionais. Vale a pena conhecê-lo melhor — trata-se de um “canivete suíço”, para realizar as mais variadas tarefas.
Quando terminar o teste, vou usá-lo para instalar as minhas distribuições favoritas dentro do pendrive — clique aqui, para ver como é fácil fazer isto.
O comando dd simplesmente copia dados de um lugar (indicado pelo parâmetro if=) para outro (of=).
Se você faz uso de um sistema de arquivos com caching, tenha em mente que este fator irá influenciar o teste e você poderá obter resultados irreais.
Para tentar driblar o cache, certifique-se de usar valores significativamente altos para o parâmetro ‘count’ do comando dd.
Isto irá forçar o sistema operacional a gravar os dados direto no dispositivo.
Minha sugestão é usar valores acima de 50Kb.
O teste com o dd consiste em enviar dados (aleatórios) para serem escritos direto no dispositivo conectado, com alguns parâmetros adicionados. Veja um exemplo:

sudo dd if=/dev/zero of=/dev/sdd bs=1M count=10241024+0 registros de entrada
1024+0 registros de saída
1073741824 bytes (1,1 GB) copiados, 229,927 s, 4,7 MB/s

Para o propósito deste post, a taxa de leitura do dispositivo terá mais impacto na performance.
Para obter a taxa de leitura sem a influência do cache, execute o seguinte comando antes de cada teste:

sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches"

Se quiser saber mais sobre o procedimento de limpar a memória cache no Linux, clique aqui.
Para testar a taxa de leitura, use qualquer arquivo dentro do pendrive em ‘if=’:

dd if=/media/pendrive/teste.log of=/dev/null bs=4k
51200+0 registros de entrada
51200+0 registros de saída
419430400 bytes (419 MB) copiados, 25,1704 s, 16,7 MB/s

Limpar o cache é opcional — mas, se você não fizer isto, vai obter uma taxa de leitura na casa dos GB/s, da qual você não irá usufruir na realidade.

O padrão USB 2.0 tem uma taxa máxima de 480 Mbits/s ou 60 Mbytes/s, teoricamente.
Em função de várias restrições, contudo, a taxa máxima de transferência acaba sendo 280 Mbits/s ou 35 Mbytes/s.
Além disto, a taxa de transferência vai depender da qualidade do seu dispositivo USB, além de outros fatores.

Como última dica, se você está testando cartões de memória para usar no Raspberry Pi e pretende usar aplicações/servidor de banco de dados MySQL ou PostgreSQL, use um blocksize = 8k. Assim:

dd if=/media/pendrive/teste.log of=/dev/null bs=8k