Добавить в корзинуПозвонить
Найти в Дзене
Герман Геншин

Секретные трюки Linux: мгновенное подключение и отключение любых накопителей через терминал — это должен уметь каждый!

В Linux и похожих системах (например, macOS) управлять файловыми системами чаще всего удобно через терминал: можно подключать, отключать и даже переподключать диски, как вам заблагорассудится. Это действительно мощно — объясню, как всё работает в реальности. В отличие от Windows, где каждому разделу дают отдельную букву (например, C: или D:) и ветку папок, в Linux, macOS и прочих UNIX-подобных системах всё устроено иначе: для всех накопителей строится единое дерево файлов. Каждый новый диск просто "встраивается" в эту общую структуру — и становится её частью. Точка подключения называется точкой монтирования и выглядит как обычная папка, через которую можно просматривать содержимое устройства. Многие файловые системы подключаются автоматически при загрузке или по мере появления новых накопителей. Опытные администраторы часто отключают автоматическое монтирование — чтобы знать, что и когда появляется в системе. Это значит, что любые новые носители придётся подключать вручную. А ручное м
Оглавление

Быстрая навигация по разделам

В Linux и похожих системах (например, macOS) управлять файловыми системами чаще всего удобно через терминал: можно подключать, отключать и даже переподключать диски, как вам заблагорассудится. Это действительно мощно — объясню, как всё работает в реальности.

Как устроена файловая система в Linux

В отличие от Windows, где каждому разделу дают отдельную букву (например, C: или D:) и ветку папок, в Linux, macOS и прочих UNIX-подобных системах всё устроено иначе: для всех накопителей строится единое дерево файлов. Каждый новый диск просто "встраивается" в эту общую структуру — и становится её частью. Точка подключения называется точкой монтирования и выглядит как обычная папка, через которую можно просматривать содержимое устройства.

Многие файловые системы подключаются автоматически при загрузке или по мере появления новых накопителей. Опытные администраторы часто отключают автоматическое монтирование — чтобы знать, что и когда появляется в системе.

Это значит, что любые новые носители придётся подключать вручную. А ручное монтирование — это свобода: сам определяешь, где именно появится папка с файлами накопителя и с каким доступом (только чтение, либо чтение/запись).

Причина не столь важна — главное самому держать всё под контролем. Команды mount, umount и remount дают полный контроль над внешними и виртуальными устройствами в Linux. Это азбука каждого, кто любит разбираться в системе.

-2

8 простых способов обмена файлами между Linux и Windows

От SFTP до Samba и HTTP — выбирайте то, что подходит именно вам.

Как проверить подключённые файловые системы с помощью mount

У mount есть куча опций, но чтобы увидеть весь список монтированных файловых систем, ничего указывать не нужно — достаточно просто написать в терминале mount и нажать Enter:

-3

mount выведет все подключённые сейчас файловые системы с деталями.

-4

Данных получится много — ориентироваться бывает непросто.

Чтобы отсеять лишнее, можно попросить mount показать только определённые типы файловых систем с помощью опции -t (type).

-5

Например, если указать tmpfs, вы увидите только временные файловые системы — они живут в оперативной памяти, а не на диске (отсюда и название tmp, временные).

Можно подставить интересующий тип (например, ext4 или vfat), и список сразу станет короче и понятнее.

На моём тестовом ПК единственная файловая система ext4 расположена на устройстве sda и примонтирована к корню (/).

Заодно здесь отображаются и прочие ключевые параметры точки монтирования.

Использую df, чтобы посмотреть подключённые разделы

Команда df тоже показывает список подключённых файловых систем и их точки монтирования.

Если использовать df без параметров — снова будет огромный список, особенно на Ubuntu, где для каждого snap-приложения появляется свой отдельный squashfs-раздел.

Чтобы их скрыть (или отсечь любые другие), пригодится опция -x (exclude):

-6

В результате останется только необходимое: разделы, их имена, объём, свободное место и путь для доступа.

Как перемонтировать все разделы из fstab

Все разделы, которые монтируются автоматически при старте, прописаны в файле /etc/fstab (file system table).

