Tất tần tật về Nén và Giải Nén Zip, Gzip, Tar, Rar, 7-Zip trên Linux

Đăng bởi: Admin | Lượt xem: 6178 | Chuyên mục: Linux/Server

Zip, Gzip và Tar là các dạng đóng gói cơ bản trên các hệ thế Linux, unix. Tar dùng để đóng gói dữ liệu, Gzip dùng để nén dữ liệu và Zip làm được cả 2 công việc trên. Trong bài viết này VNCoder sẽ hướng dẫn bạn các lệnh nén và giải nén với 3 loại định dạng trên cùng với rar và 7z


I. Zip

Zip là một định dạng tệp lưu trữ hỗ trợ đóng gói tệp tin và thư mục mà không làm mất mắt dữ liệu sử dụng một số thuật toán nén trong đó DEFLATE là chủ yếu. Zip được sử dụng rộng rãi nhất hiện nay bởi tất cả các hệ điều hành, là trình đóng gói và nén dữ liệu phổ biến nhất với người dùng

Kiểm tra xem zip đã được cài đặt hay chưa

Trên Centos / Fedora / RHEL  

# rpm -q zip
package zip is not installed
hoặc
Package zip-3.0-1.el6_7.1.x86_64 already installed and latest version

Trên Ubuntu / Debian / Linux Mint 

# dpkg -s zip

Tiến hành cài đặt Zip nếu chưa có

Trên Centos / Fedora / RHEL  

# yum install zip -y
Installed:
zip.x86_64 0:3.0-1.el6_7.1

Trên Ubuntu / Debian / Linux Mint 

sudo apt-get install zip
sudo apt-get install unzip

1. Tạo file nén .zip

Nén một hoặc nhiều file 

# zip filename.zip filename1 filename2

Trong đó, filename.zip là file zip sẽ được tạo từ việc nén filename1 và filename2

Nén folder thành 1 file zip

Sử dụng tùy chọn -r để zip nén toàn bộ folder và các file bên trong.

# zip -r test.zip folder1

Tạo file nén ở chế độ yên lặng

Sử dụng tùy chọn -q để tạo file nén ở chế độ yên lặng – quiet, không hiển thị thông tin gì trong quá trình nén.

# zip -rq test.zip folder

2. Giải nén file .zip

# unzip filename.zip

Khi đó, file trong filename.zip sẽ được giải nén vào thư mục hiện tại, file nén vẫn giữ nguyên
Nếu file đó còn tồn tại ở thư mục giải nén, chương trình sẽ hỏi bạn về các tùy chọn thay thế

[y]es, [n]o, [A]ll, [N]one, [r]ename

Giải nén ở chế độ yên lặng

Sử dụng tùy chọn -q để giải nén ở chế độ yên lặng – quiet, không hiển thị thông tin gì trong quá trình giải nén.

# unzip -q test.zip

II. Gzip

GZIP được dùng khá phổ biến trong nền tảng Unix/Linux. GZIP chỉ có thể làm việc trên 1 tập tin hoặc 1 dòng dữ liệu, do đó không thể lưu trữ được nhiều tập tin. Vì vậy, nếu muốn sử dụng cho nhiều tập tin thì chúng ta phải sử dụng TAR đóng gói chúng lại trước.

1. Tạo file nén Gzip

# gzip filename
Khi đó, file gốc tự đổng chuyển đổi thành file nén. Ví dụ # gzip test.php sẽ chuyển đổi test.php thành test.php.gz

Thiết lập mức độ nén

Mức độ nén được tùy chỉnh trong khoảng từ 1 đến 9. Trong đó, 1 ~ fast nén nhanh nhất nhưng mức độ nén thấp nhất còn 9 ~ best mức độ nén cao nhất nhưng nén chậm nhất

# gzip --fast filename hoặc # gzip -1 filename
# gzip --best filename hoặc # gzip -9 filename

Kiểm tra thuộc tính file nén

# gzip -l filename.gz

Ví dụ

# gzip -l data.tar.gz
         compressed        uncompressed  ratio uncompressed_name
           23724096            64901120  63.4% data.tar

2. Giải nén file Gzip

# gzip -d filename

Khi đó, file nén tự động chuyển đổi thành file gốc. Ví dụ, # gzip -d test.php.gz sẽ chuyển đổi test.php.gz thành test.php

III. Tar

Tar giúp đóng gói các files/thư mục vào trong 1 file, giúp ích rất nhiều cho việc sao lưu dữ liệu. Thông thường, Tar file có đuôi .tar. Để giảm tối đa kích thước tập tin, chúng ta cần thêm các tùy chọn nén gzip hoặc bunzip2. Tổng hợp các tùy chọn bao gồm

