Команда Linux cp: Копирование файлов

LinuxBeginner
Практиковаться сейчас

Введение

В ходе этой практической работы вы познакомитесь с мощной командой cp в Linux — незаменимым инструментом для управления файлами и директориями. Вы научитесь эффективно копировать данные, разберетесь в различных опциях для настройки процесса копирования и примените эти навыки в реальных сценариях. К концу занятия вы сможете уверенно использовать cp для повседневных задач по управлению файлами и создания резервных копий.

Основы работы с командой cp

Команда cp является базовой для дублирования файлов в Linux. Начнем с простого сценария, когда вам нужно создать резервную копию важного документа.

В вашей рабочей директории (~/project) находится файл с именем important_report.txt. Ваша задача — создать копию этого файла в той же директории.

Для начала проверим содержимое директории проекта:

ls ~/project

Вы должны увидеть important_report.txt в списке файлов. Не беспокойтесь, если там есть другие файлы; сейчас нас интересует только этот отчет.

Теперь создадим резервную копию:

cp ~/project/important_report.txt ~/project/important_report_backup.txt

Эта команда создает копию important_report.txt под названием important_report_backup.txt в той же папке. Разберем составные части команды:

  • cp: сама команда копирования.
  • ~/project/important_report.txt: исходный файл, который мы хотим скопировать. Символ ~ обозначает ваш домашний каталог.
  • ~/project/important_report_backup.txt: целевой файл. Мы создаем новый файл, добавив суффикс "_backup" к имени.

Чтобы убедиться, что копия успешно создана, снова выведите список файлов:

ls ~/project

Теперь вы должны увидеть и important_report.txt, и important_report_backup.txt. Если новый файл не появился, проверьте правильность написания команды cp.

Копирование файлов в другие директории

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

Сначала проверим, существует ли папка для музыки:

ls ~/project

В списке должна быть директория music. Если вы её видите, значит, всё готово к работе.

Теперь скопируем музыкальный файл из основной директории проекта в папку с музыкой:

cp ~/project/favorite_song.mp3 ~/project/music/

Эта команда копирует favorite_song.mp3 в папку music. Разбор команды:

  • cp: команда копирования.
  • ~/project/favorite_song.mp3: исходный файл.
  • ~/project/music/: целевая директория. Обратите внимание на косую черту (/) в конце — она указывает cp, что music является папкой.

Для проверки результата загляните внутрь папки music:

ls ~/project/music

Там должен появиться файл favorite_song.mp3. Если его нет, убедитесь, что исходный файл существовал и команда была введена без ошибок.

Копирование нескольких файлов одновременно

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

Сначала убедимся в наличии папки для документов:

ls ~/project

Вы должны увидеть директорию documents.

Теперь скопируем сразу несколько текстовых файлов в эту папку:

cp ~/project/report1.txt ~/project/report2.txt ~/project/notes.txt ~/project/documents/

Эта команда копирует report1.txt, report2.txt и notes.txt в папку documents. Вот как это работает:

  • cp: команда копирования.
  • ~/project/report1.txt ~/project/report2.txt ~/project/notes.txt: список исходных файлов через пробел. Можно указывать любое количество файлов.
  • ~/project/documents/: конечный пункт назначения.

Проверьте результат:

ls ~/project/documents

Вы должны увидеть все три файла. Если какого-то не хватает, проверьте команду на наличие опечаток.

Использование опции -i для интерактивного копирования

При копировании файлов можно столкнуться с ситуацией, когда в целевой папке уже есть файл с таким же именем. Опция -i делает процесс интерактивным: система спросит вас перед тем, как перезаписать существующий файл.

Давайте смоделируем такую ситуацию.

Сначала посмотрим содержимое существующего файла:

cat ~/project/test_file.txt

Совет: Если вы не знакомы с командой cat, не волнуйтесь — она просто выводит текст файла на экран, и мы разберем её позже.

Вы должны увидеть текст "Original content".

Теперь попробуем скопировать на его место другой файл с тем же именем:

cp -i ~/project/new_test_file.txt ~/project/test_file.txt

Когда появится запрос, введите y и нажмите Enter, чтобы подтвердить перезапись. Если вы передумали, введите n.

Опция -i (от слова interactive) — это мера предосторожности, предотвращающая случайную потерю данных.

Теперь снова проверьте содержимое:

cat ~/project/test_file.txt

Если вы согласились на перезапись, вы увидите "New content". В противном случае останется "Original content".

Рекурсивное копирование с опцией -r

Опция -r позволяет копировать директории вместе со всем их содержимым. Это незаменимо при создании резервных копий целых структур папок.

Давайте создадим полную копию директории веб-сайта:

cp -r ~/project/website ~/project/website_backup

Эта команда копирует папку website и всё, что в ней находится, в новую папку website_backup. Разбор параметров:

  • cp: команда копирования.
  • -r: сокращение от "recursive" (рекурсивно). Указывает cp копировать папки и их вложения.
  • ~/project/website: исходная директория.
  • ~/project/website_backup: новая директория, куда будет помещена копия.

Проверьте, всё ли скопировалось:

ls -R ~/project/website_backup

Вы увидите дерево каталогов и файлы. Опция -R у команды ls также работает рекурсивно, показывая содержимое всех подпапок.

Сохранение атрибутов файлов с опцией -p

При обычном копировании владельцем нового файла становитесь вы, а временем создания — текущий момент. Если нужно сохранить оригинальные атрибуты (время изменения, права доступа), используйте опцию -p.

Проверим это на практике.

Сначала посмотрим на атрибуты исходного файла:

ls -l ~/project/old_file.txt

Обратите внимание на дату и время.

Теперь скопируем файл, сохраняя его "метаданные":

cp -p ~/project/old_file.txt ~/project/preserved_file.txt

Опция -p (от слова preserve — сохранять) переносит время последнего изменения, время доступа и права доступа исходного файла на копию.

Сравните атрибуты обоих файлов:

ls -l ~/project/old_file.txt ~/project/preserved_file.txt

Вы увидите, что дата и время у файлов идентичны.

Использование подстановочных знаков для выборочного копирования

Подстановочные знаки (wildcards) позволяют копировать группы файлов по шаблону. Это удобно, когда нужно отобрать файлы определенного типа.

Скопируем все текстовые файлы в папку text_files:

cp ~/project/*.txt ~/project/text_files/

А теперь все PDF-файлы в папку pdf_files:

cp ~/project/*.pdf ~/project/pdf_files/

Что означает символ звездочки (*):

  • *.txt — любой файл, имя которого заканчивается на ".txt".
  • *.pdf — любой файл, имя которого заканчивается на ".pdf".

Это избавляет от необходимости перечислять каждый файл вручную.

Проверьте результат:

ls ~/project/text_files
ls ~/project/pdf_files

Все соответствующие файлы должны оказаться в своих новых папках.

Резюме

В ходе этой лабораторной работы вы освоили основные приемы работы с командой cp в Linux. Теперь вы умеете:

  1. Копировать одиночные файлы.
  2. Копировать файлы в другие директории.
  3. Копировать несколько файлов одной командой.
  4. Использовать интерактивный режим с опцией -i.
  5. Рекурсивно копировать целые директории с помощью -r.
  6. Сохранять атрибуты файлов с помощью -p.
  7. Использовать подстановочные знаки для работы с группами файлов.

Другие полезные опции cp, которые могут вам пригодиться:

  • -u: копировать только если исходный файл новее целевого или если целевой файл отсутствует.
  • -v: подробный режим (verbose), показывающий, что именно делает команда в данный момент.
  • -n: режим "без перезаписи"; не заменять уже существующие файлы.
  • -l: создавать жесткие ссылки вместо копирования данных.
  • -s: создавать символические ссылки (ярлыки) вместо копирования.

Команда cp — это мощный фундамент для работы в Linux. Полученные навыки позволят вам эффективно справляться с задачами по организации файлов и резервному копированию данных.

Ресурсы