Как скопировать файлы и каталоги в то время как сдерживающие полномочия файла в UNIX

Как я могу скопировать файлы и каталоги от одного пользователя другому пользователю в системе Unix так, чтобы полномочия файла не изменялись? Получатель не является владельцем, но у меня есть корневые полномочия.

Спасибо.

0
задан 09.02.2012, 21:14

1 ответ

Команда 'CP' POSIX обеспечивает'cp -pPR source-dir target-dir'для копирования файловых иерархий вокруг. Это сохраняет большинство метаданных. Если выполнено корнем, то копия будет иметь владельца и группу первоначального владельца. Если выполнено простыми смертными (не корень), то человек, запускающий скрипт, будет владеть файлами, и обычно, группа для файлов будет эффективной группой человека, запускающего скрипт. (Исключение было бы то, если целевой каталог имеет набор битов SGID - или Вы работаете на MacOS X.),

Другой способ сделать его, который может быть выгодным, состоит в том, чтобы использовать tar или cpio. Основное преимущество их - то, что они обрабатывают жесткие ссылки лучше. cp управляйте рассматривает каждое имя файла как отдельный файл, даже если это - жесткая ссылка на другой файл, уже скопированный. В отличие от этого, archivers распознают общность и сохраняют жесткие ссылки, уменьшая объем данных, который будет передан. Еще одно преимущество archivers состоит в том, что можно переместить файлы между машинами.

Необходимо будет проверить что копия машины tar способно к выполнению, в чем Вы нуждаетесь, но с tar GNU (и tar BSD/MacOS), можно сделать:

cd source-dir
tar -cf - . | tar -xf - -C target-dir

И с cpio можно сделать:

cd source-dir
find . | cpio -pdmuB target-dir

Отметьте это'find | cpio'мог столкнуться с проблемами с экзотическими именами файлов с новыми строками в именах файлов (другие символы не доставляют неприятности AFAIK).

1
ответ дан 24.11.2019, 12:02

Теги

Похожие вопросы