Thời gian đọc: 15 phút
Trong môi trường Unix/Linux, việc nén và giải nén file là một kỹ năng cần thiết giúp bạn quản lý dung lượng lưu trữ hiệu quả. Có nhiều lệnh và công cụ hỗ trợ nén file, mỗi loại đều mang lại những ưu và nhược điểm riêng. Bài viết này sẽ cung cấp hướng dẫn chi tiết, rõ ràng về các lệnh nén file phổ biến như tar
, gzip
, bzip2
, zip
, và xz
. Từ đó, bạn sẽ dễ dàng lựa chọn phương pháp nén phù hợp với nhu cầu của mình, giúp tiết kiệm không gian lưu trữ và tối ưu hóa hệ thống.
tar
– Gom và nén nhiều file thành mộtLệnh tar
(Tape Archive) là một công cụ mạnh mẽ trong Unix/Linux giúp gom nhiều file và thư mục thành một file duy nhất, có thể nén bằng các phương pháp khác như gzip
hoặc bzip2
. Lệnh tar
không tự nén dữ liệu mà chỉ gom nhiều file vào một tệp lưu trữ. Tuy nhiên, khi kết hợp với gzip
hoặc bzip2
, bạn có thể tạo ra các file nén hiệu quả như .tar.gz
hoặc .tar.bz2
.
tar
:
tar [options] [archive_name] [file_or_directory]
-c
: Tạo mới một archive (nén các file)-x
: Giải nén archive-v
: Hiển thị thông tin chi tiết quá trình nén hoặc giải nén (verbose)-f
: Đặt tên file archive-z
: Nén bằng gzip
-j
: Nén bằng bzip2
-C
: Thay đổi thư mục giải nén.tar.gz
:
tar -czvf archive_name.tar.gz /path/to/directory
-c
: Tạo mới file nén-z
: Nén bằng gzip
-v
: Hiển thị thông tin quá trình-f
: Đặt tên file nén.tar.gz
:
tar -xzvf archive_name.tar.gz
-x
: Giải nén-z
: Giải nén từ định dạng gzip-v
: Hiển thị thông tin quá trình giải nén-f
: Chỉ định tên file nén-C
để thay đổi thư mục đích:
tar -xzvf archive_name.tar.gz -C /path/to/destination
gzip
hoặc bzip2
để nén dữ liệu.tar
chỉ gom file, không nén dữ liệu trừ khi sử dụng -z
(gzip) hoặc -j
(bzip2).gzip
– Nén file đơn giản và hiệu quảLệnh gzip
là công cụ nén dữ liệu thông dụng, thường được dùng để nén một file đơn lẻ. Lệnh này thay thế file gốc bằng file đã nén và thêm phần mở rộng .gz
. gzip
sử dụng thuật toán Lempel-Ziv (LZ77), giúp giảm kích thước file hiệu quả và nhanh chóng.
gzip [options] [file_name]
-d
: Giải nén file .gz
-k
: Giữ lại file gốc sau khi nén-v
: Hiển thị thông tin quá trình nén-r
: Nén đệ quy thư mục
gzip file.txt
Sau khi nén, file file.txt
sẽ được thay thế bằng file.txt.gz
.
gzip -k file.txt
Lệnh này sẽ tạo ra file file.txt.gz
và vẫn giữ lại file gốc file.txt
.
gzip -d file.txt.gz
File file.txt.gz
sẽ được giải nén và thay thế bằng file file.txt
.
tar
để nén nhiều file thành file .tar.gz
.bzip2
– Nén file hiệu quả cao hơn gzip
Lệnh bzip2
tương tự như gzip
, nhưng sử dụng thuật toán nén hiệu quả hơn (Burrows-Wheeler) giúp file sau khi nén nhỏ hơn đáng kể. Tuy nhiên, tốc độ nén và giải nén của bzip2
thường chậm hơn gzip
. File nén sẽ có phần mở rộng .bz2
.
bzip2 [options] [file_name]
-d
: Giải nén file .bz2
-k
: Giữ lại file gốc sau khi nén-v
: Hiển thị quá trình nén chi tiết
bzip2 file.txt
File file.txt
sẽ được thay thế bằng file.txt.bz2
.
.bz2
:
bzip2 -d file.txt.bz2
File file.txt.bz2
sẽ được giải nén thành file.txt
.
gzip
.tar
.zip
– Nén file theo định dạng phổ biếnLệnh zip
tạo file nén có định dạng .zip
, là một định dạng nén phổ biến được sử dụng rộng rãi trên nhiều hệ điều hành khác nhau. Không giống như gzip
hay bzip2
, zip
có thể nén cả file và thư mục mà không cần kết hợp với tar
.
zip [options] [archive_name.zip] [file_or_directory]
-r
: Nén đệ quy các file và thư mục con-d
: Xóa file khỏi archive đã tạo-v
: Hiển thị thông tin chi tiết quá trình nén
zip -r archive_name.zip /path/to/directory
Lệnh này sẽ nén toàn bộ thư mục và các thư mục con vào file archive_name.zip
.
.zip
:
unzip archive_name.zip
gzip
hoặc bzip2
.xz
– Nén tệp với tỉ lệ nén caoxz
là công cụ nén hiệu quả cao trong Unix/Linux, sử dụng thuật toán LZMA (Lempel-Ziv-Markov chain algorithm), giúp nén dữ liệu mạnh mẽ hơn so với gzip
và bzip2
. Tệp nén sẽ có phần mở rộng .xz
.
xz [options] [file_name]
-d
: Giải nén file .xz
-k
: Giữ lại file gốc-v
: Hiển thị thông tin quá trình nén
xz file.txt
File file.txt
sẽ được thay thế bằng file.txt.xz
.
xz -d file.txt.xz
compress
– Nén các fileLệnh compress
là một công cụ cũ để nén file trong Unix/Linux, tạo ra các file có phần mở rộng .Z
. Mặc dù ít phổ biến hơn so với các công cụ hiện đại như gzip
, compress
vẫn có thể hữu ích trong một số trường hợp cần tương thích với các hệ thống cũ.
compress [options] [file_name]
-v
: Hiển thị thông tin chi tiết trong quá trình nén-c
: Ghi output ra stdout thay vì tạo file nén mới
compress file.txt
File file.txt
sẽ được thay thế bằng file nén file.txt.Z
.
compress -c file.txt > file.txt.Z
Kết quả nén được xuất ra màn hình hoặc ghi ra file khác.
gzip
hay bzip2
.gunzip
– Bỏ nén các fileLệnh gunzip
được sử dụng để giải nén các file đã được nén bằng gzip
hoặc các file có phần mở rộng .gz
. Nó là công cụ ngược lại của gzip
, giúp bạn khôi phục file về trạng thái ban đầu.
gunzip [options] [file_name.gz]
-k
: Giữ lại file gốc sau khi giải nén-v
: Hiển thị thông tin chi tiết quá trình giải nén-c
: Giải nén ra stdout mà không thay đổi file gốc.gz
:
gunzip file.txt.gz
File file.txt.gz
sẽ được giải nén thành file gốc file.txt
.
.gz
sau khi giải nén:
gunzip -k file.txt.gz
Lệnh này sẽ giữ lại cả file file.txt.gz
và file gốc file.txt
sau khi giải nén.
gzip
..gz
.gzip
– Phương thức nén thay thế GNULệnh gzip
là một công cụ nén thông dụng, đã được đề cập ở phần trên. Đây là một phương thức nén phổ biến trong hệ thống GNU, nén file hiệu quả và nhanh chóng, giúp tạo ra các file có phần mở rộng .gz
.
gzip [options] [file_name]
-d
: Giải nén file .gz
-k
: Giữ lại file gốc sau khi nén-v
: Hiển thị thông tin chi tiết quá trình nén
gzip file.txt
File file.txt
sẽ được thay thế bằng file file.txt.gz
.
.gz
:
gzip -d file.txt.gz
tar
.uncompress
– Bỏ nén các fileLệnh uncompress
được sử dụng để giải nén các file đã được nén bằng lệnh compress
với phần mở rộng .Z
. Công cụ này phục vụ cho việc tương thích với các hệ thống Unix/Linux cũ.
uncompress [options] [file_name.Z]
-v
: Hiển thị thông tin chi tiết trong quá trình giải nén-c
: Giải nén ra stdout thay vì ghi vào file.Z
:
uncompress file.txt.Z
File file.txt.Z
sẽ được giải nén thành file.txt
.
compress
..Z
.unzip
– Liệt kê, kiểm tra và giải nén các file ZIPLệnh unzip
được sử dụng để giải nén các file .zip
, định dạng nén phổ biến trên nhiều hệ điều hành như Windows, macOS và Linux. Ngoài việc giải nén, unzip
còn có thể liệt kê và kiểm tra nội dung của file nén mà không cần giải nén.
unzip [options] [file_name.zip]
-l
: Liệt kê nội dung của file .zip
-v
: Hiển thị thông tin chi tiết quá trình giải nén-t
: Kiểm tra tính toàn vẹn của file nén-d
: Giải nén đến thư mục đích cụ thể.zip
:
unzip file.zip
File file.zip
sẽ được giải nén và các file trong đó sẽ được khôi phục.
.zip
vào thư mục cụ thể:
unzip file.zip -d /path/to/directory
.zip
:
unzip -l file.zip
.zip
không phải là định dạng nén mạnh mẽ nhất.zcat
– Nối và liên kết các file bị nénLệnh zcat
hoạt động tương tự như cat
, nhưng dành cho các file nén bằng gzip
. Lệnh này cho phép bạn xem nội dung của các file .gz
mà không cần giải nén chúng.
zcat [file_name.gz]
.gz
:
zcat file.txt.gz
gzip
.zcmp
– So sánh các file bị nénLệnh zcmp
giúp so sánh nội dung của hai file nén bằng gzip
, tương tự như lệnh cmp
cho các file thông thường.
zcmp file1.gz file2.gz
zcmp file1.txt.gz file2.txt.gz
.gz
.zdiff
– So sánh các file bị nénLệnh zdiff
tương tự như diff
nhưng dành cho các file nén bằng gzip
. Nó sẽ hiển thị sự khác biệt giữa các file nén mà không cần giải nén.
zdiff file1.gz file2.gz
zdiff file1.txt.gz file2.txt.gz
.gz
.zmore
– Lọc file để quan sát crt của các văn bản bị nénLệnh zmore
là công cụ tuyệt vời cho việc đọc các file văn bản nén từng trang mà không cần phải giải nén trước. Lệnh này hữu ích khi bạn cần duyệt qua các file lớn được nén, nhưng không muốn giải nén toàn bộ file ngay lập tức.
zmore [options] [file_name.gz]
-d
: Hiển thị thêm chi tiết khi thực hiện.-p
: Dừng hiển thị khi đạt tới cuối trang và chờ người dùng tiếp tục.
zmore file.txt.gz
File file.txt.gz
sẽ được hiển thị từng phần nhỏ trên màn hình, và bạn có thể tiếp tục đọc bằng cách nhấn phím Space
để chuyển trang.
gzip
.Việc hiểu và sử dụng thành thạo các lệnh nén file trong Unix/Linux không chỉ giúp tối ưu hóa dung lượng lưu trữ mà còn cải thiện hiệu quả làm việc với các tệp tin lớn. Tùy vào mục đích và nhu cầu, bạn có thể chọn các công cụ như tar
, gzip
, bzip2
, zip
, hoặc xz
để đạt hiệu quả cao nhất. Các lệnh như compress
, gzip
, unzip
, zcat
, zdiff
, và zmore
cung cấp nhiều phương thức linh hoạt để nén, giải nén, so sánh, kiểm tra và đọc file. Việc nắm vững các lệnh này không chỉ giúp bạn quản lý file hiệu quả mà còn đảm bảo hệ thống hoạt động ổn định và mượt mà hơn.