img

Основные операции с файлами и папками в Linux

21 ноября
20:00
Бесплатный вебинар
Введение в Docker
Ведущий — Филипп Игнатенко.
Руководитель центра разработки
Записаться
img
img

В данной статье мы рассмотрим такие вопросы как, копирование, перенос и удаление файлов. Копирование нескольких файлов и папок в том числе рекурсивно. Удаление файлов и папок в том числе рекурсивно. Использование групповых символов. Отбор файлов по типу, размеру, дате и.т.д. Утилиты tar, cpio и dd.

Исходя из обозначенных выше вопросов будем разбираться со следующим списком команд: cp, find, mkdir, mv, ls, rm, rmdir, touch, tar, cpio, dd, file, gzip, gunzip, bzip2, xz, file globbing.

А также захватим основные виды архиваторов и посмотрим, как с ними работать.


Команда touch

man touch

Данная команда меняет отметки времени файла. При помощи этой команды мы можем создавать новые файлы и менять время доступа к файлу.

Например, мы можем посмотреть, что в текущей директории нет текстовых фалов. Убедится мы можем командой ls, а посмотреть в какой директории pwd. Соответственно вводим touch 123.txt и файл появляется.

touch 123.txt

Есть так же другая команда для создания директорий mkdir. Описание можно по ней посмотреть, через ввод команды man mkdir. Данная команда создает директорию, например, mkdir folder1 создаст нам директорию folder1. Для просмотра используем команду ls. По данной команде мы тоже можем посмотреть мануал man ls. В описании написано, что показывает содержимое папки. Мы так же ее можем использовать с ключем –l, листинг, т.е в виде списка.

mkdir folder1

В таком формате мы можем увидеть, кто владелец папки или файла, группу права на папку или файл. Достаточно информативно получается использование данной команды.

Создадим еще один файл 456.txt и файл 1.txt в папке folder1

touch 456.txt
touch folder1/1.txt

и групповое создание файлов touch folder1/{2,3}.txt, а так же мы можем посмотреть, что у нас получилось в папке folder1.

ls folder1

Команда cp

man cp

Команда предназначена для копирования файлов и директорий.

Самый простой пример сделать копию: cp 123.txt copy123.txt. Можно скопировать директорию cp folder1 folder2. И команда откажется выполнятся, потому, что по умолчанию рекурсивно не работает. В папке folder1 находятся файлы. И если мы хотим это осуществить то используем ключ –r или –R.

cp folder1 folder2

Данная команда очень важна, т.к приходится использовать ее достаточно часто, например при настройке, какого–нибудь важного демона. Прежде чем вносить правки в файл конфигурации данного демона, оригинальный конфигурационный файл лучше всего скопировать.


Команда mv

man mv

Данная команда позволяет перенести файлы или папки, или переименовать (перенести данные из одного имени в другое). Для примера, скажем файл 456.txt перенести в файл something.txt, т.е mv 456.txt something.txt. Как мы видим файл 456 исчез, а появился something.txt

-ls

Данная команда можем переносить так же в другую папку, например, глубже

mv something.txt folder1/ 

Вот так будет выглядеть команда. А также можно вернуть его обратно, командой:

mv folder1/something.txt .  

В конце знак точки выполняет функцию обозначения текущей папки. Аналогичные действия мы можем производить с папками. С помощью команд mv и cp.


Команда rm

man rm

Данная команда предназначена для удаления папок и файлов.

  • rm 123.txt - удаление файла
  • rm folder1 – удаление каталога, но команда выдает ошибку. Это происходит потому, что в папке находится файл. Если мы хотим удалить рекурсивно, то необходимо добавить ключ –r, а если без предупреждений и принудительно , то еще ключик –f. Итоговая команда будет выглядеть следующим образом.
rm –rf folder1
rm –rf folder1

Есть еще одна команда которая удаляет непосредственно папки, называется она rmdir. Мануал посмотреть вы можете по ней командой man rmdir. Данная команда удаляет непосредственно пустые директории. Работает достаточно близко по функционалу к rm.


Команда file

man file

Команда определяет тип файла. Перейдем в папку Folder.

cd folder

Попробуем определить тип файла file yandex.url, как мы можем убедится команда выдает, что данный файл является текстовым.

file yandex.url

Если мы наберем, например, File *, то команда применится ко всем файлам в текущей директории и определит все типы файлов.

Важной частью работы с файлами и папками являются Групповые Символы.

  • * - все что угодно (заменяет любое количество символов)
  • ? – любой символ (одиночный символ, ?? – два символа)
  • ! – не (отрицание)
  • [ac] – a или с
  • [a-c] – a,b,c

Создал несколько новых файлов:

touch bag.txt
touch bat.txt
touch cat.txt
touch sat.txt

ls * - дает занимательную картинку, где видны файлы и папки.

ls

Команда ls *.* нам покажет только те файлы которые имеют расширения. Первая звездочка, означает любое имя, вторая звездочка указывает на любое расширение. Мы можем указать на конкретное количество символов обозначив их знаками “?”. Например, ls *.??? – это означает, что подходят любые файлы, у которых расширение из 3-х любых символов. Знаки вопросов и звездочек, можно использовать с сочетаниями букв и других символов. Можно сказать, покажи нам все файлы, которые начинаются с букв a или b, команда ls [ab]*.

Также можно использовать конструкцию ls [a-m]*. Следовательно, работают все конструкции с групповыми символами.


Команда find

man find

Данная команда будет осуществлять поиск файлов по иерархической структуре папок.