С помощью mount можно принудительно "освежить" все эти разделы из fstab. Обычно это не нужно, но если возникли проблемы с несколькими разделами сразу — способ выручает.

Понадобятся права администратора, поэтому команда запускается с sudo.

-7

Если всё в порядке, изменений вы не увидите. Но если с разделами были траблы — после переподключения система часто их решает (или хотя бы выдаёт подсказку, где искать проблему).

Как примонтировать ISO-образ и получить доступ к его содержимому

Подключить ISO-образ (например, дистрибутив Linux) можно точно так же, как обычное устройство — через терминал. После этого содержимое ISO появится как папка.

Работает с любыми ISO-файлами! В примере я беру Tiny Core Linux — он весит всего 18 мегабайт (это даже меньше, чем одна mp3-песня!) и качается мгновенно.

В той же директории, где лежит ISO-файл, пишу команду (название ISO своего файла подставляю вручную):

-8

Потребуются права root, поэтому терминал попросит ввести пароль.

Опция -t ставит Linux в известность, что вы монтируете файловую систему iso9660 (такой у ISO-образов). А -o loop позволяет примонтировать "виртуальный" файл как реальный диск.

Linux обращается с устройствами как с обычными файлами — поэтому подключить ISO получается элементарно.

Я использую стандартную точку /mnt, но взять можно любую свою папку.

Готово! Терминал напишет, что подключает всегда только для чтения.

Просматриваю содержимое ISO-образа

Теперь образ смонтирован — а папка с его файлами открывается по пути (/mnt, если не указывали другой). Всё внутри ISO ведёт себя так же, как и на обычном диске.

-9

Отключаю ISO-образ: команда umount

Чтобы отключить (размонтировать) раздел — используйте команду umount (Да-да, без буквы 'n' после 'u'!).

В качестве аргумента укажите точку, где появлялось содержимое ISO или флешки.

-10

Если в ответ — тишина, всё прошло ок.

Делаю свою точку подключения для монтирования

Место подключения можно выбрать самому. Просто создайте нужную папку, например isomnt, и монтируйте туда — всё по-человечески.

-11

Повторяем команду, но теперь путь /media/dave/isomnt/ — и ISO появится в этой папке.

Теперь просматривать содержимое можно по новому адресу!

А если путь до папки слишком длинный и раздражает — есть решение!

Привязываю папку монтирования к другой директории

Можно "связать" папку точки монтирования с еще одной директорией — тогда содержимое будет видно сразу в двух местах!

Например, сделал папку iso в своём домашнем каталоге и связал её с /media/dave/isomnt через опцию -B у mount:

Всё, доступ к ISO теперь есть и по новому пути, и по старому.

Как правильно отключать связанные пути

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

Пока не отключены обе, через второй путь всё ещё можно залезть на содержимое ISO!

Подключаю дискету: oldschool на новый лад!

Дисковод для гибких дисков определяется как обычное устройство хранения — что-то вроде /dev/sd*. Посмотреть, какой сейчас свободный адрес, удобно через команду df | grep sd — видно все активные накопители.

Если сейчас виден только /dev/sda, то следующая флешка или дискета будет /dev/sdb.

Вставляю дискету, подключаю дисковод, и монтирую диск в /mnt:

Как узнать метки файловых систем

Параметр -l (label) у mount показывает, есть ли у раздела "метка" — по сути, это имя накопителя, ни на что не влияющее. Можно добавить -t vfat, чтобы смотреть только USB или дискеты:

Метка появится в квадратных скобках — например, у этой дискеты метка NORTUN.

Посмотреть содержимое дискеты можно по пути /mnt:

Такие дискеты часто хранят что-то вроде исходников на C. У одной из папок дата — октябрь 1992 года! Для чего служила метка, так и осталось загадкой.

Если ещё раз воспользоваться df | grep sd, теперь видно два sd-устройства:

Как и ожидалось: дисковод стал /dev/sdb, а файловая система примонтировалась в /mnt. Для отключения дискеты — просто используйте umount и укажите устройство.

Что делать, если раздел занят — лайфхак с опцией lazy для umount

Если какие-то программы используют файлы с накопителя или открыт терминал в этой папке, umount выдаст ошибку — пока точка не освободится, отключить раздел не выйдет:

