GNU tarは、Linuxで「chattr + i」に設定されたファイル不変属性をどのように保存しますか?

GNU tarは、Linuxで「chattr + i」に設定されたファイル不変属性をどのように保存しますか?

Linuxでは、「chattr + i」に設定されている不変属性を持つファイルをバックアップするためにtar(GNU tar 1.30)を使用したいと思います。コマンドラインは次のとおりです。

mdx@e5450:~$ touch test.txt
mdx@e5450:~$ sudo chattr +i test.txt
mdx@e5450:~$ lsattr test.txt
----i---------e---- test.txt
mdx@e5450:~$ sudo tar --acls --selinux --xattrs --xattrs-include='*' -cpvvzf test.tar.gz test.txt
-rw-r--r--  mdx/mdx           0 2024-03-01 16:30 test.txt
mdx@e5450:~$ mkdir test
mdx@e5450:~$ sudo tar --acls --selinux --xattrs --xattrs-include='*' -xpvvzf test.tar.gz -C test
-rw-r--r--  mdx/mdx           0 2024-03-01 16:30 test.txt
mdx@e5450:~$ lsattr test/test.txt
--------------e---- test/test.txt
mdx@e5450:~$

解凍後、不変属性は消えた。

bsdtar 3.3.3 を使用して test.txt をアーカイブすることができ、不変属性が保存されます。詳細は次のとおりです。

mdx@e5450:~$ sudo bsdtar -cvvzf test.btar.gz test.txt
a -rw-r--r--  1 mdx    mdx         0 Mar  1 16:30 test.txt
mdx@e5450:~$ mkdir btest
mdx@e5450:~$ sudo bsdtar -xvvzf test.btar.gz -C btest
x -rw-r--r--  0 mdx    mdx         0 Mar  1 16:30 test.txt
mdx@e5450:~$ lsattr btest/test.txt
----i---------e---- btest/test.txt

LinuxでGNU tarを使用するときに「chattr + i」に設定されたファイル不変属性を保存できますか?

答え1

私はあなたがGNU tarの欠点を発見したと思います。しかし、状況はあなたが考えているものとは異なります!

「i」はLinuxファイルシステムの用語で「属性」と呼ばれます。これで正しく保存して復元しました。拡張属性、非常に遅く追加されましたが、昔ながらではありません。プロパティ

残念ながら、GNU tarにはこれらの操作を強制するコマンドラインオプションがなく、一貫して処理できないようです。 bsdtarが正しく実行されるという事実は、バグや機能的な欠陥を意味します。私はGNU tarのソースコードでそれをすぐに見つけることができないので、まったく実装されていないと確信していますioctlFS_IMMUTABLE_FLあまり追加しないでください。意図的なのかメーリングリストにメールを送ってお問い合わせください!

関連情報