扩展属性
出自 xattr(7):“扩展属性是永久地与文件和目录关联的名称:值对”。 共有四种扩展属性类别:security、system、trusted 和 user。
扩展属性也用于设置 Capabilities。
用户扩展属性
用户扩展属性可用于存储关于文件的任意信息。要创建一个,请使用
$ setfattr --name=user.checksum --value="3baf9ebce4c664ca8d9e5f6314fb47fb" file.txt
使用 getfattr 显示扩展属性
$ getfattr --encoding=text --dump file.txt
# file: file.txt user.checksum="3baf9ebce4c664ca8d9e5f6314fb47fb"
要删除一个扩展属性
$ setfattr --remove=user.checksum file.txt
要查找具有特定扩展属性的文件,请使用 rawhideAUR
$ rh /path/to/dir '"XATTR_REGEX".reea'
其他一些用户扩展属性包括
user.mime_type
:帮助程序了解 mimetype 并减少猜测地设置它。user.charset
:由 Apache httpd 模块 mod_mime_xattr 使用。user.creator
:创建文件的应用程序的名称。
XDG 还提出了一组供程序使用的标准化扩展属性
user.xdg.comment
:Dolphin 和其他文件管理器支持。user.xdg.origin.url
:用于从 URL 下载的文件。user.xdg.robots.index
:“true”如果文件包含在索引中,“false”否则不包含user.xdg.robots.backup
:“true”如果文件包含在备份中,“false”否则不包含user.xdg.language
user.xdg.creator
user.xdg.publisher
user.xdg.origin.email.subject
user.xdg.origin.email.from
user.xdg.origin.email.message-id
user.xdg.tags
不是官方标准的一部分,但它已成为“事实上的”标准,因为一些流行的程序已经实现了对它的支持(参见 #软件)。 它被实现为每个文件的用户指定标签的 CSV 列表。
保留扩展属性
命令 | 默认保留?/必需标志 |
---|---|
cp |
--archive /--preserve=all /--preserve=xattr |
mv |
是1 |
tar |
创建时使用 --xattrs ,提取时使用 --xattrs-include='*' |
bsdtar |
提取时使用 -p |
rsync | -X, --xattrs
|
cpio | 否 |
gzip | 否 |
pax | 否 |
syncthing | 通过启用 syncXattrs |
- 当目标文件系统不支持扩展属性时,mv 会静默丢弃它们。
要使用文本编辑器保留扩展属性,您需要将它们配置为在保存时截断文件,而不是使用 rename(2)。 [1]
就像您应该对任何其他不想丢失的数据所做的那样,您应该定期备份您的扩展属性。 要对当前目录(递归地)中所有文件的扩展属性进行完整备份
$ getfattr --dump --recursive . > backup.txt
要恢复备份
$ setfattr --restore=backup.txt
支持
文件系统
所有主要的 Linux 文件系统,包括 Ext4、Btrfs、ZFS 和 XFS 都支持扩展属性。 内核允许扩展属性名称最多 255 字节,值最多 64 KiB,但 Ext4 和 Btrfs 可能会施加更小的限制,要求扩展属性在“文件系统块”内。
NTFS 使用备用数据流来存储用户数据。 默认情况下应使用挂载选项 user_xattr
或 streams_interface=xattr
。 但是,如果使用挂载选项 streams_interface=windows
,则可能不支持。 ntfs-3g 支持在 FUSE 中将备用数据流映射到扩展属性。
NFS 自 Linux 5.9 起支持扩展属性。
软件
应用程序 | 支持的扩展属性 | 注释 |
---|---|---|
baloo | user.xdg.tags user.baloo.rating |
|
caja | 是 | 由 caja-xattr-tags 和 caja.eiciel 扩展支持。 |
Chromium | 否 | 曾经支持引用页和 URL,但由于隐私和安全问题而被禁用。 另见 CVE-2018-20483。 |
brave-binAUR | 否 | |
CURL | user.xdg.origin.url user.xdg.referrer.url |
使用 --xattr 标志启用。 |
Dolphin | user.baloo.rating user.xdg.comment user.xdg.tags |
Dolphin 提供对文件标签的全面支持,包括通过上下文菜单向文件添加标签的功能,以及通过文件标签搜索的支持。 标签以 CSV 格式存储在 user.xdg.tags 属性中。 另见 Dolphin#文件标签。
|
Dropbox | user.com.dropbox.attributes
|
|
emacs-vm | 否 | 重置 mbox xattrs。 |
Epiphany | 否 | |
Exiftool | 否 | |
fd | 否 | |
findutils | 否 | |
Firefox | 否 | |
gallery-dlAUR | 否 | |
Gwenview | user.xdg.tags
|
|
kfind | 否 | |
konqueror | 否 | |
kio | [4] | |
Nautilus | 否 | 可以通过来自 eicielAUR 的 Nautilus 扩展添加完整的扩展文件属性支持。 |
rclone | 否 | |
recoll | user.xdg.tags
|
|
tagspacesAUR | 否 | |
tmsuAUR | 否 | |
Thunar | 否 | |
youtube-dlAUR, yt-dlp | user.xdg.referrer.url user.dublincore.title user.dublincore.date user.dublincore.description user.dublincore.contributor user.dublincore.format |
使用 --xattrs 标志启用。 |
Wget | user.xdg.origin.url user.xdg.referrer.url |
使用 --xattrs 标志启用。 |
webkit | 否 |
其他标签系统
由于文件系统或软件缺乏支持,可能无法使用扩展属性。 因此,许多媒体格式将元数据存储在文件格式中,可以使用 Exiftool 或更指定的程序(如用于音频的 id3AUR)查看。
- 对于所有文件:Exiftool
- 对于音频:音频标签编辑器
- 对于视频:来自 FFmpeg 的 ffprobe(1)
gvfs
另一种独立于文件系统的解决方法是 Gnome 虚拟文件系统:gvfs,它用于存储元数据 (gvfsd-metadata)。 例如,Firefox 以这种方式存储元数据,并且可以使用以下命令查看
$ gio info --attributes=metadata:: downloaded.html
使用此方法的其他程序包括
- Thunar:用于保存文件颜色高亮。