Я ищу практический способ резервного копирования данных с сервера и сохранения всех ACL и разрешений. Я смотрел tar, но, согласно Google, tar не хранит ACL. Я знаю, что rsync может сохранять ACL и разрешения, но только если целевая система поддерживает POSIX ACL и имеет тех же пользователей. В моем случае я делаю резервную копию в каталог, расположенный на AFS, поэтому списки ACL POSIX не поддерживаются.
На данный момент я решил проблему, написав скрипт, который использует find для рекурсии по системе (я использую find, потому что я исключаю некоторые каталоги) и сохраняет разрешения и ACL в текстовый файл. Это решение работает, но очень медленно. Есть ли лучшее решение?
apt-get install star
man star
star -acl -whatever -other -options -you -need
Star - это tar с поддержкой расширенных заголовков POSIX, то есть с возможностью хранить некоторые дополнительные данные о файле в файле tar. В -acl
option получает ACL; он нужен как для создания архива, так и для извлечения.
Если вы не хотите устанавливать другую программу, вы можете сделать резервную копию списков ACL отдельно:
getfacl -R somedir > acls.txt
Это выгружает все ACL из somedir
в файл acls.txt
.
Для восстановления используйте:
setfacl -R --set-file=acls.txt somedir
рядом со звездой вы можете использовать bsdtar