Làm cách nào để sử dụng lệnh tar để nhóm các tệp mà không nén?


60

Tôi có một thư mục rất lớn gồm hơn 120.000 tệp. và tôi cần di chuyển chúng đến một vị trí khác trên cùng một máy (cùng phân vùng).

Tôi muốn sử dụng tarlệnh để nhóm chúng thành một đơn vị duy nhất và sau đó mvchúng đến vị trí cuối.

Tôi cần lệnh gì để chạy tartất cả chúng cùng nhau và không nén bất cứ thứ gì (tôi cần kết quả nhanh nhất).


1
Tại sao sử dụng tar, và không chỉ mv (1) các tập tin? Hoặc sử dụng cp (1) nếu bạn không muốn mất bản gốc?
vonbrand

@vonbrand người ta có thể muốn rsync qua mạng một tệp liên tục duy nhất. nhanh hơn nhiều so với rsyncing 120k tệp nhỏ hơn. đó là sự khác biệt giữa tốc độ tối đa không đổi đến mức cao và mức thấp
mwm

Câu trả lời:


85

tar không nén theo mặc định, chỉ cần không thêm tùy chọn nén:

tar cvf myfolder.tar myfolder

Tôi bao gồm nhận xét của Hennes trong câu trả lời của mình vì nó bổ sung thông tin hữu ích:

TAR (lưu trữ băng) ban đầu là một chương trình unix được sử dụng để tạo tài liệu lưu trữ trên băng. Vì tất cả các thiết bị được coi là tệp dưới dạng unix, nên dễ dàng không ghi vào băng mà thay vào đó là tệp. Điều này thường được thực hiện với cờ -f. Lệnh tar cvf myfolder.tar myfolder có nghĩa là tar, c reate, v erbose f ile filename_to_create what_to_tar. Không có nén ở bất cứ đâu. Tar lưu trữ (dưới dạng tệp) trong đó thường được nén bằng chương trình nén và đã đạt được phần mở rộng .Z (ví dụ: file.tar.Z). Sau đó, điều này đã được bao gồm trong gtar với cờ z


Điều đó sẽ thêm đệ quy tất cả các thư mục con và tệp trong tar?
serserg

2
@Serg có, nó sẽ.
terdon

1
Cảm ơn. Tôi thường cố gắng trả lời ở cả dạng ngắn và dài. Như trong "có / không, nó sẽ [không] hoạt động" cho câu ngắn, và một lời giải thích về lý do tại sao câu trả lời dài hơn. Có nền tảng như tại sao thường giúp trong tương lai.
Hennes

@ Không phải lúc nào cũng là trường hợp hướng dẫn hoặc hướng dẫn tốt đến mức họ làm cho mọi thứ rõ ràng ngay lập tức đọc chúng, đôi khi cách tốt nhất là tiếp tục và thử lệnh bằng mọi cách, sau đó bạn sẽ thấy nó làm gì, và một khi bạn biết những gì nó làm hoặc có một ý tưởng tốt thì hướng dẫn có thể xác nhận điều đó cho bạn! thật dễ dàng để kiểm tra tar trên một tập hợp ví dụ nhỏ của tập tin. Với các ví dụ về cách sử dụng nó, mà không cần phải tạo đầu hoặc đuôi của hướng dẫn.
barlop

Lưu ý rằng nếu muốn có kết quả nhanh nhất, bạn nên bỏ cờ "v" để tắt đầu ra. Trong trường hợp của tôi, điều này đã giảm thời gian lệnh từ 16 giây xuống còn 6 giây khi chạy nó trên một phiên bản AWS t2.medium.
David Backeus

6

Câu trả lời @terdon là đúng.

Nhưng tôi đã làm một lỗi nhỏ làm tar cvf myfolder.tar.gz myfolder. Tôi muốn các tên kết thúc giống nhau cho các tệp trong cùng một đường dẫn tar.gzngay cả khi nó không được nén.

Vì vậy, nếu bạn đặt một cái gì đó giống như .gz, .zở cuối tên tệp bạn đang cố gắng tar, ứng dụng tar sẽ hiểu bạn muốn sử dụng một số nén và nó sẽ áp dụng tương ứng với những gì bạn đặt (gz = gzip).

Vì vậy, nếu bạn muốn sử dụng tiện ích mở rộng như vậy tar.gz, hãy đảm bảo sử dụng cờ--no-auto-compress

--no-auto-compress    do not use archive suffix to determine the compression 
program
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.