2012-01-07 19 views
19

Tôi đang viết kho lưu trữ tar của riêng mình. Tất cả các công trình tốt bên trong ứng dụng của tôi (thậm chí đọc tars được tạo ra với các công cụ khác) tuy nhiên tôi không thể có được các tập tin tar của tôi để làm việc với người đọc tập tin tar bên thứ 3. Vì vậy, tôi đã cố gắng xây dựng một tập tin tar trên dòng lệnh, xây dựng một với mã của tôi và nhị phân so sánh hai.Lệnh Tar trong mac os x thêm tệp "ẩn", tại sao?

Nhưng có vẻ là một vấn đề:

Tôi có một textfile gọi Test.txt mà tôi muốn thêm vào tar của tôi, vì vậy tôi chạy lệnh sau trong terminal:

tar -c -f x.tar Test.txt 

khi làm điều này:

tar -tf x.tar 

tôi nhận được danh sách sau đây:

./._Test.txt 
Test.txt 

Đây là trong Thiết bị đầu cuối trên Mac OS X Lion.

Tệp đó ở đâu? ./._Test.txt? Tôi không nhìn thấy nó khi thực hiện một ls -a

Khi kiểm tra nội dung tar nó có vẻ là một số dữ liệu nhị phân, nhưng tôi không biết nó xuất phát từ đâu.

Trả lời

4

Đó là đại diện cho các thuộc tính mở rộng/mở rộng tài nguyên của tệp.

Hãy thử ls [email protected] Test.txtxattr -l Test.txt để xem nội dung nào được OSX thêm vào tệp.

30

Bạn có thể thêm dòng sau vào tập tin .bashrc của bạn -

export COPYFILE_DISABLE=true 

Hoặc, bạn có thể thêm tùy chọn này để lệnh tar của bạn đồng thời khai thác

tar -xzpvf x.tar --exclude="._*" 
+4

Tham số loại trừ không hoạt động ở đây, sử dụng lệnh xuất hiện. –

+1

'--exclude' làm việc cho tôi (sau khi bằng cách nào đó đi vào một tình huống mà untarring ngay cả trên OS X đã gây ô nhiễm tất cả mọi thứ với' ._'-file). –

17

Kể từ bsdtar 3.0.3 - libarchive 3.0.3 (và có thể sớm hơn) có tùy chọn mới (tùy chọn Mac OS X) cho lệnh bsdtar được gọi là --disable-copyfile để ngăn chặn việc tạo các tệp ._.

+4

Với 'bsdtar 2.8.3 - libarchive 2.8.3' của' 10.7.5' thì '--disable-copyfile' không được ghi lại nhưng vẫn có sẵn. –