Trong Depth Nhìn vào các lệnh lưu trữ và nén của Linux
Sự cần thiết để đóng gói và nén các tập tin với nhau thành một kho lưu trữ duy nhất đã được xung quanh kể từ khi máy tính đầu tiên có ổ đĩa cứng, và nhu cầu đó vẫn còn cho đến ngày hôm nay. Mọi thứ từ tài liệu và ảnh đến phần mềm và trình điều khiển thiết bị đều được tải lên và tải xuống dưới dạng lưu trữ mỗi ngày. Hầu hết người dùng máy tính đều quen thuộc với tệp .zip, nhưng có nhiều tệp lưu trữ hơn là tệp .zip khiêm tốn. Trong hướng dẫn này, chúng tôi sẽ cho bạn thấy các lệnh lưu trữ và nén khác nhau của Linux và cách thích hợp để sử dụng chúng.
Tar và gzip
Về mặt lịch sử, công cụ lưu trữ mặc định trên Linux là lệnh tar
. Ban đầu nó đứng cho "Tape Archive", nhưng đó là trở lại khi băng là phương tiện truyền thông chính để di chuyển xung quanh dữ liệu. Lệnh tar
rất linh hoạt và có thể tạo, nén, cập nhật, trích xuất và kiểm tra các tệp lưu trữ. Phần mở rộng mặc định cho một kho lưu trữ tar không nén (đôi khi được gọi là tar file hoặc tarball) là .tar trong khi nén tar lưu trữ thường xuyên nhất sử dụng phần mở rộng .tgz (có nghĩa là một tập tin tar nén với GNU zip). Tar thực sự cung cấp một số phương pháp nén khác nhau bao gồm bzip2, zip, LZW và LZMA.
Để tạo một tarball không nén của tất cả các tệp trong một thư mục, hãy sử dụng lệnh sau:
tar cvf somefiles.tar *
c
có nghĩa là tạo, v
là viết tắt của verbose (có nghĩa là lệnh tar sẽ liệt kê các tệp mà nó đang lưu trữ) và f
cho tar biết tham số tiếp theo là tên của tệp lưu trữ, trong trường hợp này là "somefiles.tar". Ký tự đại diện * có nghĩa là tất cả các tệp trong thư mục, vì nó sẽ dành cho hầu hết các lệnh của trình bao Linux.
Tarball “somefiles.tar” được tạo trong thư mục cục bộ. Điều này bây giờ có thể được nén bằng một công cụ như gzip, zip, compress hoặc bzip2. Ví dụ:
gzip somefiles.tar
gzip sẽ nén tarball và thêm phần mở rộng .gz. Bây giờ trong thư mục cục bộ có một tệp somefiles.tar.gz
thay vì tệp somefiles.tar
.
Quá trình hai bước này, tạo ra tarball và nén nó, có thể được giảm xuống một bước bằng cách sử dụng tính năng nén được tích hợp sẵn của tar:
tar cvzf somefiles.tgz *
Điều này sẽ tạo ra một tarball nén gzip được gọi là somefiles.tgz
. Tùy chọn bổ sung z
làm tar để nén tarball. Thay vì z
bạn có thể sử dụng j
, J
hoặc Z
để cho tar sử dụng bzip2, xz và LZW nén tương ứng. xz thực hiện nén LZMA2 là thuật toán tương tự như chương trình Windows 7-Zip phổ biến.
7-Zip
Có thể tạo một tệp tương thích 7-Zip bằng lệnh 7zr
. Để tạo sử dụng lưu trữ .7z:
7zr a somefiles.7z *
Các tùy chọn có nghĩa là thêm, nghĩa là thêm tất cả các tệp cục bộ vào kho lưu trữ somefiles.7z. Tệp này sau đó có thể được gửi tới người dùng Windows và họ sẽ có thể trích xuất nội dung mà không gặp bất kỳ sự cố nào.
Sử dụng 7zr để thực hiện sao lưu trên Linux không được khuyến khích vì 7-zip không lưu trữ thông tin chủ sở hữu / nhóm về các tệp mà nó lưu trữ. Có thể sử dụng 7zr để nén tarball (lưu trữ thông tin chủ sở hữu). Bạn có thể làm điều này bằng cách sử dụng một đường ống Unix như sau:
tar cvf - * | 7zr a -si somefiles.tar.7z
Dấu gạch ngang sau tùy chọn f
cho tar gửi kết quả đầu ra của nó tới stdout
Unix và không gửi đến tệp. Vì chúng ta đang sử dụng một đường ống, đầu ra từ tar sẽ được đưa vào 7zr đang đợi đầu vào từ stdin
do tùy chọn -si
. 7zr sau đó sẽ tạo một kho lưu trữ được gọi là somefiles.tar.7z
sẽ chứa tarball mà chứa các tệp. Nếu bạn không quen với việc sử dụng đường ống, bạn có thể tạo một tarball tiêu chuẩn và sau đó nén nó với 7zr bằng cách sử dụng hai bước:
tar -cvf somefiles.tar * 7zr a somefiles.tar.7z somefiles.tar
Khai thác
Việc giải nén các tập tin từ các kho lưu trữ khác nhau này cũng rất đơn giản, đây là một trang cheat nhanh để trích xuất các tệp khác nhau được tạo ở trên.
Để trích xuất sử dụng tarball đơn giản:
tar xvf somefiles.tar
Trường hợp x
có nghĩa là trích xuất.
Để trích xuất sử dụng tarball nén:
tar xvzf somefiles.tgz
Tùy chọn z
cho tar biết rằng gzip được sử dụng để nén bản lưu trữ gốc. Thay vì z
bạn có thể sử dụng j
, J
hoặc Z
tùy thuộc vào thuật toán nén được sử dụng khi tệp được tạo.
Để trích xuất các tập tin từ một tập tin 7-Zip sử dụng:
7zr e somefiles.tar.7z
Phần kết luận
Linux cung cấp một loạt các lệnh lưu trữ và nén. Hãy thử thử nghiệm với các lệnh zip và xz, chúng hoạt động theo cách rất giống với các công cụ khác được đề cập ở đây. Nếu bạn gặp khó khăn, bạn nên thử đọc trang người đàn ông, ví dụ như man xz
để được trợ giúp thêm.