Cách lưu trữ một thư mục lớn trong một tệp mà không cần nén


11

Tôi muốn lấy một thư mục 78gb và lưu trữ nó trong một tệp duy nhất (để tải lên dịch vụ đám mây), như thể tôi đang nén nó trong một kho lưu trữ, nhưng tôi không muốn nén bất kỳ (tôi không có nhiều CPU thời gian có sẵn). Có dù sao tôi có thể thực hiện được điều này, có lẽ là một lệnh thiết bị đầu cuối mà tôi không biết?


1
tarlệnh trong linux. tar -cf long.file.tar folder
Costas

5
FYI: Có các chương trình nén nhanh, một số chương trình sẽ nhanh hơn tốc độ ghi đĩa của bạn và nhiều chương trình sẽ nhanh hơn mạng của bạn. Sử dụng một trong những thứ đó thực sự sẽ tăng tốc mọi thứ, nếu dữ liệu hoàn toàn có thể nén được. Ví dụ, lzopđược thiết kế cho tốc độ.
derobert

Câu trả lời:


20

Sử dụng tar: tar -cf my_big_folder.tar /my/big/folder

Khôi phục kho lưu trữ với tar -xf my_big_folder.tar -C /

-C sẽ thay đổi thư mục gốc để khôi phục kho lưu trữ của bạn vì kho lưu trữ được tạo ở trên có đường dẫn tuyệt đối.

EDIT : Do kích thước tương đối lớn của kho lưu trữ, tốt nhất nên gửi [trực tiếp] đến vị trí cuối cùng của nó, sử dụng SSH hoặc điểm gắn kết của thư mục / tài nguyên đám mây. Ví dụ, như Cole Johnson gợi ý :

tar -cf /network/mount/point/my_big_folder.tar /my/big/folder

hoặc là

tar -c /my/big/folder | ssh example.com "cat > my_big_folder.tar"

EDIT : Như Blacklight Shining cũng gợi ý , Nếu bạn muốn tránh các đường dẫn tuyệt đối, bạn có thể thay đổi thành cha mẹ của thư mục lớn và tartừ đó:

tar -cf /network/mount/point/my_big_folder.tar \
    -C /my/big/folder/location the_big_folder

hoặc là

tar -cC /my/big/folder/location the_big_folder | \
ssh example.com "cat > my_big_folder.tar"

Phản xạ cá nhân

Việc bao gồm các đường dẫn tương đối hay tuyệt đối là vấn đề sở thích cá nhân.

Có những trường hợp đường dẫn tuyệt đối là rõ ràng, ví dụ để khôi phục trong tình huống khắc phục thảm họa. Đối với các dự án hoặc bộ sưu tập cục bộ, thông thường lưu trữ cây thư mục từ thư mục gốc của thư mục mong muốn để tránh làm lộn xộn thư mục hiện tại, trong trường hợp kho lưu trữ vô tình được giải nén tại chỗ. Nếu big_folder nằm ở đâu đó sâu trong hệ thống phân cấp * NIX tiêu chuẩn , thì có thể có ý nghĩa khi bắt đầu lưu trữ thư mục không chuẩn đầu tiên nơi big_folder đi chệch khỏi và cây thư mục của nó từ đó.

Cuối cùng - đi theo phạm vi ở đây - tarcác thành viên lưu trữ luôn tương đối vì a) họ có thể được khôi phục trong bất kỳ thư mục nào và b) tar xóa hàng đầu /khi tạo tệp lưu trữ. Cá nhân tôi có xu hướng luôn sử dụng -C khi giải nén tệp lưu trữ.


Để làm rõ chỉnh sửa: làm tar -cf /network/mount/point/folder.tar /folderthay vì tarring vào máy tính cục bộ và sau đó tải lên nếu bạn có thể
Cole Johnson

Chính xác. Càng đọc bản chỉnh sửa của mình, tôi càng nghĩ nó có vẻ bối rối. Cảm ơn sự sáng suốt của bạn.

1
Đó là cách đáng chú ý để tránh làm cho việc lưu trữ với các đường dẫn tuyệt đối : tar -cf $archive.tar -C $source_dir .. Nếu máy đích không có thư mục có cùng đường dẫn với thư mục nguồn, bạn sẽ cần phải làm điều đó. Chỉ cần đảm bảo -Cvào một thư mục mới khi bạn giải nén ( mkdir $destination_dir && tar -xf $archive.tar -C $destination_dir); nếu không, nội dung lưu trữ sẽ được chuyển vào bất kỳ thư mục nào bạn có trong đó.
Blacklight Shining

2

Thay thế: cpio

(cd /my/big/folder && find . -depth -print0 | cpio -0o > myfolder.cpio)

Giải nén vào thư mục hiện tại:

cpio -id < myfolder.cpio

Hãy cẩn thận:

  • Nếu sử dụng find /my/big/folderthay vì cd, kho lưu trữ sẽ chứa các đường dẫn đầy đủ và trích xuất sẽ cố gắng theo chúng;
  • Các tệp lớn (> 2GB) có thể là một vấn đề;

Cpio có xu hướng chậm hơn nhiều so với tar, tuy nhiên, nếu được sử dụng với kích thước khối mặc định là 512. ( fixunix.com/sco/89900-cpio-performance-vs-tar-bit-mystery.html )
PSkocik
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.