ACLを維持しながら、ファイルをバックアップするために何を使用しますか?


24

tarユーティリティを使用してファイルをバックアップに保存すると、拡張ACLが失われます。

ACLを保持するために、一般的に使用される、ハックではないソリューション(ACLをゼロから再作成するスクリプトを作成するなど)はありますか?


1
この重複した質問も参照してください。
トーター

回答:


4

tarを使用する

作成するには:

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では、jessieまでtarサポートしません--acls。(バグ#732071を参照してください。)この機能は、からのパッケージでも利用できますwheezy-backports
アラステアアーバイン14年

上記のwheezy-backportsバージョンにtar--aclsオプションに関するバグがあることに注意してください。上記のオプションを使用したtarball抽出では、アーカイブにnone(!)が含まれていたとしてもaclが割り当てられます。こちらをご覧ください
ディガー

14

実際、質問は(標準の)ファイル許可ビットに関するものではなく、拡張 ACL情報に関するものであると信じています(setfacl(1)またはacl(5)を参照)。

私の知る限り、変更されていないGNU tarはACL情報を無視します。(RHEL 5.2に同梱されているGNU tar 1.15.1のマニュアルページには、スイッチ--aclsおよび--no-aclsが記載されていますが、動作するようにはしていません。)

ただし、exustar形式を選択すると、starプログラムはACLをバックアップおよび復元できます。

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で利用可能です。


これは私が求めるもののように見えるので、それを見てみなければなりません。今、私は1日あたりさらに数時間購入する必要があります;)
シルク

3
starDebianでは利用できず、「チーム」によって保守されていないようです。プロジェクトはまだ生きており、30年以上後も維持されています。bsdtar他の何かが必要な場合は試してください。
トーター

1
beliosのシャットダウン後、次の場所にあります:sourceforge.net/projects/s-tar/files
Jonas Stein

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番目の(抽出)コマンドはACLを復元します。


しばらく前に機能していたとは思いますが、機能させることはできません。code.google.com/p/libarchive/issues/detail?id=329にバグを報告しました
アンブロズビズジャク

実際にここに同じ...私はそれをDebian 8 Jessieで試しましたが、うまくいきませんでした。:(
Totor

私はDebian(x64、PC)で何年も問題なく使用しています(wheezy、jessie、および現在いくつかのマシンでストレッチしています)。
ビナルス

1

tar manページから。

-p、-same-permissions、-preserve-permissionsは、
             ファイルを抽出するときにumask を無視します(rootのデフォルト)

実際には、アクセス許可(ACL)を変更するのはアーカイブの行為ではなく、それらを解凍する行為です。Tarは、あるユーザーから別のユーザーにファイルを配布するために非常に頻繁に使用されるため、ユーザーが解凍するときにumaskを適用すると便利だと考えられています。

ファイルの以前のアクセス許可を保持するには、単にオプションにad apを追加します。例えば

ストレートタール:

tar xvp some-file

bz.tar:

tar xvjp some-file

gz.tar:

tar xvzp some-file

これは動作しません。
maniat1k

1
さらに、tarは何を抽出するかを自動的に判断します。「j」または「z」を渡す必要はありません。
グッドパーソン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.