Команда Linux cp

команда cp

На Unix-подобный операционные системы, cp Команда делает копии файлов и каталогов.

Эта страница описывает GNU / Linux версия cp .

Описание

Общая форма команды: cp источник назначения , Например:

cp myfile.txt myfilecopy.txt

Как и многие другие основные команды Linux, если cp команда выполнена успешно, по умолчанию вывод не отображается. Для просмотра вывода при копировании файлов используйте -v (подробный) вариант.

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

Синтаксис

  cp  [  option  ]... [  -T  ]  source   destination  
  cp  [  option  ]...  source  ...  directory  
  cp  [  option  ]...  -t   directory   source  ...
  cp --help  
  cp --version  

Параметры

,
--архив
Такой же как -dR --preserve = ВСЕ . При выполнении копирования постарайтесь сохранить как можно больше исходной файловой структуры, атрибутов и связанных метаданных. Эти метаданные включают данные контекста безопасности, если вы используете SELinux.
- только атрибуты Не копируйте данные файла, только создайте файл с таким же атрибуты . Если целевой файл уже существует, не изменяйте его содержимое. Вы можете точно контролировать, какие атрибуты копируются с помощью --сохранять вариант.
--резервное копирование [ знак равно контроль ] Сделайте резервную копию каждого существующего файла назначения, который в противном случае был бы перезаписан или удален. В контроль параметр указывает, какой метод контроля версий использовать; видеть управление версиями для подробностей.

В частном случае cp --force --backup делает резервную копию источник когда источник а также dest такие же, обычный файл.
-b Нравиться --резервное копирование , но не принимает контроль аргумент; всегда используется метод управления по умолчанию.
--copy-content При эксплуатации рекурсивно , скопируйте содержимое специальных файлов, таких как FIFO и устройства, найденные в / dev . Обычно вы не хотите использовать эту опцию, потому что это может привести к нежелательным результатам, например, к зависанию или заполнению всего диска. Однако этот вариант доступен для особых случаев использования экспертом.
-d Копируйте сами символические ссылки, а не файлы, на которые они ссылаются, и сохраняйте жесткие ссылки между исходными файлами в копиях. Такой же как ' --no-dereference --preserve = ссылки '.
-f ,
--сила
Если не удается открыть существующий целевой файл, удалите его и повторите попытку. Эта опция не действует, если -n / - не затирать опция используется. Однако он применяется независимо от / - интерактивный ; ни один из вариантов не отменяет действие другого.
,
- интерактивный
Запрашивать перед перезаписью (отменяет предыдущий -n вариант).
-ЧАС Следуйте символическим ссылкам, указанным в командной строке, но сохраните обнаруженные ссылки.

Если один из аргументов командной строки - символическая ссылка скопируйте указанный файл, а не саму ссылку. Однако, если символическая ссылка обнаруживается во время рекурсивного обхода, она копируется как символическая ссылка, а не как обычный файл.
-l ,
--ссылка на сайт
Создавайте жесткие ссылки на файлы вместо их копирования.
-L ,
--dereference
Всегда переходите по символическим ссылкам в источник ; если источник является символической ссылкой, скопируйте файл, на который есть ссылка, а не саму символическую ссылку. Когда указана эта опция, cp не может создавать символические ссылки в целевых копиях.
-n ,
- не затирать
Не перезаписывайте существующий файл. Если / - интерактивный был указан ранее, этот параметр отменяет его. Этот параметр нельзя указать с -b / --резервное копирование , потому что резервные копии создаются только тогда, когда файл будет перезаписан.
,
- без разыменования
Никогда не переходите по символическим ссылкам в источник ; копировать символические ссылки как символические ссылки. Однако существующие символические ссылки, обнаруженные в месте назначения, все еще могут отслеживаться.
-п Такой же как --preserve = режим, владение, отметки времени .
--preserve = [ attr_list ] Сохраните указанные атрибуты, разделенные запятой. Атрибуты:
Режим Сохранять биты режима файла (как установлено с помощью chmod ) и любые ACL.
владение Сохранить владельца и группу (как установлено с помощью Chown ). Возможность сохранения этих атрибутов ограничена так же, как при использовании Chown .
отметки времени Сохранить время последнего доступа к файлу и его модификации ( время а также время , как установлено с трогать ), если возможно.
ссылки Сохраните в файлах назначения любые ссылки между исходными файлами. С участием -L или же -ЧАС , эта опция потенциально может копировать символические ссылки как жесткие.
контекст Сохранение контекста безопасности SELinux исходных файлов или сбой при подробной диагностике.
xattr Сохраните расширенные атрибуты исходных файлов или откажитесь от подробной диагностики.
все Сохраните все вышеперечисленное. То же, что и указание всех вышеперечисленных атрибутов по отдельности, за исключением того, что невозможно скопировать контекст или же xattr не выдаст статус выхода из строя.
Если не указано, значение по умолчанию attr_list является ' режим, владение, отметки времени '.
--no-preserve = attr_list Не сохранять указанные атрибуты.
--родители При необходимости создайте отсутствующие родительские каталоги в месте назначения при копировании в целевую папку. каталог , согласно пути, указанному в источник .

