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