Що використовувати для резервного копіювання файлів, зберігаючи 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є помилка wrt --acls. Вилучення тарболу за допомогою вказаної опції призначить acl, навіть якщо в архіві не було жодного (!). Дивіться тут .
Digger

14

Власне, я вважаю, що питання стосувалося не стандартних бітів дозволу файлів, а розширеної інформації про ACL (див. Setfacl (1) або acl (5)).

Наскільки мені відомо, немодифікований гурток GNU ігнорує інформацію ACL. (Сторінка man для 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

Домашня сторінка зірки: http://cdrecord.berlios.de/new/private/star.html Зірка доступна принаймні в 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
Спасибі. На цій сторінці нічого не працювало для мене [я справді це маю на увазі, я навіть склав зірочку з джерела, але це не вдалося зробити]. Але це справді спрацювало. Хоч і не елегантно, але працює ідеально.
ashishsony


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-а команда (витяг) відновлює ACL.


Я не можу змусити його працювати, хоча я впевнений, що це працювало деякий час тому. Подається помилка, code.google.com/p/libarchive/isissue/detail?id=329 .
Амброз Біжак

Це ж насправді ... Я спробував це на Debian 8 Jessie, і це не вийшло. :(
Totor

Я використовую його на Debian (x64, PC) з декількох років без жодних проблем (хрип, джессі, і в даний час тягнуться на декількох машинах).
Бінарус

1

Із дьогтю Сторінка людини.

-p, --same-permissions, --preserve-permissions,
             ігнорує umask під час вилучення файлів (типовий для root)

Фактично не архіваційний акт змінює дозволи доступу (ACL), а акт їх розпакування. Тар дуже часто використовується для розповсюдження файлів від одного користувача до іншого, і тому вважається зручним застосовувати користувацьку umask, коли вони розпаковуються.

Щоб зберегти попередні дозволи для файлів, просто додайте оголошення до ваших параметрів. Наприклад

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

tar xvp some-file

bz.tar:

tar xvjp some-file

gz.tar:

tar xvzp some-file

це не працює.
maniat1k

1
Крім того, дьоготь автоматично визначає, що витягти. Не потрібно передавати "j" або "z".
Гарна людина
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.