Например, ' cp --parents dir2 / dir3 / file dir1 'создает файл назначения' каталог1 / каталог2 / каталог3 / файл ', даже если dir2 а также dir3 в настоящее время не существуют под dir1 .
,
,
- рекурсивный
Рекурсивное копирование каталогов.
--reflink = [ когда ] Выполните оптимизированное клонирование CoW («копирование при записи»), если целевая файловая система поддерживает это. Результирующая копия будет использовать те же байты на диске, что и исходный файл, до тех пор, пока копия не будет изменена. Имейте в виду, что это означает, что если исходные байты повреждены, место назначения будет совместно использовать поврежденные данные.

В когда Параметр определяет, что произойдет, если копирование при записи не поддерживается файловой системой назначения. Если когда является всегда (по умолчанию), копирование не выполняется. Если авто , копирование будет продолжено с использованием стандартного поведения копирования.
--remove-destination Удалите каждый существующий файл назначения перед попыткой его открытия (в отличие от --сила вариант, который удаляет адресат только после неудачной попытки открытия).
--sparse = когда Управляйте созданием разреженных файлов.

Разреженный файл содержит «дыры», где «дыра» - это последовательность нулевых байтов, которая не занимает места на физическом диске. Когда файл читается, дыры читаются как нули. Это может сэкономить место на диске, поскольку многие файлы содержат длинные последовательности нулей. По умолчанию, cp обнаруживает разреженные файлы и также создает разреженные файлы назначения.

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

авто Если источник редкий, попытайтесь сделать место назначения разреженным. Если место назначения существует и представляет собой нестандартный файл, не пытайтесь сделать его разреженным. Это значение по умолчанию.
всегда Для каждой достаточно длинной последовательности нулевых байтов в источнике попытайтесь проделать разреженную дыру в месте назначения, даже если входной файл не является разреженным. Это может быть полезно, если исходная файловая система не поддерживает разреженные файлы; разреженный файл может быть соответствующим образом создан в целевой файловой системе.
никогда Никогда не делайте выходной файл разреженным. Некоторые специальные файлы, такие как файл подкачки, никогда не должны быть разреженными. В этих случаях следует использовать эту опцию.
--strip-trailing-слеши Удалите все завершающие косые черты с каждого источник аргумент.
-s ,
--символическая ссылка
Делайте символические ссылки вместо копирования самих файлов. Все исходные файлы должны быть абсолютными путями, начинающимися с косой черты, если конечные файлы не находятся в текущем каталоге.
-S ,
--suffix = суффикс
Заменить обычный суффикс резервной копии.
-t ,
--target-directory = каталог
Копировать все источник аргументы в каталог
-T ,
--no-target-directory
Удовольствие назначения как обычный файл.
-u ,
--Обновить
Копировать только тогда, когда источник файл новее, чем конечный файл, или если конечный файл отсутствует.
-v ,
--подробный
Подробный режим; объясните, что делается.
-Икс ,
--один-файловая-система
Работайте только с файловой системой, в которой была выполнена команда. Если cp пытается перейти границу с другой файловой системой, эти файлы пропускаются. Это включает в себя сетевые диски, другой раздел - любой файл, который находится в файловой системе с другим устанавливать точка.

Каталог, представляющий саму точку монтирования, копируется, но не просматривается.

Если -v указано, вы увидите, какие именно файлы пропущены.
--помощь Отобразите справочное сообщение и выйдите.
--версия Вывести информацию о версии и выйти.

По умолчанию разреженный источник файлы обнаруживаются грубой эвристикой, и соответствующие назначения файл также делается разреженным. Это поведение, выбранное --sparse = авто . Указать --sparse = всегда создать разреженный назначения файл всякий раз, когда источник файл содержит достаточно длинную последовательность нулевых байтов. Использовать --sparse = никогда чтобы запретить создание разреженных файлов.

Когда --reflink [ = всегда ] указан, cp выполняет облегченную копию, где данные блоки копируются только при изменении. Если это невозможно, копировать не удается; или если --reflink = авто указано, cp возвращается к стандартной операции копирования.

Управление версиями

