Một trong những lúng túng của người mới dùng Linux là phải lựa chọn các định dạng lưu trữ và nén. Có thể là tar.gz
, có thể là zip
hoặc tar.bz2
. Dưới đây là một số điều cơ bản mà bạn cần biết về các định dạng nén để có thể dễ dàng hơn trong việc sử dụng.
Trước tiên, chúng ta cần phân biệt giữa lưu trữ (archiving) và nén (compression). Lưu trữ là việc gộp một số tập tin vào một tập tin duy nhất. Việc này sẽ giúp cho việc lưu trữ và truyền dữ liệu được dễ dàng hơn. Nó cũng giống như việc bạn dùng một cái cặp để đựng tất cả các tài liệu của mình. Bản lưu trữ phải chứa một số thông tin về tập tin gốc, như tên và độ dài, để sau này việc bung gói được hoạt động chính xác, tương tự như các tài liệu của bạn sẽ được giữ y nguyên khi bạn mở cặp tài liệu của mình. Một số định dạng lưu trữ tập tin phổ biến là tar và zip.
Còn nén là tiến trình sử dụng các lược đồ mã hoá để lưu thông tin với số bit ít hơn so với dạng biểu diễn truyền thống. Nó cũng tương tự như việc viết tắt và viết thường, trong đó viết tắt thì đỡ tốn giấy hơn. Các định dạng nén phổ biến là zip, gz, và bz2.
Làm việc với các bản lưu trữ
Định dạng tar là định dạng lưu trữ phổ biến nhất trên các hệ thống *nix. Mục đích ban đầu của tar là nó được sử dụng vào việc chuyển tập tin giữa các tập băng từ – tar là viết tắt của "tape archive". Một bản lưu trữ dạng tar, trong tiếng Anh, thường được gọi là một tarball.
Để lưu trữ các tập tin, dùng lệnh theo cú pháp như tar -cf archive.tar file1 file2 file3
. Lệnh này gộp các tập tin file1
, file2
, và file3
rồi lưu chúng trong tập tin archive.tar
. Tuỳ chọn -c
chỉ ra là bạn muốn tar tạo một bản lưu trữ. Tuỳ chọn -f
cho biết chúng ta đang làm việc với nhiều tập tin.
Lệnh tar -xf archive.tar
sẽ bung mọi tập tin từ archive.tar
và lưu chúng vào thư mục hiện tại với tên ban đầu của chúng.
Nếu bạn chỉ muốn biết tập tin archive.tar
gói những tập tin nào mà không muốn bung nó ra, dùng lệnh tar -tvf archive.tar
.
Nén tập tin
Trên lãnh địa *nix, bz
và gz
là hai định dạng nén phổ biến nhất. Thông thường, bạn dùng tiện ích bzip2 để tạo tập tin bz
, và gzip để tạo gz
. Điều khác biệt cơ bản giữa chúng là thuật toán nén được bzip2 dùng sẽ tạo ra các tập tin nhỏ hơn một cách đáng kể. Mặt hạn chế là bzip2 sử dụng nhiều bộ nhớ hơn và mất nhiều thời gian hơn.
Để nén một tập tin bằng gzip, dùng lệnh gzip filename
. Kết quả là một tập tin tên là filename.gz
. Như vậy, lệnh gzip homepage.htm
tạo ra homepage.htm.gz
.
Một điều cần nhớ về gzip là nó thay thế tập tin gốc bằng một tập tin khác có đuôi .gz
.
Để giải nén tập tin, dùng gzip -d
hoặc gunzip
.
bzip2 cũng tương tự như gzip. Giống như gzip, bzip2 ghi đè lên tập tin gốc bằng một tập tin khác với đuôi .bz
hoặc .bz2
. Giải nén tập tin .bz
rất đơn giản – dùng bzip2 -d
hoặc bunzip2
.
Khi nén, cả gzip lẫn bzip2 đều giữ nguyên các thông tin về chủ sở hữu (owners) và các quyền (permissions) lưu trên tập tin gốc.
Nếu bạn muốn chia sẻ tập tin với những ai không dùng hệ điều hành *nix, bạn cũng có thể dùng tiện ích zip
để nén. Lệnh zip files.zip file1 file2 file3
sẽ nén ba tập tin, hiển thị tỉ lệ nén của mỗi tập tin, và lưu chúng vào files.zip
. Chương trình unzip
được dùng để giải nén tập tin zip.
Các bản lưu trữ được nén
Nếu như zip có luôn cả chức năng lưu trữ và nén thì tar lại chỉ có thể lưu trữ mà thôi. Điều này có nghĩa là sau khi bạn tạo một tarball, kích thước tập tin được tạo ra sẽ bằng với tổng kích thước các tập tin riêng lẻ. Để giảm kích thước của tarball, bạn phải nén nó bằng gzip hoặc bzip2:
tar -cf archived.tar file1 file2 file3
gzip archived.tar
Lệnh này nén archived.tar
và thay thế nó bằng archived.tar.gz
. Bạn có thể sử dụng bzip2 thay vì gzip. Nếu bạn không muốn gõ hai dòng lệnh, bạn có thể dùng lệnh tắt như sau:
tar zcvf archived.tar.gz file1 file2 file3
(với định dạng gz)
hoặctar jcvf archived.tar.bz2 file1 file2 file3
(với định dạng bz2)
Phần dưới đây sẽ giải thích ý nghĩa của các tuỳ chọn -z
, -j
và -v
ở được dùng ở hai lệnh trên.
Làm thế nào để giải nén các bản nén tarball? Dùng lệnh tar zxvf archived.tar.gz
để giải nén mọi tập tin từ tập tin tarball được nén ở dạng gzip. Tuỳ chọn -z
cho tar biết là tarball này được nén ở dạng gzip.
Nếu bạn dùng bzip2 để nén tarball này, bạn sẽ gặp phải một thông báo lỗi nếu bạn dùng tuỳ chọn -z
cho tar. Để giải nén một tập tin tarball được nén ở dạng bzip2, bạn cần dùng tuỳ chọn -j
ở vị trí đó. Lệnh tar jxvf archived.tar.bz2
sẽ giải nén tập tin.
Khi giải nén bằng hai lệnh trên bạn sẽ thấy tar hiển thị tên các tập tin được giải nén. Đó là do bạn đã sử dụng tuỳ chọn -v
(verbose).
Bạn có thể gặp các tarball được nén ở dạng khác, điển hình như tgz
và tbz2
. Thực chất, chúng là dạng viết tắt tương ứng với tar.gz
và tar.bz2
.
Mặc dù ban đầu mọi thứ trông có vẻ phức tạp, nhưng trên đây là tất cả những gì cần thiết để lưu trữ và nén tập tin trong môi trường *nix. Từ đây, bạn sẽ không còn phải băn khoăn gì về định dạng nén nữa, bạn sẽ biết mình cần phải làm gì. Và để tìm hiểu thêm về các công cụ này, các trang man luôn là một nguồn tham khảo tốt.
Bản dịch có một số sửa đổi và bổ sung so với nguyên bản tiếng Anh.