11 ví dụ Gzip đơn giản

Tác giả sysadmin, T.Một 02, 2023, 02:09:41 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 2 Khách đang xem chủ đề.

11 ví dụ Gzip đơn giản


Gzip được sử dụng để nén một tệp nhằm giảm dung lượng ổ đĩa, nó khá phổ biến trong các hệ điều hành Linux và UNIX vì lý do này. Gzip đã xuất hiện từ tháng 5 năm 1996 và vẫn được sử dụng rộng rãi cho đến ngày nay.

Chúng tôi sẽ giới thiệu 11 ví dụ về gzip ở đây, cho bạn thấy các tác vụ thông thường có thể hoàn thành và mức độ dễ sử dụng của nó.

Trước khi bắt đầu, bạn cần cài đặt gói gzip, gói này thường đã được cài đặt sẵn theo mặc định, tuy nhiên bạn có thể cài đặt ngay bây giờ nếu cần.

RHEL:

Mã nguồn [Chọn]
yum install gzip
Debian:

Mã nguồn [Chọn]
apt-get install gzip
1. Nén một tệp

Thao tác này sẽ nén tệp.txt và tạo tệp.txt.gz, lưu ý rằng thao tác này sẽ xóa tệp file.txt gốc.

Mã nguồn [Chọn]
gzip file.txt
2. Nén nhiều tệp cùng một lúc

Điều này sẽ nén tất cả các tệp được chỉ định trong lệnh, lưu ý một lần nữa rằng điều này sẽ xóa các tệp gốc được chỉ định bằng cách chuyển tệp1.txt, tệp2.txt và tệp3.txt thành tệp1.txt.gz, tệp2.txt.gz và file3.txt.gz

Mã nguồn [Chọn]
gzip file1.txt file2.txt file3.txt
Thay vào đó, để nén tất cả các tệp trong một thư mục, hãy xem ví dụ 8 bên dưới.

3. Nén một tệp duy nhất và giữ nguyên bản gốc

Thay vào đó, bạn có thể giữ nguyên tệp gốc và tạo một bản sao nén.

Mã nguồn [Chọn]
gzip -c file.txt > file.txt.gz
Cờ -c xuất bản sao nén của file.txt sang thiết bị xuất chuẩn, sau đó bản sao này được gửi đến file.txt.gz, giữ nguyên tệp file.txt gốc. Các phiên bản mới hơn của gzip cũng có thể có sẵn -k hoặc –keep, có thể được sử dụng thay thế bằng "gzip -k file.txt".

4. Nén đệ quy

Tất cả các tệp Tất cả các tệp trong thư mục và tất cả các thư mục con có thể được nén đệ quy bằng cờ -r

Mã nguồn [Chọn]
[root@centos test]# ls -laR
.:
drwxr-xr-x.  2 root root   24 Jul 28 18:05 example
-rw-r--r--.  1 root root    8 Jul 28 17:09 file1.txt
-rw-r--r--.  1 root root    3 Jul 28 17:54 file2.txt
-rw-r--r--.  1 root root    5 Jul 28 17:54 file3.txt

./example:
-rw-r--r--. 1 root root  5 Jul 28 18:00 example.txt

[root@centos test]# gzip -r *
[root@centos test]# ls -laR
.:
drwxr-xr-x.  2 root root   27 Jul 28 18:07 example
-rw-r--r--.  1 root root   38 Jul 28 17:09 file1.txt.gz
-rw-r--r--.  1 root root   33 Jul 28 17:54 file2.txt.gz
-rw-r--r--.  1 root root   35 Jul 28 17:54 file3.txt.gz

./example:
-rw-r--r--. 1 root root 37 Jul 28 18:00 example.txt.gz

Trong ví dụ trên có 3 tệp.txt trong thư mục kiểm tra là thư mục làm việc hiện tại của chúng tôi, ngoài ra còn có một thư mục con ví dụ chứa example.txt. Khi chạy gzip với cờ -r trên mọi thứ, tất cả các tệp được nén theo cách đệ quy.

Điều này có thể được đảo ngược bằng cách chạy "gzip -dr *", trong đó -d được sử dụng để giải nén và -r thực hiện điều này trên tất cả các tệp theo cách đệ quy.

