Bạn muốn tạo một tập tin tar từ vị trí các tập tin bạn cần để nằm?
Có rất nhiều cách để làm điều này.
Nếu nó được tạo cục bộ (= trên cùng một máy):
tar czvf /path/to/destination/newfile.tar.gz ./SOURCEDIR_OR_FILES
Bạn có thể thêm các tập tin hoặc thư mục bổ sung vào tar ở cuối lệnh đó.
Nếu nó được tạo từ xa (nghĩa là bạn muốn tạo tệp tar trên máy chủ từ xa từ máy chủ chứa dữ liệu cần xử lý):
tar czvf - ./SOURCEDIR_OR_FILES | ssh user@host 'cat > newfile.tar.gz'
Phiên bản sau rất linh hoạt. Ví dụ: bạn cũng có thể "sao chép" một thư mục + thư mục con bằng cách sử dụng cùng một kỹ thuật:
Sao chép thư mục + thư mục con sang thư mục cục bộ khác:
tar cf - ./SOURCEDIR_OR_FILES | ( cd LOCAL_DEST_DIR && tar xvf - )
Sao chép thư mục + thư mục con sang thư mục từ xa khác:
tar cvf - ./SOURCEDIR_OR_FILES | ssh user@host 'cd REMOTE_DEST_DIR && tar xf - '
Bỏ 'v' nếu bạn không cần nó để hiển thị các tệp vì chúng là tar-ed (hoặc chưa được chỉnh sửa): sau đó sẽ nhanh hơn nhiều, nhưng sẽ không nói nhiều trừ khi có lỗi.
Tôi sử dụng ". / ..." cho nguồn để buộc tar lưu trữ nó dưới dạng đường dẫn ĐÁNG TIN CẬY. Trong một số trường hợp, bạn sẽ muốn thêm thông tin đường dẫn bổ sung:
Ví dụ: để tar các tập tin crontab, bao gồm cả tập tin trong / etc, bạn có thể làm:
cd / ; tar czf all_crons.tgz ./etc/*cron* ./var/spool/cron
Tôi sử dụng trên mục đích đường dẫn tương đối: một số phiên bản OLD của tar có thể nguy hiểm và trích xuất các tệp bằng đường dẫn GLOBAL ban đầu của chúng, nghĩa là bạn có thể làm: cd /safedir ; tar xvf sometar
và có các tệp có tên toàn cầu ghi đè lên các tệp tại đường dẫn gốc của chúng, đó là NGOÀI TRỜI / safedir và không bên dưới nó! Rất nguy hiểm, và vẫn có thể xảy ra vì có những máy chủ sản xuất cũ ngoài kia. Tốt hơn nên được sử dụng để sử dụng các đường dẫn tương đối mọi lúc, ngay cả khi bạn sử dụng tar gần đây hơn.
cd /opt; tar zcf $HOME/junk.tar.gz junk
.