在bash shell中使用getfattr查看文件扩展属性

时间:2021-07-16 21:41:39

getfattr用法

用于获取文件扩展属性,返回一系列键值对,参考Linux Man Page

常用OPTIONS

-n name, --name=name
Dump the value of the named extended attribute extended attribute.
-d, --dump
Dump the values of all extended attributes associated with pathname.
-e en, --encoding=en
Encode values after retrieving them. Valid values of en are "text", "hex", and "base64". Values encoded as text strings are enclosed in double quotes ("), while strings encoded as hexidecimal and base64 are prefixed with 0x and 0s, respectively.
-h, --no-dereference
Do not dereference symlinks. Instead of the file a symlink refers to, the symlink itself is examined. Unless doing a logical (-L) traversal, do not traverse symlinks to directories.
-m pattern, --match=pattern
Only include attributes with names matching the regular expression pattern. The default value for pattern is "^user\\.", which includes all the attributes in the user namespace. Specify "-" for including all attributes. Refer to attr(5) for a more detailed discussion of namespaces.
--absolute-names
Do not strip leading slash characters ('/'). The default behaviour is to strip leading slash characters.
--only-values
Dump out the extended attribute value(s) only.
-R, --recursive
List the attributes of all files and directories recursively.
-L, --logical
Logical walk, follow symbolic links to directories. The default behaviour is to follow symbolic link arguments unless --no-dereference is given, and to skip symbolic links encountered in subdirectories. Only effective in combination with -R.
-P, --physical
Physical walk, do not follow symbolic links to directories. This also skips symbolic link arguments. Only effective in combination with -R.
--version
Print the version of getfattr and exit.
--help
Print help explaining the command line options.

使用举例

  • 查看所有扩展属性的命令:

    getfattr -m . -d -e hex --absolute-names $(vs_quick_lookup.sh vm-disk-1.qcow2 | grep $(hostname) | awk -F ":" '{print $2}')

    结果:
    # file: /sf/data/vs/local/V1gACv-8aPk-GDhe-nNnx-6uoD-isPj-ia9fSO/c93f1a03-ca0a-41cf-bca2-f723b35122ed/images/cluster/ljr.vm/vm-disk-1.qcow2
    trusted.afr.vs_vol_rep2-client-10=0x000000000000000000000000
    trusted.afr.vs_vol_rep2-client-11=0x000000000000000000000000
    trusted.gfid=0x4751bfcc6ad6406d8e00a973d45a9d4e
    user.glusterfs.bd=0x6c76323a313138353131333730323400
    user.glusterfs.wcache=0x0000000000000000
    选项说明:
    -m . 匹配所有格式的扩展属性,默认的是user.xxx,即"^user\."。
    -d -e hex 使用16进制编码dump出对应扩展属性的值
    --absolute-names 不过滤路径分隔符('/')

  • 查看指定的扩展属性

    getfattr -n 'trusted.gfid' -d -e hex --absolute-names $(vs_quick_lookup.sh vm-disk-1.qcow2 | grep $(hostname) | awk -F ":" '{print $2}' )

    结果:
    # file: /sf/data/vs/local/V1gACv-8aPk-GDhe-nNnx-6uoD-isPj-ia9fSO/c93f1a03-ca0a-41cf-bca2-f723b35122ed/images/cluster/ljr.vm/vm-disk-1.qcow2
    trusted.gfid=0x4751bfcc6ad6406d8e00a973d45a9d4e
    选项说明:
    -n 指定扩展属性的名称