Ранее уже рассматривались способы создания обычных файлов. Для копирования файлов предназначается команда cp (copy). Это универсальная команда, с помощью которой можно выполнить несколько действий:
создание копии файла с другим именем в том же каталоге
cp -arg file1 file2;
копирование файла с прежним именем в другой каталог
cp -arg file1 <dir>;
копирование файлов каталога <dir1> в каталог <dir2>
cp -arg <dir1> <dir2>.
В качестве наиболее часто используемых аргументов задаются:
-i – при наличии в месте назначения файла с таким именем будет выдан запрос на его переписывание;
-f – при наличии в месте назначения файла с таким именем он переписывается без запроса;
-p – сохраняется режим доступа к скопированному файлу, его владелец, группа владельца и временные отметки (без этого параметра файл переходит в собственность копирующего, права доступа устанавливаются согласно маске доступа, а временные отметки обновляются);
–R – выполняется рекурсивное копирование с учетом всех вложенных файлов и подкаталогов;
–a – аналог комбинации -pR с дополнительным копированием символических ссылок, что позволяет создать точную копию каталога.
Для копирования файла необходимо иметь право его чтения. Нужен еще доступ в два каталога – тот, где находится исходный файл, и тот, куда надлежит поместить его копию. Для копирования файла необходимо иметь права чтения и поиска в каталоге, откуда происходит копирование. Скопировать файл можно только в тот каталог либо на то устройство, на которое имеется право записи и поиска.
При необходимости копирования всех файлов из каталога задается маска с использованием символов-звёздочек. Команда
cp /home/* /mnt/abcd
производит копирование всех файлов из домашнего каталога в примонтированный каталог abcd.
Файлы создаются, изменяются и удаляются в файловой системе в соответствии с правилами этой системы, поэтому при копировании файла из одной файловой системы в другую неизменными остаются сами данные, а метаданные файла и всё, что с ними связано, будет зависеть от типа файловой системы, в которую копируется файл.
Логическое удаление файлов и каталогов обеспечивается утилитой
rm -arg <file_name> <dir>
В качестве аргументов можно указать:
–f – для безусловного (без дополнительных запросов и подтверждений) удаления файла. При обычном удалении файла система выводит запрос на удаление, который необходимо подтвердить символом y (yes) и Enter,
-d – для удаления непустого каталога,
-r – для рекурсивного удаления внутренних каталогов.
Удаление пустого каталога поддерживается командой
rmdir <dir>
Для гарантированного удаления файла с многократным (до 25 раз) стиранием inode и блоков данных псевдослучайными комбинациями в большинстве версий Linux имеется утилита
shred –arg <file_name>
Используемые командой стирания аргументы:
-v – показывать ход стирания,
-n раз – число повторов (25 раз по умолчанию),
-s – очистить N байт,
-x – не округлять размеры файлов до следующего целого блока,
-u – обрезать и удалять файл после перезаписи.
Перемещение файла – это комбинация двух команд: копирования файла в другой каталог и удаления исходного файла, но только в случае перемещения файла из одной файловой системы в другую. Если же файл перемещается в пределах одной файловой системы, то перемещения данных не происходит, а все изменения касаются только его метаданных.
Перемещение указанного файла в другой каталог производится командой
mv –arg <file_name> <dir>
В ОС Linux команда переименования файлов отсутствует как таковая, поскольку команда перемещения mv превосходно справляется с изменением имени файла