Я ищу разницу между cp -r
и cp -a
. Что означает «рекурсивный» в смысле копирования файлов из папки?
Я ищу разницу между cp -r
и cp -a
. Что означает «рекурсивный» в смысле копирования файлов из папки?
Ответы:
Рекурсивный означает, что cp
копирует содержимое каталогов, и если в каталоге есть подкаталоги, они также копируются (рекурсивно). Без -R
, cp
команда пропускает каталоги. -r
то же самое -R
в Linux, в некоторых случаях отличается от некоторых других вариантов Unix.
По умолчанию cp
создается новый файл, который имеет такое же содержимое, что и старый файл, и те же разрешения, но ограничен umask ; копия датируется с момента ее создания и принадлежит пользователю, выполняющему ее. С помощью этой -p
опции копия имеет то же время модификации, то же время доступа и те же разрешения, что и оригинал. Он также имеет того же владельца и группу, что и оригинал, если пользователь, делающий копию, имеет разрешение на создание таких файлов.
-a
Опция означает , -R
и -p
, плюс несколько других вариантов сохранения. Он пытается создать копию, максимально приближенную к оригиналу: то же дерево каталогов, те же типы файлов, то же содержимое, те же метаданные (время, разрешения, расширенные атрибуты и т. Д.).
-r
потому что -a
(для a
rchive) всегда самое безопасное и, вероятно, то, что вы ожидали.
-r
- это то, что вы используете какой-то вариант Unix, отличный от Linux, который не имеет -a
, и обычно вы используете cp -rp
. Или rsync -a
.
Параметр -r или -R для «рекурсивный» означает, что он будет копировать все файлы, включая файлы внутри подпапок.
Указанная опция -a аналогична опции -dR, что означает, что она будет сохранять ссылки, а также копировать содержимое подкаталогов. Под сохранением ссылок подразумевается, что он не будет переходить по ссылкам, поскольку он рекурсивно копирует.