Что использовать для резервного копирования файлов, сохранения ACL?

24

При использовании утилиты tar для хранения файлов в резервных копиях теряются расширенные списки ACL.

Существует ли какое-либо часто используемое и не хакерское решение (например, создание сценария, который будет восстанавливать ACL с нуля) для сохранения ACL?

шелк
источник
1
Смотрите также этот дубликат вопроса .
Тотор

Ответы:

4

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

Создавать:

tar --acls -cpf backup.tar some-dir-or-file

Распаковать:

tar --acls -xpf backup.tar
Скотт Грейбан
источник
3
tar: unrecognized option '--acls'не работает.
maniat1k
1
Fedora имеет нестандартные патчи GNU Tar, которые включают в себя--acls
user55149
3
В Debian tarне поддерживает --aclsдо Джесси. (См. Ошибку # 732071. ) Эта функция также доступна в пакете с wheezy-backports.
Аластер Ирвин
Обратите внимание, что в указанной wheezy-backportsверсии tarесть ошибка с --aclsопцией. Извлечение тарбола с помощью указанной опции назначит acl, даже если в архиве их нет (!). Смотрите здесь .
Копатель
14

На самом деле, я полагаю, что вопрос был не о (стандартных) битах разрешения файла, а о расширенной информации ACL (см. Setfacl (1) или acl (5)).

Насколько мне известно, неизмененный GNU tar игнорирует информацию ACL. (На странице руководства для GNU tar 1.15.1, поставляемой с RHEL 5.2, упоминаются ключи --acls и --no-acls, но я не заставил их работать.)

Однако звездная программа может создавать резервные копии и восстанавливать ACL, если вы выбрали формат exustar :

star -c -p -acl artype=exustar -f archive.tar  files...
star -x -acl -f archive.tar

Домашняя страница Star: http://cdrecord.berlios.de/new/private/star.html Star доступна, по крайней мере, в Ubuntu.

BHM
источник
Это похоже на то, что я ищу, мне придется взглянуть на это. Теперь мне нужно покупать еще несколько часов в день;)
шелк
3
starнедоступен в Debian и, похоже, не поддерживается "командой". Проект все еще жив и поддерживается после 30 с лишним лет. Попробуйте, bsdtarесли хотите что-то еще.
Тотор
1
после выключения belios вы можете найти его здесь: sourceforge.net/projects/s-tar/files
Джонас Стейн
9

Я ищу решение, так что пока я нашел это:

сначала сделайте getfactl из моей папки

getfacl -R /a_folder > folder.acl

затем сделать обычную смолу

tar -czvf folder.tar.gz /a_folder

когда я его извлекаю

tar -xvf folder.tar.gz

сделать setfacl для разрешений.

setfacl --restore=folder.acl

это работает для меня.

maniat1k
источник
1
Спасибо. На этой странице у меня ничего не получалось [я действительно имею в виду это, я даже скомпилировал звезду из источника, но это не помогло]. Но это действительно сработало. Хоть и не элегантно, но отлично работает.
ашишсоны
2

Если вы ищете простое в использовании, но мощное решение, я бы порекомендовал rdiff-backup .

По сути, он делает копию исходного каталога в целевой каталог, но также сохраняет дополнительную информацию, чтобы вы могли вернуться назад во времени, когда захотите.

И, конечно же, он сохраняет символические ссылки, специальные файлы, жесткие ссылки, разрешения, владельца uid / gid и время модификации.

Пабло Антонио
источник
2

Я предлагаю вам использовать bsdtar.

bsdtar подпорки расширенного ACL по умолчанию , он использует тот же синтаксис , как GNU tarи архивы она производит доступны для чтенияGNU tar .

Имя пакета и команды (в дистрибутивах Debian) bsdtar.

bsdtar cf archive.tar /my/folder/using/extd_acl 
bsdtar xf archive.tar 

2-я команда (extract) восстанавливает ACL.

Totor
источник
Я не могу заставить его работать, хотя я уверен, что это сработало некоторое время назад. Подали ошибку, code.google.com/p/libarchive/issues/detail?id=329 .
Амброз Бижак
То же самое на самом деле ... Я попробовал это на Debian 8 Джесси, и это не сработало. :(
Totor
Я использую его на Debian (x64, PC) уже несколько лет без проблем (wheezy, jessie, и в настоящее время работает на нескольких машинах).
Бинар
1

Из см. Страницу.

-p, --same-permissions, --preserve-permissions
             игнорировать umask при извлечении файлов (по умолчанию для root)

На самом деле не акт архивирования изменяет права доступа (ACL), а процесс их распаковки. Tar очень часто используется для распространения файлов от одного пользователя к другому, поэтому считается удобным применять пользовательские маски при распаковке.

Чтобы сохранить файлы предыдущих разрешений, просто добавьте их в свои настройки. Например

Прямой деготь:

tar xvp some-file

bz.tar:

tar xvjp some-file

gz.tar:

tar xvzp some-file
Эли Фрей
источник
это не работает.
maniat1k
1
Кроме того, tar автоматически выясняет, что извлечь. Нет необходимости передавать «j» или «z».
Хороший человек