Я шукаю різницю між cp -r
і cp -a
. Що означає "рекурсивний" з точки зору копіювання файлів з папки?
Я шукаю різницю між cp -r
і cp -a
. Що означає "рекурсивний" з точки зору копіювання файлів з папки?
Відповіді:
Рекурсивний означає, що cp
копіюється вміст каталогів, а якщо в каталозі є підкаталоги, вони також копіюються (рекурсивно). Без -R
цього cp
команда пропускає каталоги. -r
збігається з -R
Linux, він відрізняється в деяких крайових випадках у деяких інших варіантах unix.
За замовчуванням cp
створює новий файл, який має той самий вміст, що і старий файл, і ті ж дозволи, але обмежені umask ; копія датується моментом копіювання та належить користувачеві, який виконує копію. За допомогою -p
параметра копія має той самий час модифікації, той же час доступу та ті ж дозволи, що й оригінал. Він також має того самого власника та групу, що й оригінал, якщо користувач, який робить копію, має дозвіл на створення таких файлів.
-a
Опція означає , -R
і -p
, плюс кілька інших варіантів збереження. Він намагається зробити копію, максимально наближену до оригіналу: те саме дерево каталогів, ті ж типи файлів, той самий вміст, ті ж метадані (часи, дозволи, розширені атрибути тощо).
-r
тому що -a
(для a
ріші) це завжди найбезпечніше і, ймовірно, те, що ви очікували, що це станеться.
-r
- це те, що ви використовуєте інший варіант Unix, окрім Linux, якого немає -a
, і зазвичай ви використовуєте cp -rp
. Або rsync -a
.
Параметр -r або -R для "рекурсивного" означає, що він буде копіювати всі файли, включаючи файли всередині папок.
Перерахований варіант -a такий же, як і -dR, що означає, що він буде зберігати посилання, а також копіювати вміст підкаталогів. Що означає збереження посилань, це те, що він не буде переходити посилання, оскільки він рекурсивно копіює.