Копирование является неотъемлемым свойством информации и связано с ее переносом на иные физические носители или в их пределах без изменения содержания. Следует различать копирование файлов, посекторное копирование носителя информации с одного на другой, посекторное копирование носителя информации в файл и обратный процесс. Можно выделить побитовое копирование (клонирование) носителя информации на другой носитель или в файл. Например, при проведении некоторых компьютерно-технических экспертиз требуется создать точную копию исследуемого устройства памяти в целях сохранения доказательства противоправной деятельности; при этом носитель-копия должен в точности соответствовать оригиналу, включая физическую геометрию исправных и поврежденных секторов.
Наиболее распространенный вид копирования – это создание еще одного экземпляра файла. Файл можно скопировать в тот же каталог, где расположен оригинал, но необходимо изменить имя копии. Можно скопировать файл с прежним именем, но только в другой каталог. Варианты команды cp для указанных случаев были приведены выше. Для копирования файла или группы файлов надо иметь следующие права:
· на чтение каждого файла-оригинала,
· на чтение и исполнение каталога, в котором исходные файлы хранятся,
· на запись и исполнение в каталоге, куда предстоит записать копии.
Если имя копируемого файла известно и он доступен для чтения, его можно скопировать, имея лишь право на поиск (исполнение) в каталоге, где он находится. Возникает вопрос: достаточно ли права на поиск в каталоге, если из него копируется группа файлов, имена которых заданы по маске, в т. ч. с использованием символов «*» и «?». Ответ отрицательный: для копирования файла с неопределенным именем его имя следует установить, для чего необходимо прочитать файловые записи в каталоге и сопоставить их с маской. Такое копирование требует наличия прав на чтение и исполнение для каталога.
Уместно отметить различия между жесткой ссылкой и копией файла, а также между копией и оригиналом. Жесткая ссылка – это еще одно имя файла, указывающее на единственный индексный дескриптор. При копировании создается другой файл, имеющий не только отдельную запись в каталоге, но и свой уникальный индексный дескриптор, а также занимающий иные блоки на дисковом пространстве. Файл-копия может отличаться от оригинала правами доступа и обновленными временными отметками, а также владельцем файла, если копирование производилось другим пользователем. Одинаковым для файла-оригинала и его копии является только содержимое блоков данных.
Если на месте расположения копии уже существует файл с таким же именем, он обнуляется (точнее, его блоки данных объявляются свободными), а индексный дескриптор передается создаваемой копии. При копировании права доступа (код режима) файла не изменяются, за исключением сброса флагов эффективных идентификаторов SUID и SGID. Системная функция, записывающая копию файла, обнуляет биты эффективных прав доступа. Владелец копии и его группа меняются – ими становятся пользователь, копирующий файл и его группа. После копирования пользователь может сделать со своим экземпляром файла всё, что ему заблагорассудится. Обычные пользователи имеют права на чтение в каталогах /bin, /sbin, /usr/bin, /usr/sbin и в принципе могут обзавестись своими копиями различных утилит. Сами по себе копии утилит опасности не вызывают, так как пользователь сможет запустить их только со своими правами.
Обычное файловое копирование производится с помощью уже упомянутой выше утилиты cp. С ее помощью можно скопировать один или группу файлов из одного каталога в другой. Имеется возможность копирования каталогов, в том числе и рекурсивного.
Резервное копирование является одной из распространённых мер защиты данных. От обычного копирования оно отличается тем, что пункт назначения находится на другом машинном носителе, возможно находящемся в составе другого компьютера. Резервному копированию и его политике уделяется довольно много внимания в различных источниках, посвященных администрированию систем. Для резервного копирования файлов и каталогов в ОС Linux используется несколько известных утилит, которые появились задолго до её появления.
При одинаковом объеме копируемых данных процесс файлового копирования происходит быстрее при большом размере файлов. В идеале следует копировать один большой файл. Для сборки файлов каталога в один непрерывный массив в Linux существует утилита tar(от Tape Archive – ленточный архив). Команда сборки выглядит так:
tar –cf backup.tar <dir>
С помощью утилиты tar можно группировать в один файл содержимое нескольких каталогов, отделяя их в командной строке пробелами, например: