「拡張属性」の版間の差分
(ファイルシステムカテゴリに追加) |
Kusanaginoturugi (トーク | 投稿記録) (→他のタグ付けシステム: リンクを修正) |
||
(2人の利用者による、間の8版が非表示) | |||
1行目: | 1行目: | ||
[[Category:ファイルシステム]] |
[[Category:ファイルシステム]] |
||
[[en:Extended attributes]] |
[[en:Extended attributes]] |
||
+ | [[ru:Extended attributes]] |
||
+ | {{Related articles start}} |
||
+ | {{Related|ファイルのパーミッションと属性}} |
||
+ | {{Related|ケイパビリティ}} |
||
+ | {{Related articles end}} |
||
+ | |||
{{man|7|xattr}} から: "拡張属性は、ファイルやディレクトリと永続的に関連付けられた名前:値のペアです。" 拡張属性には4つのクラスがあります: security、system、trusted、そして user です。 |
{{man|7|xattr}} から: "拡張属性は、ファイルやディレクトリと永続的に関連付けられた名前:値のペアです。" 拡張属性には4つのクラスがあります: security、system、trusted、そして user です。 |
||
11行目: | 17行目: | ||
ユーザ拡張属性は、ファイルに関する任意の情報を保存するために使用できます。属性を作成するには: |
ユーザ拡張属性は、ファイルに関する任意の情報を保存するために使用できます。属性を作成するには: |
||
− | $ setfattr - |
+ | $ setfattr --name=user.checksum --value="3baf9ebce4c664ca8d9e5f6314fb47fb" file.txt |
拡張属性を表示するには getfattr を使用してください: |
拡張属性を表示するには getfattr を使用してください: |
||
− | {{hc|$ getfattr - |
+ | {{hc|1= $ getfattr --encoding=text --dump file.txt|2= |
− | # file: |
+ | # file: file.txt |
user.checksum="3baf9ebce4c664ca8d9e5f6314fb47fb" |
user.checksum="3baf9ebce4c664ca8d9e5f6314fb47fb" |
||
}} |
}} |
||
22行目: | 28行目: | ||
拡張属性を削除するには: |
拡張属性を削除するには: |
||
− | $ setfattr - |
+ | $ setfattr --remove=user.checksum file.txt |
+ | |||
+ | 特定の拡張属性を持つファイルを見つけるには、{{AUR|rawhide}} を使ってください: |
||
+ | |||
+ | $ rh ''/path/to/dir'' '"''XATTR_REGEX''".reea' |
||
一部のユーザ拡張属性には以下が含まれています: |
一部のユーザ拡張属性には以下が含まれています: |
||
42行目: | 52行目: | ||
* {{ic|user.xdg.origin.email.from}} |
* {{ic|user.xdg.origin.email.from}} |
||
* {{ic|user.xdg.origin.email.message-id}} |
* {{ic|user.xdg.origin.email.message-id}} |
||
+ | |||
+ | {{ic|user.xdg.tags}} は公式標準規格の一部ではありませんが、一部の人気なプログラムがこの属性のサポートを実装しているので「事実上」の標準となっています ([[#ソフトウェア]] 章を参照)。これは、各ファイルに対してユーザー定義のタグの [[w:ja:Comma-Separated Values|CSV]] リストとして実装されています。 |
||
== 拡張属性を保持する == |
== 拡張属性を保持する == |
||
{| class="wikitable" |
{| class="wikitable" |
||
− | ! コマンド || 必要なフラグ |
+ | ! コマンド || デフォルトで保持するか/必要なフラグ |
|- |
|- |
||
− | | {{ic|cp}} || {{ic|1=--preserve= |
+ | | {{ic|cp}} || {{ic|--archive}}/{{ic|1=--preserve=all}}/{{ic|1=--preserve=xattr}} |
|- |
|- |
||
− | | {{ic|mv}} || {{ |
+ | | {{ic|mv}} || {{Yes}}<sup>1</sup> |
|- |
|- |
||
| {{ic|tar}} || 作成時には {{ic|--xattrs}}、展開時には {{ic|1=--xattrs-include='*'}} |
| {{ic|tar}} || 作成時には {{ic|--xattrs}}、展開時には {{ic|1=--xattrs-include='*'}} |
||
63行目: | 75行目: | ||
|- |
|- |
||
| {{pkg|pax}} || {{No}} |
| {{pkg|pax}} || {{No}} |
||
+ | |- |
||
+ | | [[syncthing]] || [https://docs.syncthing.net/advanced/folder-sync-xattrs syncXattrs] を有効化する必要あり |
||
|} |
|} |
||
− | # mv は、 |
+ | # mv は、移動先のファイルシステムが拡張属性をサポートしていない場合、何も言わずに拡張属性を破棄します。 |
[[テキストエディタ]]で拡張属性を保持するには、保存時に {{man|2|rename}} を使わずファイルを切り詰める/拡張する (truncate) するように設定する必要があります。[https://unix.stackexchange.com/questions/45407] |
[[テキストエディタ]]で拡張属性を保持するには、保存時に {{man|2|rename}} を使わずファイルを切り詰める/拡張する (truncate) するように設定する必要があります。[https://unix.stackexchange.com/questions/45407] |
||
+ | |||
+ | 失いたくないデータに対してバックアップを取るべきであるのと同様に、拡張属性に対しても定期的に[[システムメンテナンス#バックアップ|バックアップ]]を取るべきです。カレントディレクトリ内の全ファイルの拡張属性の完全なバックアップを (再帰的に) 取るには: |
||
+ | |||
+ | $ getfattr --dump --recursive . > backup.txt |
||
+ | |||
+ | バックアップから復元するには: |
||
+ | |||
+ | $ setfattr --restore=backup.txt |
||
== サポート == |
== サポート == |
||
73行目: | 95行目: | ||
=== ファイルシステム === |
=== ファイルシステム === |
||
− | + | [[Ext4]]、[[Btrfs]]、[[ZFS]]、[[XFS]] などの主要な Linux ファイルシステムの全てで拡張属性がサポートされています。カーネルは、拡張属性の名前は 255 バイトまで、値は 64 KiB まで許可しています。しかし、[[Ext4]] と [[Btrfs]] では、拡張属性を "ファイルシステムブロック" 内に収める必要があることから、より小さい制限が課されるかもしれません。 |
|
[[NTFS]] は代替データストリーム (Alternative Data Streams) を使って user を保存します。マウントオプションの {{ic|user_xattr}} か {{ic|1=streams_interface=xattr}} がデフォルトで使用されるはずです。しかし、マウントオプション {{ic|1=streams_interface=windows}} が使用されている場合は、拡張属性はサポートされないかもしれません。{{pkg|ntfs-3g}} は、FUSE 内での代替データストリームの拡張属性へのマッピングをサポートしています。 |
[[NTFS]] は代替データストリーム (Alternative Data Streams) を使って user を保存します。マウントオプションの {{ic|user_xattr}} か {{ic|1=streams_interface=xattr}} がデフォルトで使用されるはずです。しかし、マウントオプション {{ic|1=streams_interface=windows}} が使用されている場合は、拡張属性はサポートされないかもしれません。{{pkg|ntfs-3g}} は、FUSE 内での代替データストリームの拡張属性へのマッピングをサポートしています。 |
||
− | NFS |
+ | [https://www.phoronix.com/news/Linux-5.9-NFS-Server-User-Xattr Linux 5.9 から]、[[NFS]] は拡張属性をサポートしています。 |
− | |||
− | === ファイルマネージャ === |
||
+ | === ソフトウェア === |
||
− | 説明: |
||
− | |||
− | # 保持: コピーや移動をした時に拡張属性が保持されるか。 |
||
− | # Tags: Tags 拡張属性がサポートされているか。 |
||
{| class="wikitable" |
{| class="wikitable" |
||
+ | ! アプリケーション |
||
− | ! ファイルマネージャ |
||
+ | ! サポートされている拡張属性 |
||
− | ! 保持 |
||
− | ! |
+ | ! 備考 |
|- |
|- |
||
− | | [[ |
+ | | [[baloo]] |
− | | {{ |
+ | | {{bc| |
+ | user.xdg.tags |
||
+ | user.baloo.rating |
||
+ | }} |
||
| |
| |
||
|- |
|- |
||
+ | | {{pkg|caja}} |
||
− | | [[thunar]] |
||
| {{Yes}} |
| {{Yes}} |
||
+ | | 拡張機能 caja-xattr-tags と caja.eiciel によってサポートされています。 |
||
+ | |- |
||
+ | | [[Chromium]] |
||
+ | | {{No|1=https://chromium.googlesource.com/chromium/src/+/a9b4fb70b4318b220deee0da7b1693d16b8ed071}} |
||
+ | | リファラと URL をサポートしていましたが、プライバシーとセキュリティの理由により無効化されました。[https://cve.circl.lu/cve/CVE-2018-20483 CVE-2018-20483] も参照してください。 |
||
+ | |- |
||
+ | | {{AUR|brave}} |
||
+ | | {{No|1=https://github.com/brave/brave-browser/issues/2766}} |
||
| |
| |
||
|- |
|- |
||
+ | | [[CURL]] |
||
− | | {{pkg|caja}} |
||
+ | | {{bc| |
||
+ | user.xdg.origin.url |
||
+ | user.xdg.referrer.url |
||
+ | }} |
||
+ | | {{ic|--xattrs}} フラグで有効化されます。 |
||
+ | |- |
||
+ | | [[Dolphin]] |
||
+ | | {{bc| |
||
+ | user.baloo.rating |
||
+ | user.xdg.comment |
||
+ | user.xdg.tags |
||
+ | }} |
||
+ | | Dolphin はファイルのタグ付けに対して包括的なサポートを提供しています (コンテキストメニューを使用してファイルにタグを追加したり、ファイルのタグで検索するなどの機能を含む)。タグは {{ic|user.xdg.tags}} 属性に CSV として保存されます。[[Dolphin#ファイルのタグ付け]] も参照。 |
||
+ | |||
+ | [https://bugs.kde.org/show_bug.cgi?id=322922]、[https://bugs.kde.org/show_bug.cgi?id=116617] |
||
+ | |- |
||
+ | | [[Dropbox]] |
||
+ | | {{ic|user.com.dropbox.attributes}} |
||
| |
| |
||
− | | {{Yes}}<sup>1 |
||
|- |
|- |
||
− | | [[ |
+ | | [[emacs|emacs-vm]] |
+ | | {{No}} |
||
+ | | mbox 拡張属性はリセットされます。 |
||
+ | |- |
||
+ | | [[Epiphany]] |
||
+ | | {{No|1=https://gitlab.gnome.org/GNOME/epiphany/-/issues/2165}} |
||
| |
| |
||
+ | |- |
||
+ | | [[Exiftool]] |
||
+ | | {{No|1=https://exiftool.org/forum/index.php?topic=12762}} |
||
| |
| |
||
− | |} |
||
− | |||
− | # caja: 拡張機能の caja-xattr-tags と caja.eiciel によってサポートされています。 |
||
− | |||
− | === プログラム === |
||
− | |||
− | {| class="wikitable" |
||
− | ! アプリケーション |
||
− | ! サポートされている拡張属性 |
||
− | ! いつから |
||
− | ! 備考 |
||
|- |
|- |
||
− | | {{pkg| |
+ | | {{pkg|fd}} |
+ | | {{No|1=https://github.com/sharkdp/fd/issues/830}} |
||
− | | {{ic|user.xdg.tags}} |
||
− | | |
+ | | |
− | | |
||
|- |
|- |
||
+ | | {{pkg|findutils}} |
||
− | | [[Chromium]] |
||
+ | | {{No|1=https://savannah.gnu.org/bugs/?64605}} |
||
− | | {{ic|user.xdg.origin}},{{ic|user.xdg.referrer}} |
||
− | | |
+ | | |
− | | |
||
|- |
|- |
||
− | | [[ |
+ | | [[Firefox]] |
+ | | {{No|1=https://bugzilla.mozilla.org/show_bug.cgi?id=665531}} |
||
− | | |
||
− | | |
+ | | |
− | | |
+ | |- |
+ | | {{AUR|gallery-dl}} |
||
+ | | {{No|1=https://github.com/mikf/gallery-dl/issues/4472}} |
||
+ | | |
||
|- |
|- |
||
− | | [[ |
+ | | [[Gwenview]] |
− | | {{ic|user. |
+ | | {{ic|user.xdg.tags}} |
− | | |
||
| |
| |
||
|- |
|- |
||
+ | | {{pkg|kfind}} |
||
− | | [[emacs|emacs-vm]] |
||
+ | | {{No|1=https://bugs.kde.org/show_bug.cgi?id=473864}} |
||
− | | {{No}} |
||
− | | |
+ | | |
− | | mbox 拡張属性をリセットします。 |
||
|- |
|- |
||
+ | | {{pkg|konqueror}} |
||
− | | [[Gwenview]] |
||
+ | | {{No|1=https://bugs.kde.org/show_bug.cgi?id=473809}} |
||
− | | {{ic|user.xdg.tags}} |
||
− | | |
+ | | |
− | | |
||
|- |
|- |
||
+ | | kio |
||
− | | {{pkg|recoll}} |
||
+ | | [https://bugs.kde.org/show_bug.cgi?id=116617] |
||
− | | {{ic|user.xdg.tags}} |
||
− | | |
+ | | |
− | | |
||
|- |
|- |
||
+ | | [[Nautilus]] |
||
− | | {{AUR|tmsu}} |
||
− | | {{No|1=https:// |
+ | | {{No|1=https://discourse.gnome.org/t/16892}} |
+ | | {{AUR|eiciel}} の Nautilus の拡張機能によってファイル拡張属性の完全なサポートを追加できます。 |
||
− | | |
||
− | | |
||
|- |
|- |
||
− | | {{ |
+ | | {{pkg|rclone}} |
+ | | {{No|1=https://forum.rclone.org/t/910}} |
||
− | | {{No|1=https://trello.com/c/iapsXZZe/64-option-to-store-tags-in-file-using-extended-attributes-xattr}} |
||
− | | |
||
− | | |
||
|- |
|- |
||
+ | | {{pkg|recoll}} |
||
− | | [[Wget]] |
||
+ | | {{ic|user.xdg.tags}} |
||
− | | |
||
− | | |
+ | | |
− | | |
+ | |- |
+ | | {{AUR|tagspaces}} |
||
+ | | {{No|1=https://trello.com/c/iapsXZZe/64-option-to-store-tags-in-file-using-extended-attributes-xattr}} |
||
+ | | |
||
+ | |- |
||
+ | | {{AUR|tmsu}} |
||
+ | | {{No|1=https://github.com/oniony/TMSU/issues/10}} |
||
+ | | |
||
+ | |- |
||
+ | | [[Thunar]] |
||
+ | | {{No|1=https://gitlab.xfce.org/xfce/thunar/-/issues/1195}} |
||
+ | | |
||
+ | |- |
||
+ | | {{AUR|youtube-dl}}, [[yt-dlp]] |
||
+ | | {{bc| |
||
+ | user.xdg.referrer.url |
||
+ | user.dublincore.title |
||
+ | user.dublincore.date |
||
+ | user.dublincore.description |
||
+ | user.dublincore.contributor |
||
+ | user.dublincore.format |
||
+ | }} |
||
+ | | {{ic|--xattrs}} フラグで有効化されます。 |
||
+ | |- |
||
+ | | [[Wget]] |
||
+ | | {{bc| |
||
+ | user.xdg.origin.url |
||
+ | user.xdg.referrer.url |
||
+ | }} |
||
+ | | {{ic|--xattrs}} フラグで有効化されます。 |
||
+ | |- |
||
+ | | [[w:ja:Webkit]] |
||
+ | | {{No|1=https://bugs.webkit.org/show_bug.cgi?id=260778}} |
||
+ | | |
||
|} |
|} |
||
+ | |||
+ | == 他のタグ付けシステム == |
||
+ | |||
+ | ファイルシステムやソフトウェアによるサポート不足により、拡張属性が使えない場合もあります。そのような理由により多くのメディアフォーマットは、[[Exiftool]] などのプログラムや音声用の {{AUR|id3}} といったより固有のプログラムを使って読み取ることのできるファイル形式でメタデータを保存します。 |
||
+ | |||
+ | * 全種類のファイル: [[Exiftool]] |
||
+ | * 音声: [[アプリケーション一覧/マルチメディア#オーディオタグエディタ|オーディオタグエディタ]] |
||
+ | * 動画: [[FFmpeg]] の {{man|1|ffprobe}} |
||
+ | |||
+ | === gvfs === |
||
+ | |||
+ | ファイルシステムに依らないもう一つの回避策は Gnome 仮想ファイルシステム {{pkg|gvfs}} です。これは、メタデータ (gvfsd メタデータ) を保存するために使用されます。例えば、Firefox はこの方法で[https://hg.mozilla.org/mozilla-central/file/tip/toolkit/components/downloads/DownloadPlatform.cpp メタデータを保存]しており、以下のコマンドで確認できます: |
||
+ | |||
+ | $ gio info --attributes=metadata:: ''downloaded.html'' |
||
+ | |||
+ | このアプローチをとっている他のプログラムとしては以下があります: |
||
+ | |||
+ | * [[Thunar]]: ファイルのカラーハイライトを保存するために使用しています。 |
||
== 参照 == |
== 参照 == |
||
− | * [https://www.freedesktop.org/wiki/CommonExtendedAttributes XDG |
+ | * [https://www.freedesktop.org/wiki/CommonExtendedAttributes XDG の拡張属性のガイドライン] |
− | * [[ |
+ | * [[Wikipedia:ja:拡張ファイル属性#Linux]] |
* [https://www.lesbonscomptes.com/pages/extattrs.html Extended attributes: the good, the not so good, the bad.] |
* [https://www.lesbonscomptes.com/pages/extattrs.html Extended attributes: the good, the not so good, the bad.] |
||
− | {{TranslationStatus|Extended attributes|2023 |
+ | {{TranslationStatus|Extended attributes|2023-12-23|794864}} |
2024年8月21日 (水) 18:49時点における最新版
関連記事
xattr(7) から: "拡張属性は、ファイルやディレクトリと永続的に関連付けられた名前:値のペアです。" 拡張属性には4つのクラスがあります: security、system、trusted、そして user です。
拡張属性は、ケイパビリティを設定する際にも用いられます。
ユーザ拡張属性
ユーザ拡張属性は、ファイルに関する任意の情報を保存するために使用できます。属性を作成するには:
$ 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 |
Yes1 |
tar |
作成時には --xattrs 、展開時には --xattrs-include='*'
|
bsdtar |
展開時に -p
|
rsync | -X, --xattrs
|
cpio | No |
gzip | No |
pax | No |
syncthing | syncXattrs を有効化する必要あり |
- mv は、移動先のファイルシステムが拡張属性をサポートしていない場合、何も言わずに拡張属性を破棄します。
テキストエディタで拡張属性を保持するには、保存時に rename(2) を使わずファイルを切り詰める/拡張する (truncate) するように設定する必要があります。[1]
失いたくないデータに対してバックアップを取るべきであるのと同様に、拡張属性に対しても定期的にバックアップを取るべきです。カレントディレクトリ内の全ファイルの拡張属性の完全なバックアップを (再帰的に) 取るには:
$ getfattr --dump --recursive . > backup.txt
バックアップから復元するには:
$ setfattr --restore=backup.txt
サポート
ファイルシステム
Ext4、Btrfs、ZFS、XFS などの主要な Linux ファイルシステムの全てで拡張属性がサポートされています。カーネルは、拡張属性の名前は 255 バイトまで、値は 64 KiB まで許可しています。しかし、Ext4 と Btrfs では、拡張属性を "ファイルシステムブロック" 内に収める必要があることから、より小さい制限が課されるかもしれません。
NTFS は代替データストリーム (Alternative Data Streams) を使って user を保存します。マウントオプションの user_xattr
か streams_interface=xattr
がデフォルトで使用されるはずです。しかし、マウントオプション streams_interface=windows
が使用されている場合は、拡張属性はサポートされないかもしれません。ntfs-3g は、FUSE 内での代替データストリームの拡張属性へのマッピングをサポートしています。
Linux 5.9 から、NFS は拡張属性をサポートしています。
ソフトウェア
アプリケーション | サポートされている拡張属性 | 備考 |
---|---|---|
baloo | user.xdg.tags user.baloo.rating |
|
caja | Yes | 拡張機能 caja-xattr-tags と caja.eiciel によってサポートされています。 |
Chromium | No | リファラと URL をサポートしていましたが、プライバシーとセキュリティの理由により無効化されました。CVE-2018-20483 も参照してください。 |
braveAUR | No | |
CURL | user.xdg.origin.url user.xdg.referrer.url |
--xattrs フラグで有効化されます。
|
Dolphin | user.baloo.rating user.xdg.comment user.xdg.tags |
Dolphin はファイルのタグ付けに対して包括的なサポートを提供しています (コンテキストメニューを使用してファイルにタグを追加したり、ファイルのタグで検索するなどの機能を含む)。タグは user.xdg.tags 属性に CSV として保存されます。Dolphin#ファイルのタグ付け も参照。
|
Dropbox | user.com.dropbox.attributes
|
|
emacs-vm | No | mbox 拡張属性はリセットされます。 |
Epiphany | No | |
Exiftool | No | |
fd | No | |
findutils | No | |
Firefox | No | |
gallery-dlAUR | No | |
Gwenview | user.xdg.tags
|
|
kfind | No | |
konqueror | No | |
kio | [4] | |
Nautilus | No | eicielAUR の Nautilus の拡張機能によってファイル拡張属性の完全なサポートを追加できます。 |
rclone | No | |
recoll | user.xdg.tags
|
|
tagspacesAUR | No | |
tmsuAUR | No | |
Thunar | No | |
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 フラグで有効化されます。
|
w:ja:Webkit | No |
他のタグ付けシステム
ファイルシステムやソフトウェアによるサポート不足により、拡張属性が使えない場合もあります。そのような理由により多くのメディアフォーマットは、Exiftool などのプログラムや音声用の id3AUR といったより固有のプログラムを使って読み取ることのできるファイル形式でメタデータを保存します。
- 全種類のファイル: Exiftool
- 音声: オーディオタグエディタ
- 動画: FFmpeg の ffprobe(1)
gvfs
ファイルシステムに依らないもう一つの回避策は Gnome 仮想ファイルシステム gvfs です。これは、メタデータ (gvfsd メタデータ) を保存するために使用されます。例えば、Firefox はこの方法でメタデータを保存しており、以下のコマンドで確認できます:
$ gio info --attributes=metadata:: downloaded.html
このアプローチをとっている他のプログラムとしては以下があります:
- Thunar: ファイルのカラーハイライトを保存するために使用しています。