Когда используешь -b / --резервное копирование , суффикс резервной копии - ' ~ ', если не установлено с --суффикс или же SIMPLE_BACKUP_SUFFIX . Метод контроля версий можно выбрать с помощью --backup = контроль вариант или через УПРАВЛЕНИЕ ВЕРСИЯМИ переменная окружения . Возможные значения контроль или же УПРАВЛЕНИЕ ВЕРСИЯМИ находятся:

никто , выключенный Никогда не делайте резервные копии (даже если --резервное копирование дано).
пронумерован , т Сделайте пронумерованные резервные копии.
существующий , ноль Пронумерованный если существуют пронумерованные резервные копии, просто иначе.
просто , никогда Всегда делайте простые резервные копии.

В частном случае cp делает резервную копию источник когда сила а также резервное копирование даны варианты и источник а также назначения являются тем же именем для существующего обычного файла.

Примеры

Допустим, у вас есть файл с именем picture.jpg в твоей рабочий каталог , и вы хотите сделать его копию под названием picture-02.jpg . Вы должны запустить команду:

cp picture.jpg picture-02.jpg

... и файл копируется. Здесь, picture.jpg является источником операции копирования, и picture-02.jpg это пункт назначения. Оба файла теперь существуют в вашем рабочем каталоге.

Исходный и целевой файлы также могут находиться в разных каталогах. Например,

cp /home/chuck/pictures/picture.jpg /home/chuck/backup/picture.jpg

... делает копию файла /home/chuck/pictures/picture.jpg в каталоге / главная / патрон / резервное копирование . Целевой файл также называется picture.jpg .

Если вы пользователь чак , вы можете сократить свой домашний каталог (' / домой / патрон ') с использованием тильды (' ~ '). Например,

cp ~/pictures/picture.jpg ~/backup/picture.jpg

... функционирует так же, как указанная выше команда, когда она запускается чак .

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

Или, возможно, вы хотите скопировать несколько файлы в другой каталог. Для этого вы можете указать несколько файлов в качестве источника и имя каталога в качестве места назначения. Допустим, вы пользователь Салли , и у вас есть куча файлов в каталоге / главная / салли / фотографии / названный picture-01.jpg , picture-02.jpg и т. д. и вы хотите скопировать их в каталог / главная / салли / резервное копирование изображений / . Эта команда сделает свое дело:

cp ~/pictures/picture-*.jpg ~/picture-backup

Здесь мы используем подстановочный знак (звездочка, ' * '), чтобы указать, что исходные файлы - это все файлы в каталоге / главная / салли / картинки чье имя начинается с ' картина- 'и имеет расширение' .jpg '. Они копируются в каталог / главная / салли / резервное копирование изображений , предполагая, что этот каталог уже существует. Если его не существует, cp выдает сообщение об ошибке, а файлы не копируются.

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

cp ~/pictures/picture-01.jpg ~/pictures/picture-02.jpg ~/picture-backup

... скопирует только эти два файла, /home/sally/picture-01.jpg а также /home/sally/picture-02.jpg , в каталог / главная / салли / резервное копирование изображений .

Рекурсивное копирование файлов

Ты можешь использовать cp для копирования целых структур каталогов из одного места в другое, используя возможность выполнить рекурсивное копирование. Допустим, вы пользователь Стив и у вас есть каталог, / домой / Стив / файлы , который содержит множество файлов и подкаталогов. Вы хотите скопировать все эти файлы и все подкаталоги (а также файлы и подкаталоги, которые они содержат) в новое место, / Главная / Стив / файлы-резервное копирование . Вы можете скопировать их все с помощью команды:

cp -R ~/files ~/files-backup

... и вся структура каталогов копируется в каталог / Главная / Стив / файлы-резервное копирование . При выполнении рекурсивного копирования:

  • Если каталог резервное копирование файлов уже существует, каталог файлы помещаются внутрь.
  • Если резервное копирование файлов делает нет уже существует, это будут будет создан и содержание принадлежащий файлы каталог находится внутри него.

Еще один полезный прием - использовать cp создавать символические ссылки в ваши исходные файлы. Возможно, вы уже знакомы с использованием пер команда для создания символических ссылок; cp - отличный способ создать сразу несколько символических ссылок.

cp создает символические ссылки, если вы укажете -s вариант. Так, например,

cp -s file.txt file2.txt

... создает символическую ссылку, file2.txt , что указывает на file.txt .

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

Примечание

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

Допустим, вы пользователь Мелисса и у вас есть набор файлов, file01.txt , file02.txt и т. д. в каталоге / главная / мелисса / myfiles . Вы хотите создать символические ссылки на эти файлы в существующем каталоге. / главная / мелисса / myfiles2 . Эта команда сделает свое дело:

cp -s ~/myfiles/file*.txt ~/myfiles2

