跳转至内容

扩展属性

来自 ArchWiki
(重定向自 Xattrs)

来自 xattr(7): "扩展属性是与文件和目录永久关联的 name:value 对"。有四种扩展属性类别:security、system、trusted 和 user。

警告 默认情况下,扩展属性不会被 cprsync 和其他类似程序保留,请参阅 #保留扩展属性

扩展属性也用于设置 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
  1. mv 会在目标文件系统不支持扩展属性时静默丢弃它们。

要使用 文本编辑器 保留扩展属性,您需要将其配置为在保存时截断文件,而不是使用 rename(2)[1]

就像您应该对任何不想丢失的其他数据一样,您应该定期 备份 您的扩展属性。要对当前目录中所有文件的扩展属性进行完整备份(递归)

$ getfattr --dump --recursive . > backup.txt

恢复备份

$ setfattr --restore=backup.txt

支持

文件系统

所有主要的 Linux 文件系统,包括 Ext4BtrfsZFSXFS 都支持扩展属性。内核允许扩展属性名称长达 255 字节,值长达 64 KiB,但 Ext4Btrfs 可能会施加更小的限制,要求扩展属性必须在“文件系统块”内。

NTFS 使用替代数据流(Alternative Data Streams)来存储用户属性。默认情况下应使用 `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 用于支持推荐人 (referrer) 和 URL,但由于隐私和安全问题已被禁用。另请参阅 CVE-2018-20483
brave-binAUR
CURL
user.xdg.origin.url
user.xdg.referrer.url
通过 --xattrs 标志启用。
Dolphin
user.baloo.rating
user.xdg.comment
user.xdg.tags
user.kde.fm.viewproperties#1
Dolphin 提供对文件标记的全面支持,包括通过右键菜单添加标记的能力,以及按文件标记进行搜索的支持。标记存储在 user.xdg.tags 属性中,格式为 CSV。另请参阅 Dolphin#File tagging

[2], [3]

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)来查看。

gvfs

另一种独立于文件系统的解决方法是 Gnome 虚拟文件系统:gvfs,它用于存储元数据 (gvfsd-metadata)。例如,Firefox 以这种方式存储元数据,并且可以使用以下方式查看

$ gio info --attributes=metadata:: downloaded.html

其他使用此方法的程序包括

  • Thunar:用于保存文件颜色高亮。

参见

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.