Копирование файлов и папок в системах Unix. Как запросить перед перезаписью файлов при копировании в Linux
Э то руководство покажет вам, как копировать файлы и каталоги в вашей системе с помощью командной строки Linux.
Команда использующаяся для копирования файлов является ср.
Как скопировать файл из одной директории в другую с помощью Linux
Синтаксис для копирования файла с одного места на другое выглядит следующим образом:
Cp /source/path/name /target/path/name
- home
- andreyex
- documents
- folder_one
- file_one
- file_two
- file_three
- folder_two
- file4
- folder_one
- documents
- andreyex
Если вы хотите скопировать file_one из текущего местоположения в / home/ documents / folder_one в / home/ documents / folder_two, то вы должны ввести следующую команду в командной строке:
Cp /home/andreyex/documents/folder_one/file_one /home/andreyex/documents/folder_two/file_one
Есть некоторые ярлыки вы можете сделать здесь.
/ Главная часть может быть заменена на тильду (~), что объясняется в этой статье. Это изменяет команду на эту
cp ~/documents/folder_one/file_one ~/documents/folder_two/file_one
Вы можете просто опустить имя файла для цели, если вы собираетесь использовать то же имя файла
Cp ~/documents/folder_one/file_one ~/documents/folder_two
Если вы уже в целевой папке вы можете просто заменить путь к цели с полной остановкой.
Cp ~/documents/folder_one/file_one
В качестве альтернативы, если вы уже в исходной папке вы можете просто указать имя файла в качестве источника следующим образом:
Как сделать резервную копию перед копированием файлов в Linux
В предыдущем разделе folder_one содержит файл с именем file_one и folder_two не делает. Представьте себе, что folder_two имеет файл с именем file_one и вы запустили следующую команду:
Cp file_one ~/documents/folder_two
Приведенная выше команда будет перезаписывать file_one, который в настоящее время находится в folder_two. Там нет подсказок, нет предупреждения и сообщения об ошибках, потому что, вы указали действительную команду.
Вы можете принять меры предосторожности при копировании файлов, получая Linux для создания резервной копии файла, прежде чем он переписывает его. Просто используйте следующую команду:
Cp -b /source/file /target/file
Например:
Cp -b ~/documents/folder_one/file_one ~/documents/folder_two/file_one
В папке назначения теперь будет файл, который был скопирован и там будет также файл с тильдой (~) в конце, которая является резервной копией оригинального файла.
Вы можете изменить команду резервного копирования для работы в несколько ином виде, так что она создает пронумерованные резервные копии. Вы можете это сделать, если вы уже скопировали файлы и резервные копии уже существуют. Это является одной из форм контроля версий
Cp --backup=numbered ~/documents/folder_one/file_one ~/documents/folder_two/file_one
Имя файла для резервных копий будет вдоль меняться 1.~1~, file_one.~2~ и т.д.
Как запросить перед перезаписью файлов при копировании в Linux
Если вы не хотите делать резервные копии файлов, лежащих в вашей файловой системе, но вы также хотите, убедиться, что команда копия не перезаписывает файл без разбора вы можете получить приглашение, чтобы показать вопросом, не хотите ли вы перезаписать.
Для этого используйте следующий синтаксис:
Cp -i /source/file /target/file
Например:
Cp -i ~/documents/folder_one/file_one ~/documents/folder_two/file_one
Сообщение будет выглядеть следующим образом: cp: overwrite ‘./file1’?
Для перезаписи файла нажмите Y на клавиатуре или для отмены нажмите N или CTRL и C одновременно.
Что происходит при копировании символьных ссылок в Linux
Представьте себе, вы имеете следующую структуру папок:
- home
- andreyex
- documents
- folder_one
- file_one
- folder_two
- file_one (symbolic links points to folder_one/file_one)
- folder3
- folder_one
- documents
- andreyex
Посмотрите на следующую команду:
Cp ~/documents/folder_one/file_one ~/documents/folder3/file_one
Это не должно быть ничего нового, так как он копирует физический файл из одной папки в другую.
Что происходит, однако, если скопировать символическую ссылку из folder_two в folder3?
Cp ~/documents/folder_two/file_one ~/documents/folder3/file_one
Файл, который копируется в folder3 не будет символической ссылкой. Это на самом деле файл, на который указывает символическая ссылка, так на самом деле вы получите тот же результат, как если бы путем копирования file_one из folder_one.
Кстати вы можете получить тот же результат с помощью следующей команды:
Cp -H ~/documents/folder_two/file_one ~/documents/folder3/file_one
Просто чтобы быть уверенным, хотя есть еще один переключатель, который абсолютно заставляет копировать файл, а не символическую ссылку:
Cp -L ~/documents/folder_two/file_one ~/documents/folder3/file_one
Если вы хотите скопировать символическую ссылку необходимо указать следующую команду:
Cp -d ~/documents/folder_two/file_one ~/documents/folder3/file_one
Cp -P ~/documents/folder_two/file_one ~documents/folder3/file_one
Как создавать жесткие ссылки с помощью команды ср
Это руководство расскажет вам все, что вам нужно знать о жестких ссылках.
Cp -l ~/source/file ~/target/file
В качестве примера того, почему вы могли бы использовать жесткую ссылку учесть, что у вас есть папка под названием видео и в этой папке видео у вас есть действительно большой видео файл с именем honeymoon_video.mp4. Теперь представьте, что вы также хотите, чтобы видео быть известным как barbados_video.mp4, потому что он также имеет кадры Барбадоса.
Вы можете просто скопировать файл и дать ему новое имя, но это означает, что вы увеличиваете в два раза больше дискового пространства для того, что, по существу, то же самое видео.
Вы могли бы вместо того, чтобы создать символическую ссылку с именем barbados_video.mp4, которая указывает на файл honeymoon_video.mp4. Это будет работать хорошо, но если кто-то удалил honeymoon_video.mp4 вы остались бы со ссылкой и ничего другого и связь по-прежнему занимает дисковое пространство.
Единственное отличие состоит в том, что они содержат разное количество индексных дескрипторов. (уникальные идентификаторы). Удаление файла honeymoon_video.mp4 не удаляет файл, но только снижает количество для этого файла на 1. Файл будет удален только если все ссылки на этот файл будут удалены.
Cp -l /videos/honeymoon_video.mp4 /videos/barbados_video.mp4
Как создать символические ссылки с помощью команды ср
Cp -s /source/file /target/file
Опять же я бы лично вообще используют команду ln -s, но вместо этого работает хорошо.
Как скопировать файлы, если они новее
Если вы хотите скопировать файлы в папку, но только с перезаписью файлов назначения, если исходный файл новее, то вы можете использовать следующую команду:
Cp -u /source/file /target/file
Стоит отметить, что если файл не существует на целевой стороне, то копия будет иметь место.
Как скопировать несколько файлов
Вы можете предоставить более одного исходного файла внутри команды копирования следующим образом:
Cp /source/file_one /source/file_two /source/file_three /target
Приведенная выше команда будет копировать file_one, file_two и file_three в целевую папку.
Если файлы соответствуют определенному шаблону, то вы можете также использовать групповые символы следующим образом:
Cp /home/andreyex/music/*.mp3 /home/andreyex/music2
Приведенная выше команда будет копировать все файлы с расширением.mp3 в папку music2.
Как скопировать папки
Копирование папок такое же, как копирование файлов.
Например представьте, что вы имеете следующую структуру папок:
- home
- andreyex
- documents
- folder_one
- file_one
- file_two
- folder_two
- folder_one
- documents
- andreyex
Представьте, что вы хотите переместить папку folder_one в папку folder_two следующим образом:
- home
- andreyex
- documents
- folder_two
- folder_one
- file_one
- file_two
- folder_one
- folder_two
- documents
- andreyex
Вы можете использовать следующую команду:
Cp -r /home/andreyex/documents/folder_one /home/andreyex/documents/folder_two
Кроме того, можно использовать следующую команду:
Cp -R /home/andreyex/documents/folder_one /home/andreyex/documents/folder_two
Это копирует содержимое folder_one, а также любые суб-каталоги и файлы в пределах подкаталогов.
Резюме
Это руководство дало вам инструменты требующиеся для копирования файлов в Linux. Для всего остального вы можете использовать команду Linux man.
Команда cp и есть та палочка-выручалочка, которая всегда придет на помощь. Если Вы только что установили линукс и у Вас не установлен , а для настройки выхода в интернет необходимо сконфигурировать определенные файлы, то команда cp выручит нас, как никакая другая.
Допустим, для настройки выхода в интернет Вам нужно изменить некоторые файлы, но из-за отсутствия прав доступа к ним Вы не можете этого сделать посредством графического интерфейса. Но зато Вы можете создать файл посредством графического интерфейса в любой доступной папке (например /home/имя_пользователя), заполнить его согласно инструкции или мануалу и, запустив с последующей , заменить при помощи команды cp существующий файл на созданным Вами.
Например, Вам, как и мне, понадобилось изменить файл /etc/network/interfaces. Лично я, при помощи графического интерфейса, создал файл interfaces в /home/viuktor/. Скопировал в него содержимое оригинала (файла /etc/network/interfaces), добавил нужные строки и сохранил. А потом, при помощи cp заменил файл /etc/network/interfaces файлом /home/viuktor/interfaces..
Правда, выполняя данную операцию, следует проявить максимальное внимание, ведь очень часто некоторые файлы требуется дополнить одной или более строками. Потому, если в мануле сказано «добавьте…», ни в коем случае не забывайте скопировать все из оригинала в созданный вами файл.
Команда cp применяется для копирования и переноса файлов.
Она имеет следующий синтаксис cp {параметр} <источник> <пункт назначения>
ОПИСАНИЕ В первой форме утилита cp копирует содержимое файла исходный_файл в целевой_файл. Во второй форме содержимое каждого указанного файла копи- руется в целевой_каталог. Имена самих файлов при этом не изменяются. Если cp обнаруживает попытку копирования файла самого в себя, копирование не производится. Имеются следующие опции: -H Если указана опция -R, следовать символическим ссылкам, указанным в командной строке, но не следовать символическим ссылкам, встречаю- щимся в процессе обхода дерева каталогов. -L Если указана опция -R, следовать всем символическим ссылкам. -P Если указана опция -R, не следовать никаким символическим ссылкам. Это режим работы по умолчанию. -R Если исходный_файл указывает на каталог, cp копирует этот каталог вместе со всем деревом файловой иерархии, которое он содержит. Ес- ли исходный_файл оканчивается на /, копируется не сам каталог, а только его содержимое. Эта опция также указывает на необходимость копирования символических ссылок, а не объектов, на которые они указывают, и заставляет cp создавать специальные файлы вместо того, чтобы копировать их, как обычные. Создаваемые каталоги имеют те же права доступа, что и исходные каталоги, вне зависимости от действу- ющего для процесса значения umask. Обратите внимание, что cp копирует жёсткие ссылки как отдельные файлы. Если вам нужно сохранять жёсткие ссылки, используйте tar(1), cpio(1) или pax(1). -f Для каждого уже существующего целевого имени пути, удалять его и создавать новый файл, не требуя подтверждения операции, вне зависи- мости от его прав доступа. (Опция -f отменяет действие любой из ранее указанных опций -i или -n.) -i Заставляет cp выдавать запрос через стандартный файл ошибок перед копированием файла, которое бы вызвало перезапись существующего файла. Если ответ, полученный со стандартного ввода, начинается символом `y" или `Y", будет предпринята попытка копирования. (Опция -i отменяет действие любой из ранее заданных опций -f или -n.) -l Создавать жёсткие ссылки на обычные файлы в иерархии вместо того, чтобы их копировать. -n Не перезаписывать существующие файлы. (Опция -n отменяет действие любой из предшествующих опций -f или -i.) -p Заставляет cp сохранять следующие атрибуты каждого исходного файла в создаваемой копии: время модификации, время доступа, флаги файла, режим доступа, идентификаторы пользователя и группы, насколько это позволено правами доступа. Если значения идентификаторов пользователя и группы не могут быть сохранены, не выводится никакого сообщения об ошибке, и возвращае- мое программой значение статуса завершения не изменяется. Если исходный файл имеет установленный бит set-user-ID и значение идентификатора пользователя не может быть сохранено, бит set-user- ID в атрибутах копии не сохраняется. Если исходный файл имеет установленный бит set-group-ID и значение идентификатора группы не может быть сохранено, бит set-group-ID в атрибутах копии не сохра- няется. Если исходный файл имеет установленные биты set-user-ID и set-group-ID и значение либо идентификатора пользователя, либо идентификатора группы не может быть сохранено, ни один из битов set-user-ID и set-group-ID в атрибутах копии не сохраняется. -v Выводить больше информации, показывая файлы по мере их копирования. Для каждого уже существующего целевого файла, его содержимое перезаписы- вается, если позволяют права. Его режим доступа и идентификаторы пользо- вателя и группы не изменяются, если не задана опция -p. Во второй синтаксической форме целевой_каталог должен существовать, если только не был указан единственный исходный_файл, являющийся каталогом, и опция -R. Если целевой файл не существует, используются права исходного файла, изменённые в соответствии со значением umask (см. csh(1)). Если исходный файл имеет установленный бит set-user-ID, этот бит сбрасывается, если только исходный файл и файл назначения не принадлежат одному владельцу. Если исходный файл имеет установленный бит set-user-ID, этот бит сбрасы- вается, если только исходный файл и файл назначения не принадлежат одной группе, а пользователь является членом этой группы. Если установлены оба бита, и set-user-ID, и set-group-ID, должны быть соблюдены оба вышеупомя- нутых условия, в противном случае оба этих бита сбрасываются. Для создания или перезаписи файлов требуются соответствующие права доступа. Утилита cp всегда следует символическим ссылкам, если только не указана опция -R (в этом случае она по умолчанию символическим ссылкам не сле- дует). Опции -H или -L (совместно с опцией -R) приводят к тому, что cp будет следовать символическим ссылкам, как описано выше. Опции -H, -L и -P игнорируются, если не указана опция -R. Кроме этого, эти опции отме- няют друг друга, и действия команды определяются той опцией, которая была указана последней. Если cp получает сигнал SIGINFO (см. аргумент status для stty(1)), на стандартный вывод будут выведены имена текущего исходного и целевого фай- лов, а также прогресс копирования в процентах. СТАТУС ЗАВЕРШЕНИЯ Утилита cp возвращает 0 в случае успешного завершения и >0 в случае воз- никновения ошибки. СОВМЕСТИМОСТЬ Старые версии cp имели опцию -r. Данная реализация поддерживает эту опцию, однако её поведение отличается от исторического. Использование этой опции настоятельно не рекомендуется, так как её поведение зависит от конкретной реализации. Во FreeBSD, -r является синонимом для -RL и рабо- тает так же, если это не переопределено другими флагами. Реализация -r в старых версиях отличалась тем, что при воссоздании иерархии файлов специ- альные файлы копировались как обычные. Опции -v и -n являются нестандартными и их использование в командных сце- нариях не рекомендуется. СМОТРИ ТАКЖЕ mv(1), rcp(1), umask(2), fts(3), symlink(7) ИСТОРИЯ Команда cp появилась в Version 1 AT&T UNIX.
Updated: 12/29/2017 by Computer Hope
About cp
The cp command is makes copies of files and directories.
Syntax
cp [option ]... [-T ] source destination cp [option ]... source ... directory cp [option ]... -t directory source ... cp --help cp --versionOptions
-a
, --archive |
Same as -dR --preserve=ALL . When performing the copy, attempt to preserve as much of the original file structure, attributes, and associated metadata as possible. This metadata includes security context data if you are running SELinux . |
--attributes-only | Don"t copy the file data, just create a file with the same attributes . If the destination file already exists, don"t alter its contents. You can control exactly which attributes are copied with the --preserve option. |
--backup [= control ] | Make a backup of each existing destination file that would otherwise be overwritten or removed. The control
parameter specifies what version control method to use; see for details. As a special case, cp --force --backup will make a backup of source when source and dest are the same, regular file. |
-b | Like --backup , but does not accept a control argument; the default control method is always used. |
--copy-contents | When operating recursively , copy contents of special files, such as FIFOs and devices found in /dev . You usually don"t want to use this option, because it can have undesired results, such as hanging forever or filling up your entire disk. However, this option is available for special, expert use cases. |
-d | Copy symbolic links themselves, rather than the files they refer to, and preserve hard links between source files in the copies. Same as "--no-dereference --preserve=links ". |
-f
, --force |
If an existing destination file cannot be opened, remove it and try again. This option has no effect if the -n /--no-clobber option is used. However, it applies independently of -i /--interactive ; neither option cancels the effect of the other. |
-i
, --interactive |
Prompt before overwrite (overrides a previous -n option). |
-H | Follow symlinks specified on the command line, but preserve discovered links. The directory representing the mount point itself will be copied, but not traversed. If -v is specified, you will see exactly which files have been skipped. |
--help | Display a help message, and exit. |
--version | Output version information, and exit. |
By default, sparse source files are detected by a crude heuristic and the corresponding destination file is made sparse as well. That is the behavior selected by --sparse=auto . Specify --sparse=always to create a sparse destination file whenever the source file contains a long enough sequence of zero bytes. Use --sparse=never to inhibit creation of sparse files.
When --reflink [=always ] is specified, cp performs a lightweight copy, where the data blocks are copied only when modified. If this is not possible, the copy fails; or, if --reflink=auto is specified, cp falls back to a standard copy operation.
Version control
When using -b /--backup , the backup suffix is "~ ", unless set with --suffix or SIMPLE_BACKUP_SUFFIX . The version control method may be selected via the --backup= control option or through the VERSION_CONTROL environment variable . The possible values of control or VERSION_CONTROL are:
none , off | Never make backups (even if --backup is given). |
numbered , t | Make numbered backups. |
existing , nil | Numbered if numbered backups exist, simple otherwise. |
simple , never | Always make simple backups. |
As a special case, cp makes a backup of source when the force and backup options are given and source and destination are the same name for an existing, regular file.
Examples
Let"s say you have a file named picture.jpg in your working directory , and you want to make a copy of it called picture-02.jpg . You would run the command:
Cp picture.jpg picture-02.jpg
And the file will be copied. Here, picture.jpg is the source of the copy operation, and picture-02.jpg is the destination. Both files now exist in your working directory.
The source and destination files may also reside in different directories. For instance,
Cp /home/chuck/pictures/picture.jpg /home/chuck/backup/picture.jpg
Will make a copy of the file /home/chuck/pictures/picture.jpg in the directory /home/chuck/backup . The destination file will also be named picture.jpg .
If you are the user chuck , you can abbreviate your home directory ("/home/chuck ") using a tilde ("~ "). For instance,
Cp ~/pictures/picture.jpg ~/backup/picture.jpg
Functions the same as the above command when it is run by chuck .
Copying multiple files to a directory
Or, perhaps you want to copy multiple files into another directory. To accomplish this, you can specify multiple files as the source, and a directory name as the destination. Let"s say you are the user sally , and you have a bunch of files in the directory /home/sally/pictures/ named picture-01.jpg , picture-02.jpg , etc. and you want to copy them into the directory /home/sally/picture-backup/ . This command will do the trick:
Cp ~/pictures/picture-*.jpg ~/picture-backup cp -i oldfile newfile
If newfile already exists, you will be prompted:
Cp: overwrite ‘newfile’?
If you type y (or yes , Y , YES , or any other combination of upper and lowercase of these), then newfile will be overwritten with a copy of origfile . Typing anything else will abort the operation.
Copy a file into another directory
cp origfile /directory/subdirectoryorigfile . The copy will be located in the directory /directory/subdirectory , and will be named origfile .
Cp origfile /directory/subdirectory/.
Same as the above command. The slash-dot (/. ) is implied in the above form of the command. (The dot is a special file in every Linux directory which means "this directory.")
Copy a file into another directory, and give it a new name
cp origfile /directory/subdirectory/newfileCreates a copy of the file in the working directory named origfile . The copy will be named newfile , and will be located in the directory /directory/subdirectory .
Copy multiple files into another directory, using a wildcard
cp file* /directory/subdirectoryfile into the directory /directory/subdirectory . The asterisk ("* ") is a wildcard — a special character which expands to match other characters. Specifically, the asterisk wildcard matches zero or more non-whitespace characters. For instance, this command will copy any files named file , file001 , file.txt , fileone.jpg , file-archive.zip , etc.
Cp file*.jpg /directory/subdirectory
Copy every file in the working directory whose name begins with file , and ends with the file extension .jpg . For instance, it would make copies of any files named file , file001.jpg , file002.jpg , or file-new.jpg , etc. The copies will be placed into the directory /directory/subdirectory .
Copy an entire directory structure to another location
cp -R /one/two /three/fourCopy the directory two (located in the directory /one ), and everything two contains, into the destination directory /three/four . The result will be called /three/four/two . The directory /three must already exist for the command to succeed. If the directory four does not already exist in the directory /three , it will be created.
Cp file1.txt newdir
Copies the file1.txt in the working directory to the newdir subdirectory.
Cp /home/public_html/mylog.txt /home/public_html/backup/mylog.bak
Copies the file mylog.txt in the public_html directory into the public_html/backup directory as mylog.bak .
Cp -u *.txt newdir
Copy all files ending in .txt into the newdir directory, but only if the files do not already exist in the new directory, or if the files being copied are newer.
Cp -R /home/hope/files/* /home/hope/backup
Recursively copies all the files, directories, and subdirectories in the /home/hope/files directory into the /home/hope/backup directory. If the directory backup does not exist in the directory /home/hope , it will be created.
cp --backup origfile newfile
If newfile newfile origfile . By default, the backup of newfile will be named newfile~ .
cp --backup=numbered origfile newfile
If newfile already exists, make a backup of the existing newfile before overwriting it with a copy of origfile . The backup of newfile will be named newfile.~1~ if no other backup exists, or newfile.~2~ if newfile.~1~ exists, etc.
Related commands
dd
— Copy and convert the encoding of files.
ln
— Create a link, or a symbolic link, to a file or directory.
mv
— Move files and directories from one location to another, and optionally rename them.
Возможно использование следующих опций: -H Если указана опция -R , следовать по символическим ссылкам, указанным в командной строке, но не следовать по символическим ссылкам, встречающимся в процессе обхода дерева каталогов. -L Если указана опция -R , следовать всем символическим ссылкам. -P Если указана опция -R , не следовать никаким символическим ссылкам. Это режим работы cp по умолчанию. -R Если аргумент исходный_файл указывает на каталог, cp копирует этот каталог вместе со всем деревом файловой иерархии, которое он содержит. Если исходный_файл оканчивается на / , копируется не сам каталог, а только его содержимое. Эта опция также указывает на необходимость копирования символических ссылок, а не объектов, на которые они указывают, и заставляет cp создавать специальные файлы вместо того, чтобы копировать их, как обычные. Создаваемые каталоги имеют те же права доступа, что и исходные каталоги, вне зависимости от действующего для процесса значения umask . Обратите внимание, что cp копирует жёсткие ссылки как отдельные файлы. Если вам нужно сохранять жёсткие ссылки, используйте tar(1) , cpio(1) или pax(1) . -f Для каждого уже существующего целевого имени пути, удалять его и создавать новый файл, не требуя подтверждения операции, вне зависимости от его прав доступа. (Опция -f отменяет действие любой из ранее указанных опций -i или -n ). -i Если в результате копирования будет перезаписан существующий файл, cp запросит подтверждение пользователя. Если ответ, полученный со стандартного ввода, начинается символом "y " или "Y ", будет предпринята попытка копирования (опция -i отменяет действие любой из ранее заданных опций -f или -n ) -l Создавать жёсткие ссылки на обычные файлы в иерархии вместо того, чтобы их копировать. -n Не перезаписывать существующие файлы. (Опция -n отменяет действие любой из предшествующих опций -f или -i ). -p Заставляет cp сохранять следующие атрибуты каждого исходного файла в создаваемой копии: время модификации, время доступа, флаги файла, режим доступа, идентификаторы пользователя и группы, насколько это позволено правами доступа. Если значения идентификаторов пользователя и группы не могут быть сохранены, не выводится никакого сообщения об ошибке, и возвращаемое программой значение статуса завершения не изменяется. Если исходный файл имеет установленный SUID бит и значение идентификатора пользователя не может быть сохранено, SUID бит в атрибутах скопированного файла не сохраняется. Если исходный файл имеет установленный бит SGID и значение идентификатора группы не может быть сохранено, бит SGID в атрибутах копии не сохраняется. Если исходный файл имеет установленные биты SUID и SGID и значение либо идентификатора пользователя, либо идентификатора группы не может быть сохранено, ни один из битов SUID и SGID в атрибутах копии не сохраняется. -v Выводить больше информации, показывая файлы по мере их копирования.
Для каждого уже существующего целевого файла, его содержимое перезаписывается, если позволяют права доступа. Его режим доступа и идентификаторы пользователя и группы не изменяются, если не задана опция -p .
Во второй синтаксической форме целевой_каталог должен существовать, если только не был указан единственный исходный_файл , являющийся каталогом, и опция -R .
Если целевой файл не существует, используются права доступа исходного файла, изменённые в соответствии со значением umask (см. csh(1) ). Если исходный файл имеет установленный бит SUID, этот бит сбрасывается, если только исходный файл и файл назначения не принадлежат одному владельцу. Если исходный файл имеет установленный бит set-user-ID, этот бит сбрасывается, если только исходный файл и файл назначения не принадлежат одной группе, а пользователь является членом этой группы. Если установлены оба бита, и SUID, и SGID, должны быть соблюдены оба вышеупомянутых условия, в противном случае оба этих бита сбрасываются.
Для создания или перезаписи файлов требуются соответствующие права доступа.
Программа cp всегда следует символическим ссылкам, если только не указана опция -R (в этом случае она по умолчанию символическим ссылкам не следует). Опции -H или -L (совместно с опцией -R ) приводят к тому, что cp будет следовать символическим ссылкам, как описано выше. Опции -H , -L и -P игнорируются, если не указана опция -R . Кроме этого, эти опции отменяют друг друга, и действия команды определяются той опцией, которая была указана последней.
Если cp получает сигнал SIGINFO (см. аргумент status для stty(1) ), на стандартный вывод будут выведены имена текущего исходного и целевого файлов, а также прогресс копирования в процентах.
СТАТУС ЗАВЕРШЕНИЯ
Программа cp возвращает 0 в случае успешного завершения и >0 в случае возникновения ошибки.
СОВМЕСТИМОСТЬ
Старые версии cp имели опцию -r . Данная реализация поддерживает эту опцию, однако её поведение отличается от исторического. Использование этой опции настоятельно не рекомендуется, так как её поведение зависит от конкретной реализации. В , -r является синонимом для -RL и работает так же, если это не переопределено другими флагами. Реализация -r в старых версиях отличалась тем, что при воссоздании иерархии файлов специальные файлы копировались как обычные.
Опции -v и -n являются нестандартными и их использование в командных сценариях не рекомендуется.
СМОТРИ ТАКЖЕ
mv(1), rcp(1), umask(2), fts(3), symlink(7)
СТАНДАРТЫ Предполагается, что утилита cp совместима со стандартом IEEE Std 1003.2 (``POSIX.2"").
cp - копирование файлов и каталогов