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

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

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

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

Команда cp

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

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

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

Данная команда можем переносить так же в другую папку, например, глубже
mv something.txt folder1/
Вот так будет выглядеть команда. А также можно вернуть его обратно, командой:
mv folder1/something.txt .
В конце знак точки выполняет функцию обозначения текущей папки. Аналогичные действия мы можем производить с папками. С помощью команд mv
и cp
.
Команда rm

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

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

Команда определяет тип файла. Перейдем в папку Folder.
cd folder
Попробуем определить тип файла 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 *.???
– это означает, что подходят любые файлы, у которых расширение из 3-х любых символов. Знаки вопросов и звездочек, можно использовать с сочетаниями букв и других символов. Можно сказать, покажи нам все файлы, которые начинаются с букв a или b, команда ls [ab]*
.
Также можно использовать конструкцию ls [a-m]*
. Следовательно, работают все конструкции с групповыми символами.
Команда find

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

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

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

Далее даем вот такую команду: ls | cpio –o > ../test.cpio
В результате получили файл

Пояснения, что мы сделали. Мы взяли вывод команды ls
по конвейеру передали на вход команды cpio
с ключем –o
, который создает архив и то, что должно получится мы указали папку ..
т.е родительская директория и файл test.cpio
. Команда выполнилась и вывела число блоков, сколько обработалось. И переместившись на уровень выше, в родительскую директорию мы можем увидеть, что файл появился.
А можем сделать следующую вещь: find . –name ”*.txt” | cpio –o > test2.cpio
. Т.е мы можем выполнит поиск всех текстовых файлов в текущей директории и заархивировать, причем положить в текущую директорию.
Создадим папку mkdir extract
. И перейдем в нее cd /root/extract
. Теперь мы попробуем разархивировать cpio –id < .. / test2.cpio

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

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

Далее пишем следующее, находясь в директории cd /root/extract
.
dd if=/dev/sdc of=drive.img
dd
- сама командаif
(Input файл) - дискof
(Output файл) - путь куда положить.

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

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

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

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

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

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

Синтаксис простой, команда с
– создать , v
- показывать процесс, f
- файл, archive.tar
- путь к месту где создастся архив, folder2
папка которую архивируем.
Теперь мы можем подключить сжатие архиватора gzip, в опции надо добавить ключ “z
” и выходной файл надо назвать archive.tar.gz
.
Для разархивации мы указываем ключи xvf
и путь до архива.