- Место для хранения пользовательских данных в Linux
- Основы Linux от основателя Gentoo. Часть 2 (2/5): Назначения папок, поиск файлов
- FHS и поиск файлов
- Стандарт иерархии файловой системы
- Две независимые классификации в FHS
- Вторичная иерархия в /usr
- Поиск файлов
- Изменение PATH
- О команде «which»
- which -a
- whereis
- find и шаблоны
- Игнорирование регистра в find
- find и регулярные выражения
- find и типы файлов
- find и mtimes
- Опция -daystart
- Опция -size
- Работа с найдеными файлами
- locate
- Использование updatedb
- slocate
- Об авторах
- Daniel Robbins
- Chris Houser
- Aron Griffis
Место для хранения пользовательских данных в Linux
Где хранить пользовательские данные, такие как документы, фотографии, музыка, видео, электронные книги и т. Д. В Linux? Основная идея заключается в том, чтобы иметь возможность переустанавливать и переформатировать системные диски в Linux без страха потери личных данных (MP3, JPG, PDF и т. Д., А не файлов пользовательских настроек).
Я планирую исследовать Linux, поэтому я полагаю, что он может часто разрушаться, поэтому мне нужно иметь возможность полностью переустановить систему без проблем с личными файлами.
Есть похожая тема: « Суперпользователи и домашний каталог », но эта тема настолько многословна и не дает конкретного ответа. Основными вопросами являются:
Должен ли я использовать /home или стоит определить мой собственный раздел, например /data ?
И если я определю свой собственный раздел, как сделать так, чтобы каждый раз, когда я переустанавливал ОС, мой собственный раздел был доступен (автоматически монтировался и был готов к использованию без углубления в конфиги)?
Данные должны храниться в другом разделе файловой системы вашей ОС. В Linux личные данные хранятся в /home/username папке. Когда вы запустите установщик и он попросит вас создать раздел жесткого диска, я предлагаю вам создать расширенный раздел для домашней папки.
Если вам нужно отформатировать компьютер, вам нужно сделать это только с основным разделом.
Я прилагаю вам скриншот утилиты Gparted; это показывает мой диск. Когда вы переустанавливаете ОС и у вас уже есть домашняя папка, вам необходимо будет создать новый домашний каталог для нового пользователя и связать или переместить (осторожно) все файлы старой папки в новую папку.
ОБНОВЛЕНИЕ
Исходя из моего опыта, лучше иметь эксклюзивный раздел для вашего /home (Linux) или D:\ (Windows). Как в Windows, так и в Linux, в вашей папке данных будут создаваться некоторые файлы (в основном скрытые файлы), которые могут вызвать некоторые проблемы, если вы не будете осторожны при перемещении старых файлов в новую папку (при переустановке ОС). ,
Я пять раз переустанавливал свой Linux, не трогая свои личные данные, и без проблем делюсь ими с Win7 🙂
Храните пользовательские данные в отдельном разделе от операционной системы. Если вы будете осторожны, чтобы не перезаписать этот раздел при переустановке операционной системы, эти данные будут в безопасности. Например, если на вашем компьютере есть два жестких диска, SSD и HDD, поместите операционную систему на SSD, а пользовательские данные — на HDD.
Мое мнение таково, что лучше не иметь отдельный /home раздел по двум причинам:
При переустановке операционной системы некоторые файлы в /home каталоге перезаписываются, но ваши пользовательские данные не будут затронуты, если они находятся в отдельном разделе.
Часто используемые файлы, такие как параметры конфигурации и образы виртуальных машин, могут храниться в /home каталоге, где к ним можно получить более быстрый доступ, если /home каталог находится на SSD.
Раздел данных можно сделать доступным, если он автоматически монтируется при запуске операционной системы. Это делается в Linux путем редактирования /etc/fstab файла и добавления в него новой строки, содержащей информацию о том, как раздел, который вы хотите автоматически монтировать при запуске, должен быть смонтирован в файловую систему.
Вы можете использовать пользовательские папки для папок в /home/ . Пример:
будет переключаться с /home/$USER/Downloads/ на /media/user/Downloads/ и загруженные документы будут затем загружаться на жесткий диск, а не на SSD. То же самое относится ко всем остальным каталогам. Смотрите
./config/user-dirs.dirs о ручном редактировании этих настроек. источник
Делая обоснованное предположение здесь, вы ищете простое решение вашей проблемы
Не придавайте особого значения созданию другого раздела, но это зависит от вашей ситуации
Когда вы устанавливаете выбранный вами дистрибутив, убедитесь, что ваш диск / раздел обнулен, как в полном формате, это также может быть достигнуто с помощью «dd if = / dev / zero of = / dev / sda1», где sda1 Если вы предпочитаете использовать диск или раздел, вы можете получить аналогичные результаты с помощью команды типа «dd if = / dev / zero of = / home / user / zeros», это гарантирует, что неиспользуемое пространство не содержит никаких данных
Установите дистрибутив, настройте его так, как вы хотите
Используя установочный носитель, вы захотите создать образ диска, предыдущая команда поможет вам уменьшить использование пространства резервной копией, это можно сделать так: «dd if = / dev / sda1 | bzip2 | dd of = / path / в / backup », когда резервная копия находится на отдельном диске / разделе. Если вам необходимо восстановить указанную резервную копию, просто отмените приведенную выше команду и замените bzip2 на bunzip2
Эти инструкции не будут работать «из коробки», но их не должно быть слишком сложно понять, если вы не торопитесь, чтобы прочитать их
Вы можете рассмотреть возможность чтения и завершения linuxfromscratch, это поможет вам
Источник
Основы Linux от основателя Gentoo. Часть 2 (2/5): Назначения папок, поиск файлов
В данном отрывке рассказано о стандарте иерархии файловой системы (FHS), почему директории так называются и для чего они нужны. Упомянута переменная окружения PATH и разобраны основные команды для поиска файлов в системе, такие как whereis, find и locate (slocate).
Навигация по основам Linux от основателя Gentoo:
Часть I
- BASH: основы навигации (вступление)
- Управление файлами и директориями
- Ссылки, а также удаление файлов и директорий
- Glob-подстановки (итоги и ссылки)
Часть II
FHS и поиск файлов
Стандарт иерархии файловой системы
Стандарт иерархии файловой системы (Filesystem Hierarchy Standard или сокр. FHS) — это документ который определяет схему директорий в Linux-системах. FHS разработан чтобы представить общую схему для упрощения независимой от дистрибутива разработки программного обеспечения, поскольку так все необходимое располагается одинаково в большинстве дистрибутивов. FHS определяет следующее дерево директорий (взято непосредственно из спецификации):
- / (корневая директория)
- /boot (статичные файлы загрузчика)
- /dev (файлы устройств)
- /etc (специфические для хоста конфигурационные файлы)
- /lib (основные разделяемые библиотеки и модули ядра)
- /mnt (точка монтирования для временных нужд)
- /opt (дополнительные пакеты ПО)
- /sbin (основные системные программы)
- /tmp (временные файлы)
- /usr (вторичная иерархия)
- /var (изменяемые данные)
Две независимые классификации в FHS
Спецификация FHS основывается на идее существования двух независимых классификаций файлов: разделяемые и неразделяемые, а также изменяемые и статичные. Разделяемые данные могут распределятся на несколько хостов; неразделяемые специфичны для конкретного хоста (как, например, конфигурационные файлы). Изменяемые данные могут изменяться; статичные не изменяются (за исключением установки и обслуживания системы).
Нижеследующая табличка резюмирует четыре возможные комбинации, с примерами директорий, которые попадают в данные категории. Опять же, эта таблица прямо из спецификации:
Вторичная иерархия в /usr
Внутри /usr вы обнаружите вторичную иерархию, которая выглядит очень похоже на корневую файловую систему. Для /usr не критично существование во время включения машины, она может быть общим сетевым ресурсом (разделяема) или примонтирована с CD-ROM (статична). Большинство конфигурация Linux не используют «разделяемость» /usr, но ценно понимать полезность отличия между основной иерархией в корневой директории и вторичной иерархией в /usr.
Это все, что мы расскажем о стандарте иерархии файловой системы. Сам по себе документ довольно читабелен и вам стоит на него взглянуть. После его прочтения вы будете гораздо лучше понимать файловую систему Linux. Найти спецификацию можно здесь: http://www.pathname.com/fhs/.
Поиск файлов
Linux-системы зачастую содержат сотни тысяч файлов. Возможно, что вы достаточно умны, что никогда не теряете из виду ни один из них, но гораздо вероятнее, что временами вам требуется помощь для нахождения какого-либо файла. Для этого в Linux есть несколько разнообразных средств. Это введение поможет вам выбрать подходящее для решения вашей задачи.
Когда вы запускаете программу из командной строки, bash начинает просматривать список директорий в поисках программы которую вы указали. Например, когда вы вводите ls, bash в действительности не знает, что программа ls находится в /usr/bin. Вместо этого, он ссылается на переменную окружения называемую PATH, которая содержит список директорий разделенных двоеточием. Мы можем проверить значение PATH:
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin.
С таким значением PATH (у вас оно может быть другим) bash сначала проверит директорию /usr/local/bin, затем /usr/bin в поисках программы ls. Скорее всего, ls находится в /usr/bin, тогда на этой директории bash прекратит поиск.
Изменение PATH
Вы можете расширять переменную PATH, присваивая ей новое значение в командой строке:
/bin
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/home/agriffis/bin
Вы также можете удалять элементы из PATH, хотя это не так просто, поскольку вы не можете ссылаться в команде на существующий $PATH. Лучший вариант — это просто заново указать в PATH то, что вам нужно:
/bin
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/agriffis/bin
Чтобы сделать ваши изменения PATH доступными для процессов, которые будут запускаться в командной оболочке, необходимо «экспортировать» их используя команду export:
О команде «which»
Вы можете проверить, есть ли конкретная программа в вашем PATH используя which. В следующем примере мы видим, в каталогах PATH нашей системы, программы с названием sense нет:
$ which sense
which: no sense in (/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin)
В этом примере, ls успешно находится:
which -a
Наконец, вы должны знать о флаге -a, который укажет which показать вам все экземпляры программы в PATH:
whereis
Если вам необходимо больше информации о программе, чем просто ее расположение, вы можете воспользоваться командой whereis:
$ whereis ls
ls: /bin/ls /usr/bin/ls /usr/share/man/man1/ls.1.gz
Здесь мы видим что ls находится в двух каталогах с общими исполняемыми файлами, /bin и /usr/bin. Кроме того, нам сообщили что есть документация, которая находится в /usr/share/man. Это man-страница которую вы увидите, если введете man ls.
Программа whereis может использоваться для поиска расположения исходников и нестандартного поиска (имеется ввиду возможность искать файлы для которых отсутствуют маны, исходники или бинарники — прим. пер.). Также ей можно указать альтернативные пути для поиска. Обратитесь к man-странице для получения дополнительной информации.
Команда find это другой удобный инструмент в вашем арсенале. Используя find вы не ограничены лишь поиском программ; вы можете искать любые типы файлов, используя различные критерии поиска. Например, поищем в директории /usr/share/doc, файл который называется README:
$ find /usr/share/doc -name README
/usr/share/doc/ion-20010523/README
/usr/share/doc/bind-9.1.3-r6/dhcp-dynamic-dns-examples/README
/usr/share/doc/sane-1.0.5/README
find и шаблоны
Вы можете использовать glob-шаблоны для аргументов -name, при условии что вы экранируете их кавычками или обратным слешем (таким образом они будут переданы команде в нетронутом виде, иначе они сначала будут развернуты bash’ем и уже после переданы команде). Давайте поищем все файлы README с расширением:
$ find /usr/share/doc -name README\*
/usr/share/doc/iproute2-2.4.7/README.gz
/usr/share/doc/iproute2-2.4.7/README.iproute2+tc.gz
/usr/share/doc/iproute2-2.4.7/README.decnet.gz
/usr/share/doc/iproute2-2.4.7/examples/diffserv/README.gz
/usr/share/doc/pilot-link-0.9.6-r2/README.gz
/usr/share/doc/gnome-pilot-conduits-0.8/README.gz
/usr/share/doc/gimp-1.2.2/README.i18n.gz
/usr/share/doc/gimp-1.2.2/README.win32.gz
/usr/share/doc/gimp-1.2.2/README.gz
/usr/share/doc/gimp-1.2.2/README.perl.gz
[еще 578 строк опущено]
Игнорирование регистра в find
Конечно, вы можете игнорировать регистр при поиске:
$ find /usr/share/doc -name ‘[Rr][Ee][Aa][Dd][Mm][Ee]*’
Или, намного проще:
$ find /usr/share/doc -iname readme\*
Как видно, для поиска без учета регистра можно использовать опцию -iname .
find и регулярные выражения
Если вы знакомы с регулярными выражениями, вы можете использовать опцию -regex для поиска файлов с именами соответствующими шаблону. А также опцию похожую на -iname, которая называется -iregex и заставляет find игнорировать регистр в шаблоне. Пример:
$ find /etc -iregex ‘.*xt.*’
/etc/X11/xkb/types/extra
/etc/X11/xkb/semantics/xtest
/etc/X11/xkb/compat/xtest
/etc/X11/app-defaults/XTerm
/etc/X11/app-defaults/XTerm-color
Однако в отличии от большинства программ, find требует чтобы регулярное выражение указывалось для всего пути, а не только его части. По этой причине, стоит в начале и конце шаблона ставить .*; простого использования xt в качестве шаблона будет недостаточно.
find и типы файлов
Опция -type позволяет искать в файловой системе файлы определенного типа. Возможные аргументы для -type это: b (блочное устройство), c (символьное устройство), d (директория), p (именованый канал), f (обычный файл), l (символическая ссылка), и s (сокет). Например, поиск символической ссылки в /usr/bin, которая содержит в своем имени строку vim:
$ find /usr/bin -name ‘*vim*’ -type l
/usr/bin/rvim
/usr/bin/vimdiff
/usr/bin/gvimdiff
find и mtimes
Опция -mtime позволяет вам искать файлы основываясь на дате их последней модификации. Аргументом mtime является количество 24-часовых периодов, и наиболее полезным будет указывать перед аргументом плюс (означает «после») или минус (означает «перед»). Например, рассмотрим следующий сценарий:
$ date
Tue Jan 7 18:14:52 EST 2003
Вы можете найти файлы, которые были модифицированы за последние 24 часа:
Или файлы которые были изменены до текущего 24-часового периода:
Опция -daystart
Если вы дополнительно укажете опцию -daystart, периоды времени будут отсчитываться от начала сегодняшнего дня, а не от текущего времени. Например, здесь файлы созданные вчера и позавчера:
Опция -size
Опция -size позваляет искать файлы по их размеру. По-умолчанию, аргумент -size это количество 512-байтных блоков, но добавляя к опции суффикс, можно сделать вывод более понятным. Доступные суффиксы: b (512-байтные блоки), c (байт), k (килобайт), и w (2-байтные слова). Дополнительно, перед аргументом можно указать плюс («больше чем») или минус («меньше чем»).
Например, для поиска обычного файла в /usr/bin размер которого меньше 50 байт:
$ find /usr/bin -type f -size -50c
/usr/bin/krdb
/usr/bin/run-nautilus
/usr/bin/sgmlwhich
/usr/bin/muttbug
Работа с найдеными файлами
Вы даже не представляете, что можно делать с найденными файлами! Итак, find может производить любые действия над файлами используя опцию -exec. Эта опция принимает строку команд для выполнения, которая оканчивается на ;, и заменяет все вхождения <> именем файла. Это проще всего понять на примере:
Как видите, find это очень мощная команда. Она «выросла» за годы разработки UNIX и Linux. У find существует много других полезных опций. Вы можете прочитать о них в man-страничке.
locate
Мы уже рассмотрели which, whereis и find. Как вы уже наверно заметили, выполнение find может занять некоторое время, т.к. ей необходимо прочитать каждую директорию в которой выполняется поиск. Оказывается, что команда locate может ускорить процесс использую внешнюю базу данных, генерируемую updatedb (updatedb мы рассмотрим ниже).
Команда locate ищет совпадения любой части пути, а не только самого файла. Пример:
$ locate bin/ls
/var/ftp/bin/ls
/bin/ls
/sbin/lsmod
/sbin/lspci
/usr/bin/lsattr
/usr/bin/lspgpot
/usr/sbin/lsof
Использование updatedb
Во многих Linux системах есть «cron job» для периодического обновления базы. В случае если вызов locate вернул нижеописанную ошибку, вам необходимо запустить updatedb от root’а для генерации поисковой базы:
$ locate bin/ls
locate: /var/spool/locate/locatedb: No such file or directory
$ su —
Password:
# updatedb
Работа программы updatedb может занять некоторое время. Если у вас шумный жесткий диск, вы услышите как он шуршит индексируя файловую систему. 🙂
slocate
Во многих Linux дистрибутивах, утилита locate была заменена на slocate. Как правило существует также ссылка на locate, так что вам не нужно запоминать, что именно имеется в системе. slocate означает «безопасный locate» (от англ. secure locate — прим. пер.). Он сохраняет информацию о правах доступа в поисковой базе, так что, обычные пользователи не смогут увидеть директории, которые они и так не смогли бы видеть. Используется slocate точно также как locate, но вывод программы может быть различными в зависимости от пользователя ее запустившего.
Перевод выполнил Dmitry Minsky (Dmitry.Minsky@gmail.com)
Об авторах
Daniel Robbins
Дэниэль Роббинс — основатель сообщества Gentoo и создатель операционной системы Gentoo Linux. Дэниэль проживает в Нью-Мехико со свой женой Мэри и двумя энергичными дочерьми. Он также основатель и глава Funtoo, написал множество технических статей для IBM developerWorks, Intel Developer Services и C/C++ Users Journal.
Chris Houser
Крис Хаусер был сторонником UNIX c 1994 года, когда присоединился к команде администраторов университета Тэйлора (Индиана, США), где получил степень бакалавра в компьютерных науках и математике. После он работал во множестве областей, включая веб-приложения, редактирование видео, драйвера для UNIX и криптографическую защиту. В настоящий момент работает в Sentry Data Systems. Крис также сделал вклад во множество свободных проектов, таких как Gentoo Linux и Clojure, стал соавтором книги The Joy of Clojure.
Aron Griffis
Эйрон Гриффис живет на территории Бостона, где провел последнее десятилетие работая в Hewlett-Packard над такими проектами, как сетевые UNIX-драйвера для Tru64, сертификация безопасности Linux, Xen и KVM виртуализация, и самое последнее — платформа HP ePrint. В свободное от программирования время Эйрон предпочитает размыщлять над проблемами программирования катаясь на своем велосипеде, жонглируя битами, или болея за бостонскую профессиональную бейсбольную команду «Красные Носки».
Источник