ターゲット ファイルの xattr を保持しながら、PC から Mac にファイルをコピーするにはどうすればよいですか?

ターゲット ファイルの xattr を保持しながら、PC から Mac にファイルをコピーするにはどうすればよいですか?

私の Mac (OS X ML 10.8.4) にはファイル M があり、PC (Win7) にはファイル P があります。ファイル P は元々ファイル M のコピーでしたが、現在は若干更新されています。ファイル M には拡張属性がいくつかあります。

ファイル M の拡張属性を保持しながら、ファイル P をファイル M にコピーするにはどうすればよいですか?

通常、ネットワーク共有を介して P を M にコピーして貼り付けると、M の拡張属性は失われます。

簡単に実装でき、スケーラブルな方法を探しています。cat P > M実際には選択肢がありません (それが機能するかどうかもわかりません)。rsyncここで助けてもらえますか?

答え1

._ ファイルがまだ残っている場合は、dot_clean を使用してマージできます。

$ ls -A
._test.txt test.txt
$ xattr -l test.txt
$ dot_clean .
$ ls -A
test.txt
$ xattr -l test.txt
com.apple.TextEncoding: utf-8;134217984

xattr -wx および -px を使用して属性をコピーできます。

xattr -wx attributename "$(xattr -px attributename source.txt)" target.txt

xattr は、引数が単一のファイルである場合にのみ属性名を出力します。

for f; do
  for a in $(xattr "$f"); do
    xattr -wx $a "$(xattr -px $a ~/Documents/Original/"$f")" "$f"
  done
done

関連情報