IT袋

当前位置:主页 > 经验教程 > 系统教程 >

如何在Linux文件系统中使用attr添加扩展属性

如何在Linux文件系统中使用attr添加扩展属性(2)

时间:2023-09-17 16:29:07 来源:IT袋 作者:苏晓敏
导读:如何在Linux文件系统中使用attr添加扩展属性,使用 attr 或者 getfattr 命令可以看已添加到文件上的扩展属性。 attr 命令默认使用 user 空间,使用 -g 以获取扩展属性: $ attr -g flavor example.txtAttribute "flavo

如何在Linux文件系统中使用attr添加扩展属性

使用attr或者getfattr命令可以看已添加到文件上的扩展属性。attr命令默认使用user空间,使用-g以获取扩展属性:

$ attr -g flavor example.txt
Attribute "flavor" had a 9 byte value for example.txt:
chocolate

getfattr命令需要属性的命名空间和名字:

$ getfattr --name user.flavor example.txt 
# file: example.txt
user.flavor="chocolate"

列出所有扩展属性

要看一个文件的所有扩展属性,你可以使用attr -l

$ attr -l example.txt
Attribute "md5sum" has a 32 byte value for example.txt
Attribute "flavor" has a 9 byte value for example.txt

或者,你也可以使用getfattr -d

$ getfattr -d example.txt
# file: example.txt
user.flavor="chocolate"
user.md5sum="969181e76237567018e14fe1448dfd11"

扩展文件属性可以使用attrsetfattr更新,就像你创建这些属性一样:

$ setfattr --name user.flavor --value strawberry example.txt
$ getfattr -d example.txt
# file: example.txt
user.flavor="strawberry"
user.md5sum="969181e76237567018e14fe1448dfd11"

其他文件系统上的属性

使用扩展属性最大的风险是忘记这些属性是特定于某个文件系统的。这意味着当你从一个磁盘或分区复制文件到另外一个磁盘或分区时,这些属性都会丢失,即使目标位置的文件系统也支持扩展属性。

为了避免丢失扩展属性,你需要使用支持保留这些属性的工具,例如rsync命令。

$ rsync --archive --xattrs ~/example.txt /tmp/

但无论你使用什么工具,如果你传输文件到一个不知道如何处理扩展属性的文件系统,这些属性都会被丢弃。

搜索属性

与扩展属性交互的机制并不多,所以使用这些添加的文件属性的方法也有限。我使用扩展属性作为标签机制,这让我可以将没有明显关系的文件联系起来。例如,假设我需要在一个项目中用“知识共享”的图形。假如我预见性地将license属性添加到了我的图形库中,我就可以使用findgetfattr在图形文件夹中寻找:

find ~/Graphics/ -type f \
    -exec getfattr \
    --name user.license \
    -m cc-by-sa {} \; 2>/dev/null
# file: /home/tux/Graphics/Linux/kde-eco-award.png
user.license="cc-by-sa"
user.md5sum="969181e76237567018e14fe1448dfd11"

文件系统的秘密

文件系统一般不会引起你的注意。它们实际是定义文件的系统。这不是计算机做的最让人兴奋的任务,也不是用户应该关心的东西。但是有些文件系统可以给你有趣、安全的特殊能力,扩展文件属性就是一个好例子。它的用途可能有限,但是扩展属性是你为数据增加上下文的独特方法。

以上分享的如何在Linux文件系统中使用attr添加扩展属性的经验小知识,希望看完本文能给您带来一点帮助!

相关阅读