c: Tạo file lưu trữ.
x: Giải nén file lưu trữ.
z: Nén với gzip – Luôn có khi làm việc với tập tin gzip (.gz).
j: Nén với bunzip2 – Luôn có khi làm việc với tập tin bunzip2 (.bz2).
lzma: Nén với lzma – Luôn có khi làm việc với tập tin LZMA (.lzma).
f: Chỉ đến file lưu trữ sẽ tạo – Luôn có khi làm việc với file lưu trữ.
v: Hiển thị những tập tin đang làm việc lên màn hình.
r: Thêm tập tin vào file đã lưu trữ.
u: Cập nhật file đã có trong file lưu trữ.
t: Liệt kê những file đang có trong file lưu trữ.
delete: Xóa file đã có trong file lưu trữ.
totals: Hiện thỉ thông số file tar
exclude: loại bỏ file theo yêu cầu trong quá trình nén

1. Tạo fie nén .tar

# tar -cvf filename.tar file1 file2 folder1 folder2

Filename.tar là tên file tar bạn sẽ tạo ra. File1, folder1… là các file, thư mục bạn muốn đóng gói trong file tar (đóng gói theo đúng thứ tự liệt kê).

Ví dụ, bạn đang làm việc tại /usr, cần đóng gói folder /usr/bin, folder /boot/grub và file /boot/abc.img

# tar -cvf filename.tar bin /boot/grub /boot/abc.img

File được lưu trữ có thể ở dạng filename (abc.img) hoặc ở dạng file kèm đường dẫn (boot/abc.img). Khi đó, trong quá trình bung dữ liệu, file sẽ được đặt ở đúng đường dẫn đã lưu.

Đóng gói và nén dữ liệu

Tar thông thường chỉ giúp đóng gói dữ liệu. Để nén dữ liệu giảm thiểu dung lượng, bạn dùng cần các tùy chọn nén z cho gzip (định dạng .gz) hoặc j cho bunzip (định dạng .bz2)

# tar -czvf filename.tar.gz file1 file2 folder1 folder2
hoặc
# tar -cjvf filename.tar.bz2 file1 file2 folder1 folder2

Lưu trữ bỏ qua các tập tin theo yêu cầu

Trong quá trình đóng gói và lưu trữ dữ liệu, có thể loại bỏ các tập tin theo yêu cầu bằng cách sử dụng tùy chọn exclude.

Ví dụ, loại bỏ các file .pyc khỏi việc đóng gói dữ liệu thư mục /usr/lib/python2.6/site-packages

# tar -cvf filename.tar /usr/lib/python2.6/site-packages --exclude='*.pyc'

Hiển thị tổng dung lượng đã được lưu trữ

Sử dụng tùy chọn totals giúp hiển thị tổng dung lượng đã được lưu trữ

# tar -cvf filename.tar file1 folder1 --totals
Total bytes written: 20561920 (20MiB, 354MiB/s)

2. Làm việc với file .tar

Liệt kê nội dung bên trong file lưu trữ

Để xem nội dung bên trong 1 file tar, sử dụng tùy chọn v để cho ra các thông tin chi tiết trên màn hình bao gồm permission, owner, date/time…

# tar -tvf filename.tar

Thêm mới, cập nhập nội dung vào file lưu trữ

Sử dụng tùy chọn r để thêm nội dung vào file lưu trữ

# tar -rvf filename.tar add_file1 add_file2

Để cập nhập dữ liệu vào file lưu trữ đã có, sử dụng tùy chọn u (đặc biệt cần trong việc update các file backup)

# tar -uf filename.tar

Câu lệnh trên sẽ so sánh thời gian sửa đổi của nội dung bên ngoài và bên trong của file lưu trữ. File bên trong sẽ được cập nhật nếu tập tin bên ngoài mới hơn.

Xóa dữ liệu trong file lưu trữ

Sử dụng tùy chọn delete để xóa nội dung theo yêu cầu trong file lưu trữ

# tar -f filename.tar --delete file1 file2

3. Giải nén file .tar

# tar -xvf filename.tar

Câu lệnh trên sẽ không xóa file .tar mà sẽ chỉ giải nén dữ liệu bên trong file tar vào thư mục hiện tại. Trong trường hợp file được lưu có kèm đường dẫn, nếu đường dẫn đó không tồn tại, hệ thống sẽ tự tạo thư mục tương ứng để đặt file. Tùy theo cách bạn đóng gói dữ liệu mà khi bung ra vị trí file có thể thay đổi

Ví dụ, bạn đang làm việc tại /boot/grub và muốn đóng gói file 1.map tại thư mục đó.

  • Nếu bạn đóng gói 1.map, khi giải nén đường dẫn file sẽ là /boot/grub/1.map
  • Nếu bạn đóng gói /boot/grub/1.map, khi giải nén đường dẫn file sẽ là /boot/grub/boot/grub/1.map

Bung file nén

