I am writing my own tar archiver. All works fine inside my app (even reading tars generated with other tools) however I cannot get my tar files to work with 3rd party tar file readers. So I tried building a tar file on the command line, building one with my code and binary comparing the two.
But there seems to be an issue:
I have a textfile called Test.txt which I want to add to my tar, so I run the following command in the terminal:
tar -c -f x.tar Test.txt
When doing this:
tar -tf x.tar
I get the following list:
./._Test.txt
Test.txt
This is in the Terminal on Mac OS X Lion.
Where does that ./._Test.txt
file come from? I don't see it when doing an ls -a
Upon inspecting the tar contents it seems to be some binary data, but I have no idea where it comes from.
It's a representation of the file's resource fork/extended attributes.
Try
ls -l@ Test.txt
andxattr -l Test.txt
to see what extra stuff OSX tacked on to the file.As of bsdtar
3.0.3 - libarchive 3.0.3
(and perhaps earlier) there's a new (Mac OS X specific) option to thebsdtar
command called--disable-copyfile
to suppress the creation of._
files.This is the way OSX stores the file system forks when the target file system does not support them.
See: http://en.wikipedia.org/wiki/Fork_(file_system)
You can add the following to your bashrc file -
Or, you can add this option to your
tar
command at the extraction time