ソースの表示以前のリビジョンバックリンク全て展開する/折り畳む文書の先頭へ Share via Share via... Twitter LinkedIn Facebook Pinterest Telegram WhatsApp Yammer Reddit Teams最近の変更Send via e-Mail印刷パーマリンク × FreeBSD cpは拡張ファイル属性をコピーしない(FreeBSD 12現在) FreeBSDのcpコマンドは拡張ファイル属性を一切コピーしない。FreeBSD 12.0-RELEASE-p4で確認。すなわち、現時点ではFreeBSDでcpすると拡張ファイル属性が失われる。 「-pオプションを付ければいいんじゃね?」と思ったあなた、あまーい!cpのmanにある通り、-pオプションはファイルの変更日時、アクセス日時、フラグ、パーミッション、ACL、UID、GIDしか保持しない。 ここに拡張ファイル属性付きのファイルhasxattr.txtがある。 $ ls -al total 42 drwxr-xr-x 2 Decomo Decomo 3 10月 22 00:11 . drwxr-xr-x 56 Decomo Decomo 190 10月 21 23:43 .. -rwxr--r-- 1 Decomo Decomo 0 10月 21 23:49 hasxattr.txt $ lsextattr user * hasxattr.txt OpusMetaInformation DOSATTRIB OpusMetaInformationとDOSATTRIBってのが拡張属性の名前。 で、ファイルをcp -pして拡張属性を表示してみると… $ cp -p hasxattr.txt hasxattr_cp-p.txt $ lsextattr user * hasxattr.txt OpusMetaInformation DOSATTRIB hasxattr_cp-p.txt \(^o^)/ 見事にコピー先のファイル(hasxattr_cp-p.txt)から拡張属性が消えている。 ファイラーで表示させてみても見事にコピーした方は拡張ファイル属性が消えていることが分かる。(ファイルのオレンジ色表示がOpusMetaInformationっていう拡張ファイル属性に保存されてる。) 拡張ファイル属性好きとしては悲しい、というか困る。 sysutils/coreutilsに入ってるGNU cpならどうだと試してみるも、つれないお返事… $ gcp --preserve=xattr hasxattr.txt hasxattr_gcp.txt gcp: 拡張属性を保護できません。cp が xattr サポートなしで作成されています rsync -Xやmvでは拡張ファイル属性が保持される。 $ rsync -X hasxattr.txt hasxattr_rsync.txt $ mv hasxattr.txt hasxattr_mv.txt $ lsextattr user * hasxattr_cp-p.txt hasxattr_mv.txt OpusMetaInformation DOSATTRIB hasxattr_rsync.txt OpusMetaInformation DOSATTRIB 調べてたら、FreeBSD/Linux/MacOSのコマンド別に拡張ファイル属性の対応状況が書いてある素敵なぺージを発見。 Extended attributes: the good, the not so good, the bad. それにしても、coreutilsのビルドオプションでgcpの拡張ファイル属性対応を選べるようにして欲しいなぁ…。 start.txt 最終更新: 2022-07-27 15:26by Decomo