(От: /programming/15245144/copy-file-permissions-but-not-files , закрыт, поскольку не по теме)
У меня есть две копии одного и того же дерева каталогов. Они почти имеют одинаковые файлы в обеих (одна версия может иметь пару дополнительных или отсутствующих файлов). Однако большинство файлов являются общими для обоих каталогов (имеют одинаковые относительные пути и все).
Предположим, это в каталогах:
version1/
version2/
Проблема в том, что разрешения в версии 1 / испортились, и я хотел бы скопировать разрешения из версии 2 /, но сделать это без замены файлов в версии 1 /, которые являются более новыми.
Есть ли автоматический способ сделать это с помощью команд оболочки или сценариев?
unix
file-permissions
unix-shell
copying
Мариано Панига
источник
источник
Ответы:
GNU cp знает
--attributes-only
флаг, начиная с coreutils 8.6источник
Моя версия
cp
не имеет--attributes-only
флага, поэтому я решил это. Кратко проверено на простых папках YMMV.источник
Вы можете, но я не думаю, что "автоматизированным способом"!
У GNU chown и GNU chmod есть
--reference=RFILE
параметр, который вы можете использовать.Он использует
RFILE
настройки (права доступа, владелец, группа и т. Д.) И копирует их вyourfile
.Руководство объясняет более подробно.
источник
В моем случае я решил с помощью команды «stat» с «find» и «vi», чтобы создать скрипт, который применяет разрешения.
В "vi" я вставил во все строки команду "chmod":
%s/^/chmod /g
я скопировал скрипт вversion2/
каталог и выполнил его.Другие решения кажутся действительными, но я не проверял их в случае.
источник
Вдохновленный ответом Мариано Паниги, я думаю, что у меня есть лучший вариант, который не требует команд vi и поиска / замены. Я даже хочу скопировать информацию о владельце тоже (UID / GID).
Вы можете настроить команды внутри
stat -c '...'
что угодно. Для всех доступных вариантов, смman stat
.источник