🐧 Как сохранить права собственности и права доступа к файлам при копировании файлов или каталогов |

🐧 Как сохранить права собственности и права доступа к файлам при копировании файлов или каталогов

Мануал
На днях я планировал сделать резервную копию некоторых данных из моей настольной системы Ubuntu на внешний USB-накопитель.
После того, как я перенес все данные на внешний диск, я заметил, что владелец и права доступа к файлам и каталога у источника и места назначения различны.
Но я хотел сохранить существующие атрибуты файла (такие как владелец, группа, отметка времени и т. д.) в обоих местах.
После быстрого поиска в Google и просмотра справочных страниц с командой «cp» я обнаружил, что мы можем сохранить права собственности и права доступа к файлам при копировании файлов и каталогов в Linux.
Если вы когда-либо были в такой ситуации, вот быстрый способ это реализовать.

Сохранить права собственности и права доступа к файлам при копировании файлов или каталогов в Linux

Команда cp имеет возможность копировать файлы и каталоги, но сохраняет время изменения, время доступа и режимы из исходного файла.
$ 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» используется здесь для рекурсивного копирования каталогов.

Значение – он будет копировать каталоги, его подкаталоги и файлы.
Кроме того, вы можете использовать флаг -a.
Команда включает в себя флаг -r и сохраняет все, например ссылки, атрибуты xattr, SELinux и т. д.
$ cp -a ~/data /media/sk/sk_seagate/data/

Из справочных страниц команды cp:

-a, --archive
              same as -dR --preserve=all
Чтобы убедиться, что права доступа к файлу и владелец не повреждены, используйте команду getfacl в обоих местах, то есть в источнике и в месте назначения.
$ getfacl ~/data
$ getfacl /media/sk/sk_seagate/data/
Если вы хотите скопировать файлы между локальной системой и удаленной системой в той же сети, вы можете использовать команду «scp» для передачи файлов из одной системы в другую, как показано ниже.
$ scp -rp ~/data senthil@192.168.225.22:/home/senthil/
Приведенная выше команда скопирует папку содержимого с именем «data» из моей локальной системы в удаленную систему.

Здесь 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» в системе назначения, чтобы изменить владельца.

Для получения дополнительной информации обратитесь к справочным страницам команд cp и scp.
$ man cp
$ man scp

 

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий