OSX の「xattr」ユーティリティを使用して、あるファイルから別のファイルに拡張属性をコピーしようとしています。バックグラウンドは、バックアップツールを構築していて、ファイル/構造がすべての属性、ACL などを保持する必要があることです...リソースフォークなどの大きな属性を除いて、すべて正常に機能しています。小さな属性は、以下の方法を使用して正常に機能します。OS X 10.7.5 でこれを試みる
まず、「ls -l@」を使用してファイルの属性を特定します。以下の結果:
-rwxrwxrwx@ 1 testuser staff 0 3 Jan 2011 File
com.apple.FinderInfo 32
com.apple.ResourceFork 237246
次に、属性をエクスポートします (com.apple.ResourceFork が問題の原因です)。
xattr -px com.apple.ResourceFork File > attribfile
次のコマンドを使用して、この属性を別の Mac 上のファイルのコピーに適用したいと思います。
xattr -wx com.apple.ResourceFork "`cat attribfile`" File
これにより、次の結果が得られます。
-bash: /usr/bin/xattr: Argument list too long
なぜそれが起こっているのかはわかっていると思います... リソースフォークのデータが長すぎて、引数に収まりません。壊れ始めるしきい値は確立していませんが、ARG_MAX に関係していると思われます。xargs は、いくつかの小さな引数ではなく、1 つの非常に大きな引数であるため、ここでは役に立ちません。
複数の質問:
- xattr にこの大きな値を受け入れさせる方法はありますか? どういうわけか標準入力経由でパイプしますか?manページには表示されませんが、私は専門家ではなく、おそらくそれを行うための創造的な方法があります
- ストックコマンドラインツールを使用して大きな拡張属性を適用する適切な方法を誰か教えてもらえますか?
- ストックコマンドラインツールがない場合、サードパーティツールの推奨事項はありますか?