star
少し前の Linux(RedHat)では、SELinux や ACL の情報をもったファイルをアーカイブするときに star
というコマンドを使うことになっていた。
ただし、このコマンドは圧縮のオプションが充実していなくて不便だった。
たとえば、gzip圧縮する場合には
$ star -H=exustar -xattr -c dir1 | gzip > dir1.tgz
のようにパイプやリダイレクトを行う必要があった(tar -z
のような圧縮オプションが無いため)。
tar -xattrs
しかし、最近は tar
が改良されて -xattrs
オプションを使えばよくなったらしい(これで -j, -J, -z
などの圧縮も使える)。
tar -xattrs
の例
CentOS-6.0(Linux 2.6.32-71.29.1.el6.x86_64)にて確認。
- 準備
~/dir, ~/dir/file1, ~/dir/file2
を作って、テキトーにACLと拡張ファイル属性を設定。$ cd $ mkdir dir1 && touch dir1/file{1,2} $ setfacl -R -m m:rwx dir1 $ setfattr -n 'user.test' -v 'test' dir1 $ setfattr -n 'user.test' -v 'test' dir1/file{1,2}
tar -xattrs
でアーカイブ$ tar --xattrs -cvzf dir1.tgz dir1
/tmp
に展開して属性を確認$ tar -xvzf dir1.tgz -C /tmp $ getfacl -R /tmp/dir1 getfacl: Removing leading '/' from absolute path names # file: tmp/dir1 # owner: useruuser # group: useruuser user::rwx group::rwx mask::rwx other::r-x # file: tmp/dir1/file2 # owner: useruuser # group: useruuser user::rwx group::rw- mask::rwx other::r-- # file: tmp/dir1/file1 # owner: useruuser # group: useruuser user::rwx group::rw- mask::rwx other::r--/ $ getfattr -d /tmp/dir1 /tmp/dir1/file* getfattr: Removing leading '/' from absolute path names # file: tmp/dir1 user.test="test" # file: tmp/dir1/file1 user.test="test" # file: tmp/dir1/file2 user.test="test"
…というわけで、tar -xattrs
で拡張属性が保存されていることがわかった。
0 件のコメント:
コメントを投稿