Каталог myfiles2 теперь содержат символические ссылки на файл * .txt в каталоге / главная / мелисса / myfiles . В myfiles2 каталог должен уже существовать для успешного выполнения операции; если его не существует, cp выдает сообщение об ошибке и ничего не копируется.

Это также будет работать с рекурсивной копией. Итак, команда:

cp -R -s ~/myfiles ~/myfiles2

... воссоздает структуру каталогов / главная / мелисса / myfiles , включая любые подкаталоги и их содержимое; любые файлы создаются как символические ссылки на оригиналы, но каталоги не являются символическими ссылками, а только обычными каталогами. Если myfiles2 уже существует, cp создает внутри него каталог с именем мои файлы который содержит структуру каталогов и символические ссылки; если myfiles2 еще не существует, он создается и содержит подкаталоги и символические ссылки на файлы, которые мои файлы содержит.

Есть и другие варианты, которые вы можете предоставить cp которые влияют на его поведение. Они перечислены с точным синтаксисом команд в следующих разделах.

Сделайте копию файла в том же каталоге

cp origfile newfile

Создает копию файла в рабочий каталог названный исходный файл . Копия названа новый файл , и находится в рабочем каталоге.

Осторожность

Если целевой файл новый файл уже существует, он перезаписывается без запроса на подтверждение. Это поведение по умолчанию для всех cp операции.

Если вы хотите получать запрос перед перезаписью файла, используйте (интерактивный) вариант . Например:

cp -i oldfile newfile

Если новый файл уже существует, вам будет предложено:

cp: overwrite ‘newfile’?

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

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

cp origfile /directory/subdirectory

Создает копию файла в рабочем каталоге с именем исходный файл . Копия находится в каталоге / каталог / подкаталог , и называется исходный файл .

cp origfile /directory/subdirectory/.

То же, что и указанная выше команда. Косая черта ( /. ) подразумевается в приведенной выше форме команды. (Точка - это специальный файл в каждом каталоге Linux, что означает «этот каталог».)

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

cp origfile /directory/subdirectory/newfile

Создает копию файла в рабочем каталоге с именем исходный файл . Копия названа новый файл , и находится в каталоге / каталог / подкаталог .

Скопируйте несколько файлов в другой каталог, используя подстановочный знак

cp file* /directory/subdirectory

Скопируйте каждый файл в рабочем каталоге, имя которого начинается с файл в каталог / каталог / подкаталог . Звездочка (' * ') это подстановочный знак - специальный символ, который расширяется, чтобы соответствовать другим символам. В частности, подстановочный знак звездочки соответствует нулю или более не- пробел символы. Например, эта команда скопирует любые файлы с именем файл , file001 , file.txt , fileone.jpg , file-archive.zip , так далее.

cp file*.jpg /directory/subdirectory

Скопируйте каждый файл в рабочем каталоге, имя которого начинается с файл , и заканчивается расширением файла .jpg . Например, он сделает копии любых файлов с именем файл , file001.jpg , file002.jpg , или же file-new.jpg и т. д. Копии помещаются в каталог / каталог / подкаталог .

Скопируйте всю структуру каталогов в другое место

cp -R /one/two /three/four

Скопируйте каталог два (находится в каталоге /один ), и все два содержит, в целевой каталог /три четыре . Результат называется / три / четыре / два . Каталог /три должен уже существовать для успешного выполнения команды. Если каталог четыре еще не существует в каталоге /три , он создан.

cp file1.txt newdir

Копирует file1.txt в рабочем каталоге в папку newdir подкаталог.

cp /home/public_html/mylog.txt /home/public_html/backup/mylog.bak

Копирует файл mylog.txt в public_html каталог в public_html / резервное копирование каталог как mylog.bak .

cp -u *.txt newdir

Скопируйте все файлы, заканчивающиеся на .текст в newdir каталог, но только если файлы еще не существуют в новом каталоге или если копируемые файлы более новые.

cp -R /home/hope/files/* /home/hope/backup

Рекурсивно копирует все файлы, каталоги и подкаталоги в / главная / надежда / файлы каталог в / главная / надежда / резервное копирование каталог. Если каталог резервное копирование не существует в каталоге / главная / надежда , он создан.

cp --backup origfile newfile

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

cp --backup = пронумерованный исходный файл новый файл

Если новый файл уже существует, сделайте резервную копию существующего новый файл прежде чем перезаписать его копией исходный файл . Резервная копия новый файл назван новый файл. ~ 1 ~ если другой резервной копии не существует, или новый файл. ~ 2 ~ если новый файл. ~ 1 ~ существует и т. д.

дд - Копирование и преобразование кодировки файлов.
пер - Создайте ссылку или символическую ссылку на файл или каталог.
мв - Перемещайте файлы и каталоги из одного места в другое и при желании переименовывайте их.