Попробуем найти в директории все файлы:

find * .
find

Получим вот такой ответ на данную команду. У данной команды очень много ключей. Можем для примера взять такую конструкцию find . –name “In*” . Данная конструкция обозначает поиск в текущей папке, по имени, которое начинается с In и имеет в имени любое количество символов. Данную команду можно использовать для поиска файлов например по размеру: find . –size +5M . Следовательно, данным запросом мы ищем все файлы в текущем каталоге с размером более 5 MB.


Команда cpio

Работа с архивами очень важная часть операций с файлами. Для того, чтобы разобраться в данном вопросе рассмотрим следующую команду.

man cpio

Данная команда позволяет копировать файлы в архивы и из архивов. Данная команда позволяет работать с архивами, грубо говоря это двоичный архиватор. Смотрим, что есть в директории ls.

ls

Далее даем вот такую команду: ls | cpio –o > ../test.cpio

В результате получили файл

test.cpio

Пояснения, что мы сделали. Мы взяли вывод команды ls по конвейеру передали на вход команды cpio с ключем –o, который создает архив и то, что должно получится мы указали папку .. т.е родительская директория и файл test.cpio. Команда выполнилась и вывела число блоков, сколько обработалось. И переместившись на уровень выше, в родительскую директорию мы можем увидеть, что файл появился.

А можем сделать следующую вещь: find . –name ”*.txt” | cpio –o > test2.cpio. Т.е мы можем выполнит поиск всех текстовых файлов в текущей директории и заархивировать, причем положить в текущую директорию.

Создадим папку mkdir extract. И перейдем в нее cd /root/extract. Теперь мы попробуем разархивировать cpio –id < .. / test2.cpio

cpio –id <  .. / test2.cpio

Как мы видим все текстовые файлы появились. По сути, что мы сделали. Мы сказали команде cpio подняться на уровень выше взять test2.cpio и разархивировать в текущий каталог. Как видите там же попался каталог folder2, а попался т.к в нем тоже есть текстовые файлы. Напоминаю, что команда find работает так же со вложенными файлами, поэтому данный каталог и попал в архив.


Команда dd

Еще немного про архивы.

man dd

Конвертирует и копирует файлы. Данная команда умеет копировать, не части файловой системы, как файлы или папки, а умеет копировать блочные устройства или его части, например, диск. Для того, чтобы показать, как это работает я примонтировал еще один раздел на 5 ГБ.

df -h

Далее пишем следующее, находясь в директории cd /root/extract.

dd if=/dev/sdc of=drive.img
  • dd - сама команда
  • if (Input файл) - диск
  • of (Output файл) - путь куда положить.
df -h

Мы видим, что команда столько-то получила, столько-то отправила данных в файл.

drive.img

Как можно увидеть, команда отработала. Следовательно, команда dd может сделать целиком резервную копию блочного устройства.


Команда gzip

Переходим непосредственно к архиваторам.

man gzip

Утилита, которая позволяет разжимать и упаковывать файлы.

gzip drive.img
gzip drive.img

Получаем в итоге, что вместо drive.img гигантского, получился более компактный drive.img.gz т.е команда gzip не просто создает архив , но и убивает оригинальный файл. Соответственно если мы хотим его отзиповать, то используем команду gunzip drive.img.gz

Все архиваторы различаются по типу сжатия.


Команда bzip2

man bzip2

Данный архиватор уже работает с блоками. Если его запустить аналогичным образом предыдущему архиватору, то получим файл немного меньшего размера. Это значить, что данный архиватор работает более эффективно с данным типами файлов. Разархивация осуществляется так же аналогично.


Команда tar

Теперь посмотрим легендарный архиватор tar

man tar

Наиболее часто использующийся архиватор. С множеством функций и ключей. Пример использования.

tar cvf archive.tar folder2
tar cvf archive.tar folder2

Синтаксис простой, команда с – создать , v - показывать процесс, f - файл, archive.tar - путь к месту где создастся архив, folder2 папка которую архивируем.

Теперь мы можем подключить сжатие архиватора gzip, в опции надо добавить ключ “z” и выходной файл надо назвать archive.tar.gz.

Для разархивации мы указываем ключи xvf и путь до архива.

Ссылка
скопирована
Получите бесплатные уроки на наших курсах
Все курсы
Системное администрирование
Скидка 10%
Администратор Linux
Стань Linux администратором и сделай весомый шаг в сторону карьеры в DevOps. Самые важные знания от сертифицированного и практикующего тренера с 20 летним стажем
Получи бесплатный
вводный урок!
Пожалуйста, укажите корректный e-mail
отправили вводный урок на твой e-mail!
Получи все материалы в telegram и ускорь обучение!
img
Еще по теме:
img
Fail2ban — это программное обеспечение, которое защищает ваш сервер от атак. ПО отслеживает журналы сервера и выявляет любую под
img
Виртуализация серверов — популярная тема в мире ИТ, особенно на уровне предприятий. Она позволяет разным операционным системам з
img
  Введение Системные вызовы выступают в роли посредников между приложениями и ядром. Они создают уровень абстракции, который защ
img
  Введение SWAP (SWAP-память или SWAP-пространство) – это раздел жесткого диска или SSD компьютера, где операционная система (ОС
img
  Введение Абсолютные и относительные пути определяют расположение файла или каталога в файловой системе. Это набор инструкций д
img
  Введение Файлы конфигурации Linux определяют поведение и функциональное наполнение операционной системы. Файлы конфигурации –
21 ноября
20:00
Бесплатный вебинар
Введение в Docker