Đối với các file nén gzip .tar.gz bạn cần sử dụng thêm tùy chọn z (với file nén gzip) hay tùy chọn j (với file nén bunzip)

# tar -xzvf filename.tar.gz
# tar -xjvf filename.tar.bz2

Bung một vài file/thư mục cụ thể

# tar -xvf filename.tar file1 file2

Bung vào 1 thư mục khác

Để bung dữ liệu vào nơi khác thư mục hiện tại, bạn cần chỉ rõ đường dẫn của thư mục đích với tùy chọn -C

# tar -xvf filename.tar -C /directory

Ví dụ, # tar -xvf test.tar -C /boot/efi thì toàn bộ file của test.tar sẽ được bung ra trong thư mục /boot/efi

IV. Rar

RAR là định dạng file nén độc quyền được phát triển bởi Eugene Roshal. Lệnh được sử dụng để nén và giải nén file RAR là rar và unrar. Mặc định lệnh Unrar không được cài đặt trên Linux, FreeBSD và UNIX. Vì vậy bạn có thể cài đặt lệnh Unrar bằng cách sử dụng lệnh apt-get hoặc yum.

Trên Ubuntu / Debian / Linux Mint  

sudo apt-get install rar unrar -y

Trên Centos / Fedora / RHEL 

# yum install rar unrar -y

Thao tác với file rar

Nén file thư mục

# rar a fileName.rar File_1 File_2 Dir_1 Dir_2

Update thêm một file 

# rar u fileName.rar fileName

Giải nén file rar 

Để giải nén trong thư mục hiện tại

# unrar e file.rar

Sử dụng lệnh dưới đây để liệt kê tất cả các file trong file RAR:

# unrar l file.rar

Để giải nén các file với đường dẫn đầy đủ, bạn sử dụng lệnh dưới đây:

# unrar x file.rar

Để kiểm tra tính toàn vẹn của file RAR bạn sử dụng lệnh dưới đây:

# unrar t file.rar

V. 7-Zip

Ngoài định dạng 7z, công cụ 7 ZIP còn hỗ trợ nén các định dạng file khác như XZ, BZIP2, GZIP, TAR, ZIP và WIM. Bên cạnh đó người dùng có thể sử dụng công cụ để giải nén các file như AR, ARJ, CAB, CHM, CPIO, CramFS, DMG, EXT, FAT, GPT, HFS, IHEX, ISO, LZH, LZMA, MBR, MSI, NSIS, NTFS, QCOW2, RAR, RPM, SquashFS, UDF, UEFI, VDI, VHD, VMDK, WIM, XAR và Z.

1. Cài đặt 7zip

Trên Centos / Fedora / RHEL  

sudo yum install epel-release
sudo yum install p7zip

Trên Ubuntu / Debian / Linux Mint 

sudo apt-get install p7zip-full p7zip-rar

2. Sử dụng 7zip

Gói p7zip cài đặt tiện ích dòng lệnh có tên 7z. Dưới đây là cú pháp:

7z [adeltux] [-] [SWITCH] ...

Tạo file nén 7-zip

# 7z a [zipfile-name] [files-to-be-zipped]

Để thêm một file vào file nén bạn sử dụng tùy chọn "u" trong lệnh 7zip:

# 7z u fileName.7z file1

Để xoá một file ta dùng tuỳ chọn "d"

# 7z d fileName.7z file1

Để giải nén một file 7z ta sử dụng tuỳ chọn "e"

# 7z e files.7z

Lưu ý quan trọng

Dưới đây là một số lưu ý quan trọng mà bạn cần nhớ khi sử dụng tiện ích 7z:

- Không sử dụng định dạng 7-zip để sao lưu trên Linux / Unix vì 7-zip không lưu trữ người dùng / nhóm của file.

- Trên Linux / Unix, để sao lưu các thư mục, bạn phải sử dụng lệnh tar:

+ Để sao lưu một thư mục, sử dụng lệnh tar cf - directory | 7za a -si directory.tar.7z

+ Để khôi phục bản sao lưu sử dụng lệnh: 7za x -so directory.tar.7z | tar xf -

- Nếu muốn gửi file và thư mục (không phải chủ sở hữu file) cho người dùng Unix / MacOS / Windows khác, bạn có thể sử dụng định dạng 7-zip.

- Không nên sử dụng tùy chọn "r".

- Không sử dụng thư mục/* vì các file ".*" không khớp với "thư mục/.profile").

Tổng kết

Như vậy là mình đã hướng dẫn các bạn cách nén và giải nén chi tiết sử dụng các công cụ zip, gzip, tar, rar, 7-zip. Cảm ơn các bạn đã đọc bài viết này

Theo: hocvps
vncoder logo

Theo dõi VnCoder trên Facebook, để cập nhật những bài viết, tin tức và khoá học mới nhất!



Khóa học liên quan

Khóa học: Linux/Server