Быстрая навигация по разделам
В Linux и похожих системах (например, macOS) управлять файловыми системами чаще всего удобно через терминал: можно подключать, отключать и даже переподключать диски, как вам заблагорассудится. Это действительно мощно — объясню, как всё работает в реальности.
Как устроена файловая система в Linux
В отличие от Windows, где каждому разделу дают отдельную букву (например, C: или D:) и ветку папок, в Linux, macOS и прочих UNIX-подобных системах всё устроено иначе: для всех накопителей строится единое дерево файлов. Каждый новый диск просто "встраивается" в эту общую структуру — и становится её частью. Точка подключения называется точкой монтирования и выглядит как обычная папка, через которую можно просматривать содержимое устройства.
Многие файловые системы подключаются автоматически при загрузке или по мере появления новых накопителей. Опытные администраторы часто отключают автоматическое монтирование — чтобы знать, что и когда появляется в системе.
Это значит, что любые новые носители придётся подключать вручную. А ручное монтирование — это свобода: сам определяешь, где именно появится папка с файлами накопителя и с каким доступом (только чтение, либо чтение/запись).
Причина не столь важна — главное самому держать всё под контролем. Команды mount, umount и remount дают полный контроль над внешними и виртуальными устройствами в Linux. Это азбука каждого, кто любит разбираться в системе.
8 простых способов обмена файлами между Linux и Windows
От SFTP до Samba и HTTP — выбирайте то, что подходит именно вам.
Как проверить подключённые файловые системы с помощью mount
У mount есть куча опций, но чтобы увидеть весь список монтированных файловых систем, ничего указывать не нужно — достаточно просто написать в терминале mount и нажать Enter:
mount выведет все подключённые сейчас файловые системы с деталями.
Данных получится много — ориентироваться бывает непросто.
Чтобы отсеять лишнее, можно попросить mount показать только определённые типы файловых систем с помощью опции -t (type).
Например, если указать tmpfs, вы увидите только временные файловые системы — они живут в оперативной памяти, а не на диске (отсюда и название tmp, временные).
Можно подставить интересующий тип (например, ext4 или vfat), и список сразу станет короче и понятнее.
На моём тестовом ПК единственная файловая система ext4 расположена на устройстве sda и примонтирована к корню (/).
Заодно здесь отображаются и прочие ключевые параметры точки монтирования.
Использую df, чтобы посмотреть подключённые разделы
Команда df тоже показывает список подключённых файловых систем и их точки монтирования.
Если использовать df без параметров — снова будет огромный список, особенно на Ubuntu, где для каждого snap-приложения появляется свой отдельный squashfs-раздел.
Чтобы их скрыть (или отсечь любые другие), пригодится опция -x (exclude):
В результате останется только необходимое: разделы, их имена, объём, свободное место и путь для доступа.
Как перемонтировать все разделы из fstab
Все разделы, которые монтируются автоматически при старте, прописаны в файле /etc/fstab (file system table).
С помощью mount можно принудительно "освежить" все эти разделы из fstab. Обычно это не нужно, но если возникли проблемы с несколькими разделами сразу — способ выручает.
Понадобятся права администратора, поэтому команда запускается с sudo.
Если всё в порядке, изменений вы не увидите. Но если с разделами были траблы — после переподключения система часто их решает (или хотя бы выдаёт подсказку, где искать проблему).
Как примонтировать ISO-образ и получить доступ к его содержимому
Подключить ISO-образ (например, дистрибутив Linux) можно точно так же, как обычное устройство — через терминал. После этого содержимое ISO появится как папка.
Работает с любыми ISO-файлами! В примере я беру Tiny Core Linux — он весит всего 18 мегабайт (это даже меньше, чем одна mp3-песня!) и качается мгновенно.
В той же директории, где лежит ISO-файл, пишу команду (название ISO своего файла подставляю вручную):
Потребуются права root, поэтому терминал попросит ввести пароль.
Опция -t ставит Linux в известность, что вы монтируете файловую систему iso9660 (такой у ISO-образов). А -o loop позволяет примонтировать "виртуальный" файл как реальный диск.
Linux обращается с устройствами как с обычными файлами — поэтому подключить ISO получается элементарно.
Я использую стандартную точку /mnt, но взять можно любую свою папку.
Готово! Терминал напишет, что подключает всегда только для чтения.
Просматриваю содержимое ISO-образа
Теперь образ смонтирован — а папка с его файлами открывается по пути (/mnt, если не указывали другой). Всё внутри ISO ведёт себя так же, как и на обычном диске.
Отключаю ISO-образ: команда umount
Чтобы отключить (размонтировать) раздел — используйте команду umount (Да-да, без буквы 'n' после 'u'!).
В качестве аргумента укажите точку, где появлялось содержимое ISO или флешки.
Если в ответ — тишина, всё прошло ок.
Делаю свою точку подключения для монтирования
Место подключения можно выбрать самому. Просто создайте нужную папку, например isomnt, и монтируйте туда — всё по-человечески.
Повторяем команду, но теперь путь /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
Если вам понравилась эта статья, подпишитесь, чтобы не пропустить еще много полезных статей!
Премиум подписка - это доступ к эксклюзивным материалам, чтение канала без рекламы, возможность предлагать темы для статей и даже заказывать индивидуальные обзоры/исследования по своим запросам!Подробнее о том, какие преимущества вы получите с премиум подпиской, можно узнать здесь
Также подписывайтесь на нас в:
- Telegram: https://t.me/gergenshin
- Youtube: https://www.youtube.com/@gergenshin
- Яндекс Дзен: https://dzen.ru/gergen
- Официальный сайт: https://www-genshin.ru