文件系统扩展属性操作(setfattr, getfattr)

文件系统扩展属性操作(setfattr, getfattr)  

2010-03-12 22:19:52|  分类: 技术文档|举报|字号 订阅

最近研究文件系统的扩展属性,在特殊情况下可以实现令人想象不到的效果,现在还没有搞太明白,先记录
几条命令,有时间再深入研究。
attr -s status -V "In Progress" test.txt
Attribute "status" set to a 11 byte value for test.txt:
status

getfattr test.txt
# file: test.txt
user.status

getfattr -n user.status test.txt
# file: test.txt
user.status="In Progress"

如果出现“Operation not supported”错误,要注意两个事情:
1) 文件系统的挂载选项是否包括user_xattr选项,可以用mount命令来查看,比如
   /dev/cciss/c0d0p2 on / type ext3 (rw)
  /dev/cciss/c0d0p1 on /boot type ext3 (rw)
  /dev/sda3 on /data01 type ext3 (rw)
  /dev/sdb on /data02 type ext3 (rw,user_xattr)
  比较诡异的事情是,/, /data01虽然没有user_xattr选项,但是可以使用setfattr,而/data02去掉
  user_xattr选项的话就报“Operation not supported”。因此必须要增加该选项,在/etc/fstab表中格式如下:
  LABEL=/                 /                       ext3    defaults        1 1
  LABEL=/data01           /data01                 ext3    defaults        1 2
 LABEL=/boot             /boot                   ext3    defaults        1 2
 /dev/sdb                /data02                 ext3    defaults,user_xattr     1 2
 这里区别是/, data01,/boot是安装操作系统时自动生成的,/data02是后来格式化挂载的,不知道其中到底是什么区别。
2)即使使用了user_xattr的选项,照样也会出现这个错误,比如
  # setfattr -n "test" -v bigfs f1000
  setfattr: f1000: Operation not supported
这里的错误原因是,name 一定是要以 user. 开头项目 (为namespace,一般称呼为命名空间),比如:
 # setfattr -n "user.test" -v bigfs f1000

ACL Extended Attribute 新增与检视

setfacl 
程序使用的方式如下:

   setfattr -n name [-v value] pathname...  (新增标注)

   setfattr -x name pathname...      
(取消标注)

 

其中 -n 表示属性名称,-v 后面接属性的储存内容。 -x 表示删除该属性数据。

假设目前已经建立了 file.txt 档案,操作 setfacl 使用如下:

   setfattr -n user.author -v "kenduest" file.txt
   setfattr -n user.desc -v "test only file" file.txt


要注意的是,name 一定是要以 user. 开头项目 (namespace,一般称呼为命名空间),要不然执行期会出现operation not supported 错误。

getfacl 
程序使用的方式如下:

   getfattr -n name pathname...

其中 -n 表示属性名称,表示取出该属性的数据内容。若是都没指定参数只有接文件名,会列出所有设定上去的属性名称列表。

执行如下命令可以取出属性的纪录内容:

   getfattr -n user.author file.txt
   getfattr -n user.desc file.txt


程序执行结果分别显示输出如下:

   # file: file.txt
   user.author="kenduest"

   # file: file.txt
   user.desc="test only file"


可以发现到刚刚设定的属性数据已经可以正确检视了。

Extended Attribute
其他事宜

 POSIX ACL 权限的一些问题等,并不是所有的程序都支持 Extended Attribute,所以可能程序于存取读写后可能会遗失这类信息纪录,尤其是常使用的 GNU tar 程序就尚未正式纳入该支持,所以在档案目录备份上还需要另外处理细节问题。

若是 Linux Distribution 对于 POSIX ACL Extended Attribute已经整合完备的话,常见的档案目录管理工具应该都会正确支持。而至于 GNU tar 程序问题,到是可以另外安装 star 程序来解决

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值