Монтируем сменные накопители в консоли Linux
prolinux
В рамках этого блога я уже рассказывал о монтировании сменных накопителей в операционной системе с Linux средствами файлового менеджера Thunar. Увы, жизнь не всегда бывает яркой и цветной, в ней случаются и тёмные полосы. В этом обзоре я покажу приёмы работы со сменными накопителями в голой текстовой консоли Linux, когда в распоряжении пользователя нет красочных окошек и цветных пиктограмм в них, а указатель мыши, даже если он есть, становится беспомощным и ненужным.
О текстовой консоли
Текстовая консоль в операционных системах с Linux является очень мощным, удобным и продвинутым инструментом, и она существует всегда, даже если конечный пользователь не имеет о ней ни малейшего представления. В текстовой консоли мы работаем обычными текстовыми командами. Это очень удобно, когда вы владеете методом слепого набора текста на клавиатуре. Текстовая консоль даёт возможность выполнять все рутинные действия не снимая пальцы рук с основной позиции на клавиатуре. При этом отпадает необходимость возить по экрану усталый, неповоротливый, но вездесущий указатель мыши.
В текстовой консоли Linux с помощью специальных программ, их обычно называют консольными, можно выполнять практически любые действия, которые мы обычно выполняем с помощью графических, оконных приложений. При этом, чтобы чувствовать себя комфортно, необходимо иметь достаточный уровень теоретической подготовки, знать нужные для тех или иных действий команды и ключи к ним. Это не всегда просто.
Монтирование сменных накопителей — это достаточно рутинная операция, и она, в том числе, может быть без особого труда выполнена с помощью консольных текстовых команд. Далее в этой демонстрации я покажу основные приёмы работы со сменными накопителями в консоли, обращу внимание на важные, ключевые моменты и продемонстрирую все действия выполнением команд и соответствующими снимками экрана. Не переключайте канал своего телевизора, будет интересно...
Идентификация устройства в системе
В моём хозяйстве имеется стандартный USB-flash накопитель с маркировкой 32GB
на корпусе устройства. Вставляю это устройство в разъём своей вычислительной машины. Давайте представим, что на компьютере отсутствуют иксы, есть только текстовая консоль. И что дальше..?
Абсолютно все устройства в операционных системах Linux являются файлами в системном каталоге /dev
(сокращение от английского слова device), и чтобы обратиться к конкретному устройству из всего списка доступных операционной системе аппаратных средств, нужно знать идентификатор этого устройства — имя представляющего устройство файла в /dev
.
Накопители информации, каковым и является моя стандартная флешка, классифицируются как блочные устройства, а всю информацию о всех доступных операционной системе блочных устройствах можно без труда получить с помощью команды lsblk. Поскольку моя машина на текущий момент располагает парой блочных устройств (стационарный диск и флешка), будет полезно кастомизировать вывод lsblk, и получить в этом выхлопе способ подключения устройства. Команда выглядит следующим образом.
$ lsblk -o NAME,TRAN,FSTYPE,SIZE,FSUSED,MOUNTPOINTS
В этой команде я попросил программу показать имя устройства в каталоге /dev
, способ подключения устройства к компьютеру, тип файловой системы на разделах устройства, если таковые определены, размер дискового пространства устройства и размер доступного дискового пространства на его разделах, а также все точки монтирования. Внимание на снимок экрана.
Как видно на снимке экрана, в своём выхлопе lsblk показала, что подключенное в USB-разъём устройство имеет идентификатор sdb
, на этом устройстве выделено два раздела одинаковых размеров, один из разделов имеет файловую систему exfat, а второй — ext4. Ни один из разделов устройства не имеет точки монтирования. Это и есть моя стандартная флешка, и теперь я знаю, что обратиться к ней я могу по адресу /dev/sdb
, а к её разделам — /dev/sdb1
и /dev/sdb2
соответственно.
Монтирование файловой системы раздела устройства
Все читали документацию на официальных сайтах Ubuntu, все знают, что для монтирования файловых систем в операционных системах с Linux есть специальная команда mount. Но, прежде чем стремя голову бросаться в омут, я предлагаю на секундочку остановиться и задуматься о следующем:
-
mount — это инструмент системного администратора и предполагает наличие у пользователя прав root;
-
У mount очень длинная man-страница, которую будет очень полезно прочитать хоть раз в своей жизни до конца, даже если очень не хочется;
-
Чтобы результат монтирования не расстроил конечного пользователя, mount требует указать адрес монтируемого раздела, опции и параметры монтирования, адрес точки монтирования.
Следует простой вывод... А нам это надо?
В операционных системах с Linux кроме mount, существует ещё один инструмент для монтирования файловых систем сменных накопителей, это программа udisksctl. Этот инструмент не требует прав суперпользователя, не требует детально расписывать опции и параметры монтирования, он даже точку, куда будет смонтировано устройство, определяет самостоятельно. Заманчиво?
Установить udisksctl в операционную систему Debian и любой его клон можно при помощи пакетного менеджера apt следующей командой.
$ sudo apt install -y udisks2
Итак, у меня есть адрес устройства в системном каталоге /dev
, я знаю, что на разделе есть файловая система, неважно какая, и я хочу воспользоваться этой файловой системой и скопировать на свою флешку пару самых обычных файлов. Монтирую раздел следующей командой.
$ udisksctl mount -b /dev/sdb1
На снимке экрана выше видно, что в результате выполнения этой команды ничего необычного не произошло, программа отдала в терминал свой отчёт о том, какое устройство в какой каталог смонтировано. В данном случае раздел флешки смонтирован в каталог /media/jazz/fatfs
.
Откуда появилась точка монтирования с таким адресом? Понятно, что /media
— это специальный системный каталог, jazz
— это вложенный в него каталог с именем текущего пользователя системы. А откуда взялся каталог fatfs
? Чтобы ответить на этот вопрос, давайте ещё раз сделаем вызов lsblk со следующими параметрами.
$ lsblk -o NAME,LABEL,FSTYPE,SIZE,FSUSED,MOUNTPOINTS
Как видно на снимке экрана выше, файловая система раздела sdb1
моей флешки имеет метку fatfs
, программа создала каталог с этим именем и в него смонтировала эту файловую систему. В результате чего, у раздела появилась точка монтирования, которую мы и видим в выхлопе lsblk. А если бы метки у раздела не было, то был бы создан каталог с именем, совпадающим с UUID раздела, длинным и очень неудобным. Именно поэтому я при форматировании своих дисков всегда присваиваю разделам метки.
Копируем файлы на флешку
Я монтировал раздел своей флешки не просто так. Мне необходимо скопировать на него пару файлов из домашнего каталога, чтобы перенести их на другой компьютер вне сети. У меня есть адрес расположения файлов, их имена и адрес точки монтирования раздела моей флешки. Скопировать файлы из одного расположения в другое мне поможет команда cp.
$ cp ~/done/kino/kino.* /media/jazz/fatfs/
Набираю команду в терминале и жму enter
.
На симке экрана выше видно, что программа начала копировать файлы из одного каталога в другой, при этом терминал занят, и в нём отсутствует приглашение командной строки. Следует дождаться завершения процесса копирования файлов. Поскольку флешка является достаточно медленным устройством, в зависимости от размеров копируемых файлов, процесс копирования может занять некоторое время.
Убедиться, что файлы на устройстве появились мне поможет команда ls, с её помощью можно посмотреть оглавление любого каталога файловой системы. Меня интересует оглавление каталога точки монтирования моей флешки.
$ ls -1 /media/jazz/fatfs/
В этой команде ключ -1
задаёт способ вывода в терминал — в один столбик.
Как видно на снимке экрана, в точке монтирования теперь присутствуют два файла, а мне нужно правильно извлечь устройство из разъёма, чтобы не потерять ни файлы, ни флешку.
Извлекаем флешку из разъёма правильно
После того, как я скопировал необходимые мне файлы на устройство, мне нужно правильно извлечь флешку из разъёма. Сменные накопители — устройства довольно хрупкие и ранимые, если просто выдернуть штекер из разъёма, можно потерять данные и испортить девайс. Поэтому для начала следует выполнить следующие действия.
Устройство, одна из файловых систем которого имеет точку монтирования, нельзя извлекать из разъёма, его нужно отмонтировать. Опять прибегаю к инструментарию udisksctl, команда будет выглядеть следующим образом.
$ udisksctl unmount -b /dev/sdb1
На снимке экрана мы опять видим отчёт программы о выполненном действии, раздел отмонтирован. Но извлечь устройство из разъёма всё ещё нельзя, потому что оно всё ещё присутствует в системе и на него подаётся питание, в этом можно убедиться ещё одним вызовом lsblk. Снять с устройства питание можно следующей командой.
$ udisksctl power-off -b /dev/sdb
Здесь следует обратить внимание, что я указал в этой команде, в её ключе -b
адрес самого устройства, а не раздела на нём. У этой команды не будет никакого выхлопа в терминал, внимание на снимок экрана.
Но если ещё раз сделать вызов lsblk, то мы увидим, что в системе осталось одно единственное блочное устройство, это стационарный диск моего старенького лэптопа.
Флешка, хоть до сих пор и остаётся в разъёме, операционной системе больше недоступна, питания на ней нет, а это значит, что теперь её можно извлечь без опасений, ничего страшного с ней уже не произойдёт.
Все цели этой демонстрации достигнуты.
Выводы и умозаключения
Монтирование сменных накопителей — это достаточно рутинная операция, и она, в том числе, может быть без особого труда выполнена с помощью консольных текстовых команд. При этом оператору не придётся снимать пальцы рук с основной позиции на клавиатуре.
Сменные накопители являются блочными устройствами, и чтобы подключить такое в текстовой консоли, необходимо идентифицировать устройство и определить его имя — имя файла в системном каталоге /dev
.
Для копирования, переноса и удаления файлов существуют специальные консольные утилиты (cp, mv, rm), — составляющие пакета coreutils, чтобы работать со сменными накопителями в консоли Linux, необходимо уметь ими пользоваться.
Сменные накопители — достаточно хрупкие и ранимые устройства, после окончания работы с ними не нужно спешить и сразу вынимать штекер из разъёма. Сначала следует отмонтировать файловую систему раздела устройства, а затем отключить питание с разъёма. Только после этого можно вынимать штекер.