Loại trừ thư mục khi tạo tệp .tar.gz


119

Tôi có một /public_html/thư mục, trong thư mục đó có một /tmp/thư mục có tới 70gb tệp mà tôi không thực sự cần.

Bây giờ tôi đang cố gắng để tạo ra một .tar.gzsố /public_html/trừ/tmp/

Đây là lệnh tôi đã chạy:

tar -pczf MyBackup.tar.gz /home/user/public_html/ --exclude "/home/user/public_html/tmp/" 

Các tar vẫn đang được tạo ra, và bằng cách thực hiện một ls -shtôi có thể thấy rằng MyBackup.tar.gzđã có khoảng 30GB, và tôi biết chắc chắn rằng /public_html/không có /tmp/không có nhiều hơn 1GB bộ tập tin.

Tôi đã làm gì sai?



các -ptùy chọn không có ý nghĩa về mặt tạo chức năng, đúng không !?
Martin Schneider

Câu trả lời:


201

Thử xóa dấu cuối cùng / ở cuối đường dẫn thư mục để loại trừ

tar -pczf MyBackup.tar.gz /home/user/public_html/ --exclude "/home/user/public_html/tmp" 

7
Để loại trừ toàn bộ thư mục và nội dung của nó: tar -pczvf MyBackup.tar.gz / home / user / public_html / --exclude "/ home / user / public_html / tmp / *"
Dr.jacky

Tôi nhận được tar: Error exit delayed from previous errors.trong macos
Prayagupd


2
Không hoạt động, tôi phải sử dụng --exclude="/home/user/public_html/tmpthay vì--exclude "/home/user/public_html/tmp
Black

1
Bỏ qua nhận xét trước đó của tôi mà tôi không thể chỉnh sửa được nữa: excludetrước tiên cần được chỉ định dưới dạng ghi chú stackoverflow.com/users/3904223/oussaka . Ít nhất thì đó là điều duy nhất phù hợp với tôi
kghbln 12/03 '19

46

Hãy thử di chuyển --excludeđến trước bao gồm.

tar -pczf MyBackup.tar.gz --exclude "/home/user/public_html/tmp/" /home/user/public_html/ 

Cảm ơn, điều này đã làm việc cho tôi trên hộp Ubuntu 14.04 LTS cũ.
Jamsi

1
Tôi cũng cần làm điều này trên OS X.
TheJacobTaylor

16

Có, loại bỏ dấu /và (ít nhất là trong ubuntu 11.04) tất cả các đường dẫn được đưa ra phải là đường dẫn tương đối hoặc đường dẫn đầy đủ. Bạn không thể kết hợp các đường dẫn tuyệt đối và tương đối trong cùng một lệnh.

sudo tar -czvf 2011.10.24.tar.gz ./start-directory --exclude "home/user/start-directory/logs"

sẽ không loại trừ thư mục nhật ký nhưng

sudo tar -czvf 2011.10.24.tar.gz ./start-directory --exclude "./start-directory/logs"

sẽ làm việc


1
Làm việc cho tôi khi tôi loại bỏ đường dẫn tuyệt đối trong đối số loại trừ.
jruzafa

2
Những mẹo về trộn đường dẫn tuyệt đối và tương đối là chìa khóa đối với tôi đây
Dmitri DB

12

Lệnh chính xác để loại trừ thư mục khỏi nén là:

tar --exclude='./folder' --exclude='./upload/folder2' -zcvf backup.tar.gz backup/

Đảm bảo đặt --exclude trước mục nguồn và mục đích .

và bạn có thể kiểm tra nội dung của tệp tar.gz mà không cần giải nén:

tar -tf backup.tar.gz

3

Thử cái này

tar -pczvf advancedarts.tar.gz /home/user/public_html/ --exclude /home/user/public_html/tmp

2

Bạn cũng có thể loại trừ nhiều hơn một chỉ bằng một --exclude. Như ví dụ này:

tar -pczf MyBackup.tar.gz --exclude={"/home/user/public_html/tmp","/home/user/public_html/data"} /home/user/public_html/

Trong --exclude=bạn phải điền tên thư mục mà không có /và phải ở giữa MyBackup.tar.gz/ home / user / public_html /

Cú pháp là:

tar <OPTIONS> <TARBALL_WILL_CREATE> <ARGS> <PATH_TO_COMPRESS>

2

Câu trả lời được chấp nhận không hoạt động đối với tôi, chạy tar unxutils trên windows10. Thay vào đó, tôi phải đặt các tệp / dirs để lưu trữ làm tham số cuối cùng , như sau:

tar -pczf MyBackup.tar.gz --exclude "/home/user/public_html/tmp/" /home/user/public_html/

Sau đó, nó hoạt động.


2

Điều này đã làm việc cho tôi:

tar -zcvf target.tar.gz target/ --exclude="target/backups" --exclude="target/cache"

2

tar -pczf <target_file.tar.gz> --exclude /path/to/exclude --exclude /another/path/to/exclude/* /path/to/include/ /another/path/to/include/*

Đã thử nghiệm trong Ubuntu 19.10.

  1. Các =sau excludelà tùy chọn. Bạn có thể sử dụng =thay thế cho dấu cách sau từ khóa excludenếu bạn muốn.
  2. Thông số excludephải được đặt trước nguồn.
  3. Sự khác biệt giữa tên thư mục sử dụng (như tên thứ nhất) hoặc * (như tên thứ hai) là: tên thứ hai sẽ bao gồm một thư mục trống trong gói nhưng tên thứ nhất thì không.

-2

Tùy chọn loại trừ cần bao gồm =dấu hiệu và "không bắt buộc.

--exclude=/home/user/public_html/tmp

1
"là bắt buộc nếu thư mục có khoảng trống trong tên
Black
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.