Сохранить права собственности и права доступа к файлам при копировании файлов или каталогов в Linux
$ cp -rp ~/data /media/sk/sk_seagate/data/
Здесь я копирую содержимое папки с именем «data» на мой внешний диск.
Из справочных страниц команды cp:
-p same as --preserve=mode,ownership,timestamps --preserve[=ATTR_LIST] preserve the specified attributes (default: mode,ownership,timestamps), if possible additional attributes: context, links, xattr, all
Таким образом, если вы используете флаг -p, он сохранит все существующие атрибуты файла, такие как режим, владелец и временные метки из исходного файла.
А флаг «-r» используется здесь для рекурсивного копирования каталогов.
Значение – он будет копировать каталоги, его подкаталоги и файлы.
$ cp -a ~/data /media/sk/sk_seagate/data/
Из справочных страниц команды cp:
-a, --archive same as -dR --preserve=all
$ getfacl ~/data
$ getfacl /media/sk/sk_seagate/data/
$ scp -rp ~/data senthil@192.168.225.22:/home/senthil/
Здесь 192.168.225.22 – это IP-адрес моей удаленной системы, а «senthil» – это имя пользователя удаленной системы.
Проверьте права доступа к файлам и владение каталогом «data» в обеих системах с помощью команды «getfacl».
Сначала давайте проверим атрибуты файла каталога «data» в локальной системе:
$ getfacl data/
# file: data/ # owner: sk # group: sk user::rwx group::rwx other::r-x
Затем, проверьте, проверьте атрибуты файла каталога «data» на удаленной системе.
Вы можете напрямую войти в удаленную систему и проверить атрибуты файла на удаленного каталога с помощью команды ssh, как показано ниже.
$ ssh senthil@192.168.225.22 getfacl data
Пример вывода:
senthil@192.168.225.22's password: # file: data # owner: senthil # group: senthil user::rwx group::rwx other::r-x
Как вы могли заметить в приведенных выше данных вывода, информация о владельце и группе (то есть senthil) в моей удаленной системе различна.
Потому что флаг -p команды scp не сохраняет все разрешения.
Из справочных страниц команды scp:
-p Preserves modification times, access times, and modes from the original file.
Понятно, что флаг -p сохранит только время модификации, время доступа и режимы из исходного файла, но не владелеца.
В таких случаях вы можете создать общее имя пользователя в обеих системах и попробовать указанную выше команду для предоставления одинаковых прав владения и доступа к файлам в разных системах.
Или просто используйте команду «chown» в системе назначения, чтобы изменить владельца.
$ man cp
$ man scp