5. Giải nén tệp nén gzip

Để đảo ngược quá trình nén và lấy lại tệp gốc mà bạn đã nén, bạn có thể sử dụng chính lệnh gzip hoặc gunzip cũng là một phần của gói gzip.

Mã nguồn [Chọn]
gzip -d file.txt.gz
Hoặc,

Mã nguồn [Chọn]
gunzip file.txt.gz
Cả 2 lệnh này đều cho ra cùng một kết quả là giải nén file.txt.gz thành file.txt, loại bỏ file nén file.txt.gz.

Tương tự như ví dụ 3, có thể giải nén một file và giữ nguyên file.gz như bên dưới.

Mã nguồn [Chọn]
gunzip -c file.txt.gz > file.txt
Như đã đề cập trong bước 4, -d có thể được kết hợp với -r để giải nén tất cả các tệp theo cách đệ quy.

6. Liệt kê thông tin nén

Với cờ -l hoặc --list, chúng ta có thể thấy thông tin hữu ích liên quan đến tệp.gz được nén, chẳng hạn như kích thước nén và không nén của tệp cũng như tỷ lệ nén, cho chúng ta biết dung lượng nén của chúng ta là bao nhiêu đang tiết kiệm.

Mã nguồn [Chọn]
[root@centos ~]# gzip -l linux-3.18.19.tar.gz
         compressed        uncompressed  ratio uncompressed_name
          126117045           580761600  78.3% linux-3.18.19.tar

[root@centos ~]# ls -lah
-rw-r--r--.  1 root root 554M Jul 28 17:24 linux-3.18.19.tar
-rw-r--r--.  1 root root 121M Jul 28 17:25 linux-3.18.19.tar.gz

Trong ví dụ này, một bản sao gzip của nhân Linux đã nén tới 78,3% kích thước ban đầu, chiếm 121 MB dung lượng thay vì 554 MB.

7. Điều chỉnh mức độ nén

Mức độ nén được áp dụng cho tệp sử dụng gzip có thể được chỉ định bằng giá trị từ 1 (nén ít hơn) đến 9 (nén tốt nhất). Sử dụng tùy chọn 1 sẽ hoàn thành nhanh hơn nhưng dung lượng lưu được từ quá trình nén sẽ không tối ưu. Sử dụng tùy chọn 9 sẽ mất nhiều thời gian hơn để hoàn thành, tuy nhiên, bạn sẽ tiết kiệm được dung lượng lớn nhất.

Ví dụ dưới đây so sánh sự khác biệt giữa -1 và -9, như được hiển thị trong khi -1 hoàn thành nhanh hơn nhiều, nó nén ít hơn khoảng 5% (cần thêm khoảng 30mb dung lượng).

Mã nguồn [Chọn]
[root@centos ~]# time gzip -1 linux-3.18.19.tar

real    0m13.602s
user    0m12.908s
sys     0m0.662s
[root@mirror1 ~]# gzip -l linux-3.18.19.tar.gz
         compressed        uncompressed  ratio uncompressed_name
          156001021           580761600  73.1% linux-3.18.19.tar

[root@centos ~]# time gzip -9 linux-3.18.19.tar

real    0m58.129s
user    0m57.193s
sys     0m0.735s
[root@centos ~]# gzip -l linux-3.18.19.tar.gz
         compressed        uncompressed  ratio uncompressed_name
          125064095           580761600  78.5% linux-3.18.19.tar

-1 cũng có thể được chỉ định bằng cờ --fast, trong khi tùy chọn -9 cũng có thể được chỉ định bằng cờ --best. Theo mặc định, gzip sử dụng mức nén -6, hơi thiên về mức nén cao hơn do tốc độ giảm. Khi chọn một giá trị trong khoảng từ 1 đến 9, điều quan trọng là phải xem xét điều gì quan trọng hơn đối với bạn, lượng dung lượng lưu được hoặc lượng thời gian dành cho việc nén, tùy chọn -6 mặc định mang lại sự đánh đổi hợp lý.

8. Nén một thư mục

