
При работе в системах Linux и Unix копирование файлов и каталогов является одной из наиболее распространенных задач, которые вы будете выполнять ежедневно.
cp — утилита командной строки для копирования файлов и каталогов в системах Unix и Linux.
В этой статье мы объясним, как использовать команду cp .
Как использовать команду cp
Общий синтаксис команды cp следующий:
cp [ OPTIONS ] SOURCE... DESTINATION
SOURCE может содержать один или несколько файлов или каталогов в качестве аргументов, а аргумент DESTINATION может быть одним файлом или каталогом.
- Если аргументы
SOURCEиDESTINATIONуказывают на файлы, командаcpкопирует первый файл во второй. Если файл не существует, команда создаёт его. - Если аргумент
SOURCEсодержит несколько файлов или каталогов, аргументDESTINATIONдолжен быть каталогом. В этом случае файлы и каталогиSOURCEперемещаются в каталогDESTINATION. - Если аргументы
SOURCEиDESTINATIONявляются каталогами, командаcpкопирует первый каталог во второй.
Для копирования файлов и каталогов необходимо иметь как минимум права на чтение исходного файла и права на запись в целевой каталог. В противном случае будет выведена ошибка «Отказано в доступе».
Копирование файлов с помощью команды cp
Самый простой сценарий использования cp — копирование файла в текущем рабочем каталоге . Например, чтобы скопировать файл file.txt в file_backup.txt , выполните следующую команду:
cp file file_backup
или:
cp file{,_backup}
Чтобы скопировать файл в другой каталог, укажите абсолютный или относительный путь к целевому каталогу.
Если в качестве места назначения указано только имя каталога, то скопированный файл будет иметь то же имя, что и исходный файл.
В следующем примере мы копируем файл file.txt в каталог /backup :
cp file.txt /backup
Если вы хотите скопировать файл под другим именем, укажите нужное имя. Команда ниже скопирует файл в указанный каталог под именем new_file.txt .
cp file.txt /backup/new_file.txt
По умолчанию, если целевой файл существует, он перезаписывается. Параметр -n указывает cp не перезаписывать существующий файл.
Чтобы заставить cp запрашивать подтверждение, используйте опцию -i .
cp -i file.txt file_backup.txt
Если вы хотите скопировать только файл, который новее назначения, вызовите команду с опцией -u :
cp -u file.txt file_backup.txt
При копировании файла владельцем нового файла становится пользователь, выполнивший команду. Используйте опцию -p , чтобы сохранить режим файла, владельца и временные метки :
cp -p file.txt file_backup.txt
Еще одна полезная опция — -v , которая указывает cp выводить подробный вывод:
cp -v file.txt file_backup.txt
'file.txt' -> 'file_backup.txt'
Копирование каталогов с помощью команды cp
Чтобы скопировать каталог, включая все его файлы и подкаталоги, используйте опцию -R или -r .
В следующем примере мы копируем каталог Pictures в Pictures_backup :
cp -R Pictures Pictures_backup
Приведенная выше команда создает целевой каталог и рекурсивно копирует все файлы и подкаталоги из исходного каталога в целевой каталог.
Если целевой каталог уже существует, сам исходный каталог и его содержимое копируются в целевой каталог.
Чтобы скопировать только файлы и подкаталоги, но не исходный каталог, используйте опцию -T :
cp -RT Pictures Pictures_backup
Другой способ скопировать только содержимое каталога, но не сам каталог, — использовать подстановочный знак ( * ). Недостаток следующей команды в том, что она не копирует скрытые файлы и каталоги (начинающиеся с точки . ):
cp -RT Pictures/* Pictures_backup/
Все опции, которые мы использовали в предыдущем разделе при копировании файлов, можно использовать и при копировании каталогов. Главное отличие заключается в том, что при копировании каталогов всегда необходимо использовать опцию -R .
Копирование нескольких файлов и каталогов
Чтобы скопировать несколько файлов и каталогов одновременно, укажите их имена и используйте целевой каталог в качестве последнего аргумента:
cp file.txt dir file1.txt dir1
При копировании нескольких файлов местом назначения должен быть каталог.
Заключение
Копирование файлов и каталогов с помощью команды cp — простая задача. Для получения дополнительной информации о доступных параметрах cp введите man cp в терминале.
Для копирования файлов по сети используйте утилиты rsync и scp .
Если у вас есть вопросы или пожелания, не стесняйтесь оставлять комментарии.
Связанные руководства