I'd just like to know why if I "tar -czf" a file/directory, osx adds a: ._ for each file? I see these when I untar in linux. Or when I work with the uncompressed project in eclipse as it doesn't like them at all. I use 10.7.5.
OS X's tar uses the AppleDouble format to store extended attributes and ACLs. tar and Archive Utility also know how to convert the ._ files back to the native formats, but the ._ files are kept if the archive is extracted on another platform or on a non-HFS volume.
You can usually just tell tar to remove the metadata by setting COPYFILE_DISABLE to some value:
$ xattr -l file.jpg com.apple.quarantine: 0002;50d20c48;Tweetbot; $ tar -cf 1.tar file.jpg $ tar -tf 1.tar ./._file.jpg file.jpg $ COPYFILE_DISABLE=1 tar -cf 2.tar file.jpg $ tar -tf 2.tar file.jpg
Information stored as extended attributes:
- Resource forks (since 10.4)
- Custom icons set in Finder and the images of Icon\r files
- Metadata in PSD files
- Script objects stored in scpt files, AppleScript Editor window state
- Information about aliases
- Quarantine status, download URLs
- Spotlight comments
- Encoding of files saved with TextEdit
- Caret position of files saved with TextMate
- Skim notes
You can see ACLs with
$ ls -led /Applications/ drwxrwxr-x@ 146 root admin 4964 Jun 17 22:53 /Applications/ 0: group:everyone deny delete
Those files were always there, but they are invisible in Finder (and most Mac OS applications). See https://superuser.com/questions/212896/
That is: these files contain the extended file attributes ... en.wikipedia.org/wiki/Extended_file_attributes ... and they were created as soon as MacOS gave extended attributes to the files. So these ._* files were not created for the tar archive.