На сервере1
:
find . -type d -printf '%p\n%m\n' >dir_list
Передайте файл dir_list
с сервера1 на сервер2 как считаете нужным.
На сервере2
:
while read -r filename; do
read -r perms
mkdir -p "$filename"
chmod "$perms" "$filename"
done <dir_list
Это создаст все каталоги, принадлежащие пользователю, с которым вы работаете, как на сервере2
. Смена владельца не может быть осуществлена без суперпользователя.
Да, этоgetfilecon(3)
вlibselinux
:
char * context;
int easize = getfilecon("/path/to/your/file", &context);
Если возвращенный размер не -отрицательный, context
содержит контекст файла.