Как сохранить права доступа к файлам при копировании файлов в Linux
Права доступа к файлам являются неотъемлемой частью спецификации Unix. Однако есть некоторые вещи, о которых начинающие пользователи часто не знают, например, как сохранить права доступа к файлам в Linux при их копировании.
Поскольку скопированные файлы по сути являются новыми файлами, их разрешение зависит от umask текущего пользователя. Это может привести к ситуациям, когда у скопированных файлов или папок совершенно другие разрешения, чем у источника.
К счастью для вас, в Linux легко сохранить права доступа к файлам с помощью стандартных инструментов командной строки, таких как cp и rsync . Ознакомьтесь с приведенными ниже примерами, чтобы узнать, как копировать и сохранять разрешения в Linux.
Сохранить права доступа к файлам с помощью cp
Стандартная команда cp имеет все необходимое для сохранения прав доступа к файлам при копировании. Вы можете использовать параметр -p команды cp, чтобы сохранить режим, право собственности и временные метки файла.
cp -p source-file dest-file
Однако вам нужно будет добавить к этой команде параметр -r при работе с каталогами. Он скопирует все подкаталоги и отдельные файлы с сохранением исходных разрешений.
cp -rp source-dir/ dest-dir/
Вы также можете использовать параметр -a в cp, чтобы сохранить права доступа к файлам. Это позволяет в режиме архива, сохраняя все от прав доступа к файлам в SELinux контекстах.
cp -a source-dir/ dest-dir/
Сохранение разрешений в Linux с помощью rsync
Вы также можете использовать утилиту rsync для сохранения разрешений на копирование в Linux. Многие администраторы предпочитают rsync над cp из-за его более высокой скорости копирования. Поскольку rsync копирует только обновленную часть файла, они больше подходят для таких задач, как клонирование жесткого диска Linux .
rsync -a source-dir/ dest-dir
-A вариант Rsync включает режим архивирования, который сохраняет файл атрибуты , как права доступа и домовладения. Вы можете использовать параметр -v для подробного вывода и -h для просмотра чисел в удобочитаемом формате.
rsync -avh source-dir/ dest-dir
Также обратите внимание на исключение конечной косой черты ( / ) из каталога назначения. Добавление конечной косой черты к месту назначения заставит rsync скопировать файлы на другой уровень подкаталога.
Проверить права доступа к файлам в Linux
Вы можете легко проверить права доступа к файлам в Linux с помощью команды getfacl (получить списки управления доступом к файлам). Он проверит, были ли сохранены разрешения должным образом.
getfacl source-file
getfacl dest-file
Копирование файлов с сохранением разрешений в Linux
И cp, и rsync предоставляют стандартные параметры для сохранения прав доступа к файлам в Linux. Вы можете использовать cp для повседневных задач, в то время как rsync лучше подходит для крупномасштабных данных. Не забудьте проверить разрешения с помощью getfacl после завершения копирования.
Хотя rsync может копировать файлы между удаленными компьютерами, команда scp (безопасное копирование) является еще одним подходящим вариантом для этой задачи. Вы можете безопасно создавать резервные копии файлов в и из сетевых систем с помощью scp.