Что использовать для резервного копирования файлов, сохранения 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.


Это похоже на то, что я ищу, мне придется взглянуть на это. Теперь мне нужно покупать еще несколько часов в день;)
шелк

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

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


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.


Я не могу заставить его работать, хотя я уверен, что это сработало некоторое время назад. Подали ошибку, 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».
Хороший человек
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.