Mac 10.13からPop_OS 20.04でrsync Mac xattrで隠しファイルを作成する

Mac 10.13からPop_OS 20.04でrsync Mac xattrで隠しファイルを作成する

私はフラッシュドライブを転送メディア(FAT)として使用し、Mac 10.13(APFS)とPop_OS(ext4)の間でrsyncを使用しています。私のコマンドは

rsync -av --exclude-from='exclude-files.txt' source-dir destination-dir

次のパターンはMacにのみ関連していると仮定しているので除外しました。

*.DS_Store*
*.Spotlight-V100*
*.TemporaryItems*
*.Trashes*
*.fseventsd*

Macファイルに拡張属性がある場合は、FATフラッシュドライブとLinuxシステムに隠しファイルとして表示されます._exclude-files.txt

ls -al@Macにマウントされているフラッシュドライブで実行すると、この内容は表示されませんが、次の._exclude-files.txtxattrリストが表示されます。

com.apple.TextEncoding    15
com.apple.metadata._kMDItemUserTags    42
com.apple.lastuseddate#PS    16

Linuxノートブックにフラッシュドライブを取り付けたときに._exclude-files.txt実際のファイルを見ることができました。

-Xオプションを使用または使用せずにrsyncを実行してみました--filter='-x! user.*'(ユーザーの名前空間の概念を完全に理解していませんでしたが)。

おそらく排除でこの問題を解決できますが*._*、なぜこれが起こるのか理解したいと思います。私は初めてLinux/Ubuntu/Popに触れますが、それを基本OSにすることが目標です。

アップデート:まず、Macからフラッシュドライブにディレクトリをコピーし、Linuxシステムにコピーして問題が発生したかどうか疑問に思います。そのため、rsyncMacディレクトリの内容をフラッシュドライブの空のディレクトリに配置するテストを実行しました。最初にls -al@私のMacにマウントされたフラッシュドライブのディレクトリに表示されたファイルにxattrはありませんでした。だから元のMacディレクトリの内容を削除しました。そしてrsync --dry-runまた返事を試しました。._my-file.txtファイルにxattrが表示されない場合でも、詳細な出力が再表示されます。

これを試みると、-Xrsyncエラーが発生します。 rsync: get_xattr_names(...) failed: Operation not permitted (1)

しかし、良いニュースは、詳細な出力に不思議な._my-file.txtではなく送信されるmy-file.txtだけが表示されることです。

私はそれで買えると思って走ったrsync -avX flash_drive_volume original_mac_dir。これで元のファイルは元の場所に戻りましたが、驚くべきことにプロパティは再び拡張されました。

MacOSが何らかの方法で拡張プロパティを設定することに決めたのと同じです。私は気にしません。私のLinuxシステムが無関係なファイルでいっぱいになりたくないだけです。*._*除外項目を追加して忘れなければなりませんか?

更新2:._ファイルの説明が見つかりました。Mac OS X:Appleデュアルフォーマットは、プレフィックス「._」を含むファイル名を生成します。

ベストアンサー1

私はいくつかの研究の後、私の質問に答えようとしていると思いました。 Linuxシステムで「file._my-file.txt」を見ると、「AppleDouble Macintosh File」が返されます。だから「appledouble」を検索しました。

まず、上記のアップデート2に基づいています。

Mac OSの場合、最初の新しいファイルは元の名前を保持し、元のファイルのデータブランチを含みます。 2 番目の新しいファイルは、元のファイルと同じ名前でプレフィックスが "._" で、元のファイルのリソースフォークが含まれます。

rsyncMacからLinuxに移動すると、これらの「._」ファイルが作成され、rsyncLinuxからMacに戻ると、そのファイルを最初に削除(または)しない限り、そのファイルがMacに再送信されるようですfind . -name *._* -delete

これらの._ファイルがMacにある場合は、Macコマンドがありますdot_clean

...すべての._*ファイルをその基本ファイルと再帰的にマージします...

- これ汚れの清掃マンページ。

これはAsk Differentで議論されました。ここここここ

おすすめ記事