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.txt다음 xattr 목록이 표시됩니다.

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를 기반으로 합니다.

맥 OS의 경우 첫 번째 새 파일은 원래 이름을 유지하고 원본 파일의 데이터 분기를 포함합니다. 두 번째 새 파일은 원본 파일과 이름이 같고 접두사가 "._"이며 원본 파일의 리소스 포크를 포함합니다.

rsyncMac에서 Linux로 이동하면 이러한 "._" 파일이 생성되고 rsyncLinux에서 Mac으로 돌아가면 해당 파일을 먼저 삭제(예: )하거나 제외하지 않는 한 해당 파일이 Mac으로 다시 전송되는 것 같습니다 find . -name *._* -delete.

이러한 ._ 파일이 Mac에 있으면 Mac 명령이 있습니다 dot_clean.

...모든 ._* 파일을 해당 기본 파일과 재귀적으로 병합합니다...

- 이것얼룩 청소맨 페이지.

이것은 Ask Different에서 논의되었습니다.여기,여기, 그리고여기.

관련 정보