Как сделать резервную копию и восстановить разрешение с определенным порядком и можно сравнить, чтобы найти разницу? - PullRequest
1 голос
/ 14 апреля 2020

Я хочу найти решение для резервного копирования, восстановления, сравнения разрешений.

Сначала я могу использовать getfacl и setfacl, но вывод этого метода не упорядочен. пример
Затем я попытался этот метод , но вывод - строка из одной строки, которую трудно сравнить, чтобы найти разницу.

Есть ли какое-либо решение для резервного копирования / восстановления и сравнения разрешений для папок и файлов?

Ответы [ 2 ]

0 голосов
/ 14 апреля 2020

Если что-то можно улучшить, например добавить print0, пожалуйста, прокомментируйте или создайте новый ответ.

find * -depth -exec stat --format '%a %U %G %n' {} + > ../repo/all_folders_files_permission

while read PERMS OWNER GROUP FILE
do
    chmod "$PERMS" "$FILE"
    chown "${OWNER}:${GROUP}" "$FILE"
done < ../repo/all_folders_files_permission
0 голосов
/ 14 апреля 2020

Вы можете просто использовать инструмент под названием acl

backupPermission(){
    backupFileName="permission.backup"
    for i in $(find ${1:-.} -type f);do
        echo $i
        getfacl -p $i | paste -s -d'% ' >> ${2:-/tmp/backup.permission1}
    done
}
comparePermision(){
    cat  ${1:-/tmp/backup.permission1}  ${2:-/tmp/backup.permission2} | sort -n | uniq -c | sort -n | grep -v "2 # file"
}
restorePermission(){
    while IFS= read -r line
    do
        fileName=$(echo ${line} | sed 's#%#\n#g' | head -1 | sed 's#\/# #g' | awk '{print $NF}')
        echo $fileName  > /tmp/${fileName}
        setfacl --restore=/tmp/${fileName}
    done < ${1:-/tmp/backup.permission1}
}

Использование:

для разрешения резервного копирования backupPermission $PWD /tmp/backup.permission1 для восстановления резервной копии restorePermission /tmp/backup.permission1 для сравнения разрешения, вам нужно создать новый файл резервной копии прав доступа backupPermission $PWD /tmp/backup.permission2 после сравнения с помощью comparePermision

Приведенный выше сценарий может помочь вам или дать вам представление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...