Với sự trợ giúp của lệnh tar, chúng ta có thể tạo một tệp tar của toàn bộ thư mục và gzip kết quả. Chúng ta có thể thực hiện toàn bộ trong một bước, vì lệnh tar cho phép chúng ta chỉ định phương pháp nén sẽ sử dụng.

Mã nguồn [Chọn]
tar czvf etc.tar.gz /etc/
Ví dụ này tạo một tệp nén etc.tar.gz của toàn bộ thư mục /etc/. Các cờ tar như sau, 'c' tạo một kho lưu trữ tar mới, 'z' chỉ định rằng chúng tôi muốn nén bằng gzip, 'v' cung cấp thông tin chi tiết và 'f' chỉ định tệp sẽ tạo. Tệp etc.tar.gz thu được chứa tất cả các tệp trong /etc/ được nén bằng gzip.

9. Kiểm tra tính toàn vẹn

Cờ -t hoặc --test có thể được sử dụng để kiểm tra tính toàn vẹn của tệp nén.

Trên một tệp bình thường, kết quả sẽ được liệt kê là OK, được hiển thị bên dưới.

Mã nguồn [Chọn]
[root@centos test]# gzip -tv file1.txt.gz
file1.txt.gz:    OK

Bây giờ tôi đã sửa đổi tệp này theo cách thủ công bằng trình soạn thảo văn bản và thêm một giá trị ngẫu nhiên, về cơ bản gây ra tham nhũng và nó hiện không còn hợp lệ.

Mã nguồn [Chọn]
[root@centos test]# gzip -tv file1.txt.gz
file1.txt.gz:
gzip: file1.txt.gz: invalid compressed data--crc error
gzip: file1.txt.gz: invalid compressed data--length error

Tệp.gz được nén sử dụng kiểm tra dự phòng theo chu kỳ (CRC) để phát hiện lỗi. Có thể xem giá trị CRC bằng cách chạy gzip với cờ -l và -v, như minh họa bên dưới.

Mã nguồn [Chọn]
[root@centos test]# gzip -lv file1.txt.gz
method  crc     date  time           compressed        uncompressed  ratio uncompressed_name
defla 08db5c50 Jul 28 18:15                  40           167772160 100.0% file1.txt

10. Nối nhiều tệp

Có thể nối nhiều tệp thành một tệp.gz duy nhất.

Mã nguồn [Chọn]
gzip -c file1.txt > files.gz
gzip -c file2.txt >> files.gz

Files.gz hiện chứa nội dung của cả file1.txt và file2.txt, nếu bạn giải nén files.gz, bạn sẽ nhận được một tệp có tên 'files' chứa nội dung của cả hai tệp.txt. Đầu ra tương tự như chạy 'cat file1.txt file2.txt'. Thay vào đó, nếu bạn muốn tạo một tệp duy nhất chứa nhiều tệp, bạn có thể sử dụng lệnh tar hỗ trợ nén gzip, như đã đề cập ở trên trong ví dụ 8.

11. Các lệnh bổ sung có trong gzip

Gói gzip cung cấp một số lệnh rất hữu ích để làm việc với các tệp nén, chẳng hạn như zcat, zgrep và zless/zmore.

Như bạn có thể biết qua tên của các lệnh, đây thực chất là các lệnh cat, grep và less/more, tuy nhiên chúng hoạt động trực tiếp trên dữ liệu nén. Điều này có nghĩa là bạn có thể dễ dàng xem hoặc tìm kiếm nội dung của tệp nén mà không cần phải giải nén rồi xem hoặc tìm kiếm trong bước thứ hai.

Mã nguồn [Chọn]
[root@centos test]# zcat test.txt.gz
test
example
text
[root@centos test]# zgrep exa test.txt.gz
example

Điều này đặc biệt hữu ích khi tìm kiếm hoặc xem lại các tệp nhật ký đã được nén trong quá trình xoay vòng nhật ký.

Như đã trình bày, gói gzip có thể được sử dụng theo một số cách hữu ích để nén dữ liệu và tiết kiệm dung lượng ổ đĩa. Để biết thêm thông tin về gzip, bạn có thể tham khảo trang hướng dẫn sử dụng gzip hoặc để lại nhận xét bên dưới!