Tarユーティリティを使用してファイルをバックアップに保存すると、拡張ACLが失われます。
ACLを保持するために、一般的に使用されているハックではないソリューション(ACLを最初から再生成するスクリプトを作成するなど)はありますか?
Tarの使用
作成するには:
tar --acls -cpf backup.tar some-dir-or-file
解凍するには:
tar --acls -xpf backup.tar
実際、問題は(標準の)ファイル許可ビットではなく、extendedACL情報(setfacl(1)またはacl(5)を参照)に関するものであったと思います。
私の知る限り、未変更のGNU tarはACL情報を無視します。(GNU tar 1.15.1のRHEL 5.2に同梱されているmanページでは、スイッチ--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ではスターを利用できます。
私はこれまでに解決策も探しています:
最初に私のフォルダからgetfactlを実行します
getfacl -R /a_folder > folder.acl
その後、通常のタールを行います
tar -czvf folder.tar.gz /a_folder
抽出すると
tar -xvf folder.tar.gz
権限に対してsetfaclを実行します。
setfacl --restore=folder.acl
これは私にとってはうまくいきます。
rsync with the -A and/or -X options.
使いやすく強力なソリューションをお探しの場合は、rdiff-backup
をお勧めします。
基本的には、ソースディレクトリから宛先ディレクトリへのコピーを作成しますが、必要なときにいつでも戻ることができるように追加情報も保存します。
そしてもちろん、それはシンボリックリンク、特別なファイル、ハードリンク、パーミッション、uid/gidの所有権、変更時刻を保存します。
bsdtar
を使用することをお勧めします。
bsdtar
デフォルトで拡張ACLをバックアップ、それは同じ構文を使用しますGNU tar
、およびそれが生成するアーカイブはGNU tar
。
(Debianベースのディストリビューションでの)パッケージとコマンド名はbsdtar
です。
bsdtar cf archive.tar /my/folder/using/extd_acl
bsdtar xf archive.tar
2番目の(抽出)コマンドは、ACLを復元します。
Tar Man Pageから。
-p、-same-permissions、-preserve-permissions
ファイルの抽出時にumaskを無視(ルートのデフォルト)
実際には、アクセス許可(ACL)を変更するのはアーカイブの行為ではなく、それらをアンパックする行為です。 tarは、あるユーザーから別のユーザーにファイルを配布するために非常によく使用されるため、ユーザーがアンパックするときに、ユーザーに mask を適用すると便利です。
ファイルの以前の権限を保持するには、オプションにpを追加するだけです。例えば
ストレートタール:
tar xvp some-file
bz.tar:
tar xvjp some-file
gz.tar:
tar xvzp some-file