Linux просто не даст "отпилить ветку, на которой сам сидит".

Решение простое: используйте опцию -l (lazy). Тогда umount подождёт, пока раздел не освободят, и автоматически отключит:

Пока кто-то использует этот раздел, команда не завершится. Как только пользователь покинет папку — накопитель отмонтируется и исчезнет из списка.

Как примонтировать сетевой диск (Samba-шару) в Linux

Samba — это классный способ обмена файлами между Linux/Unix и Windows через локалку.

Здесь не буду рассказывать о настройке Samba, а только о подключении к уже расшаренной папке. У меня под рукой Raspberry Pi в домашней сети с расшаренной папкой "Backup" (имя шары "share"). Сначала по SSH захожу на Pi и смотрю содержимое (/media/pi/USB64/Backup) — вижу папки dave и pat. Теперь знаю, что меня ждёт после монтирования с Linux.

Выхожу из SSH через exit. Для работы с Samba понадобится установить пакет cifs-utils. На Ubuntu/Debian команда простая: sudo apt-get install cifs-utils.

Теперь монтирую шару, меняя IP, имя шары и путь на свои:

Захожу в /media/dave/NAS — и вижу содержимое папки Raspberry Pi: обе каталога dave и pat.

Создаю и монтирую виртуальную файловую систему из файла

Для экспериментов я часто пользуюсь виртуальными разделами: с помощью dd делаю файл-образ, затем через mkfs создаю на нём любую файловую систему (например, ext4). Этот файл можно примонтировать как реальный диск — классная штука для безопасных экспериментов.

Опция if (input file) берёт данные из /dev/zero, а of — задаёт имя выдаваемого файла (например, geek_fs).

bs=1M — размер блока 1 мегабайт, count=20 — всего 20 блоков, значит файл выйдет на 20 мегабайт.

Сначала получаем пустой файл-образ, заполненный нулями.

Дальше командой mkfs -t ext4 geek_fs делаю на этом файле полноценную файловую систему ext4:

Вуаля — теперь есть своя педантично рабочая файловая система... внутри файла!

Остаётся примонтировать её (например, в /media/dave/geek) и выдать себе права на запись через chown.

Для теста захожу на эту файловую систему и копирую туда, скажем, /etc/fstab — всё работает!

Теперь для наглядности вывожу mount -t ext4 — вижу сразу две файловых системы ext4.

Перемонтирую диск с новыми правами доступа

Файловую систему можно перемонтировать с другой опцией через -o remount. Например, если диск сперва был смонтирован только для чтения (-r), а теперь нужен для записи — меняем режим одной командой.

В параметрах mount сначала был ro (read-only), после перемонтирования — rw (read-write). Теперь можно спокойно копировать и менять файлы.

Почему больше нельзя "переезжать" с одного mount-point на другой?

Раньше файловую систему можно было демонтировать с одного пути и тут же примонтировать на другой — через опцию -M. Но после перехода большинства Linux-дистрибутивов на systemd этот способ перестал работать.

Актуальная замена — использовать -B (bind), как описал выше. Оригинальная точка при этом не освобождается, но для практики это не критично.

Личный итог: что понял по ходу этих экспериментов

Теоретически кто-то может попробовать переместить mount-point через --make-private даже с systemd, но здесь этот трюк не обсуждаю.

В некоторых дистрибутивах без systemd (Devuan на SysV init, например) та самая "секретная команда" -M всё ещё работает по-старому.

А в остальном mount и umount — настолько интуитивные команды, что разбираться с ними проще простого. Особенно они выручают, когда в системе что-то сломано — вручную собрать файловое дерево теперь не проблема.

Linux-команды для работы с файлами:

tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc · tr

Управление процессами:

alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap

Сетевые фишки:

netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld

Если вам понравилась эта статья, подпишитесь, чтобы не пропустить еще много полезных статей!

Премиум подписка - это доступ к эксклюзивным материалам, чтение канала без рекламы, возможность предлагать темы для статей и даже заказывать индивидуальные обзоры/исследования по своим запросам!Подробнее о том, какие преимущества вы получите с премиум подпиской, можно узнать здесь

Также подписывайтесь на нас в: