4 Làm quen với hệ thống tập tin ext3fs
4.7.3 Chương trình bzip2
Trong thời gian gần đây người dùng Linux thường sử dụng thêm một chương trình nén nữa để thay thế cho gzip – chương trình bzip2. Chương trình này nén mạnh hơn (có mức độ nén cao hơn, tạo ra các tập tin nhỏ hơn) và làm việc nhanh hơn. Các bản phân phối Linux mới đã có cài đặt sẵn chương trình này.
Chương trìnhbzip2làm việc tương tự nhưgzip, tức là thay thế mỗi tập tin đưa vào dòng lệnh bằng phiên bản đã nén của tập tin đó, nhưng thêm vào phần cuối là.bz2. Tập tin nén có thời gian sửa đổi, quyền truy cập và có thể cả chủ sở hữu như tập tin ban đầu. Do đó có khả năng phục hồi những tính chất này của tập tin khi giải nén.
Trong một số trường hợp tập tin nén có thể còn lớn hơn theo kích thước so với tập tin ban đầu. Điều này có thể xảy ra đối với những tập tin có kích thước nhỏ hơn 100 byte, vì cơ chế nén sử dụng phần đầu (head) có kích thước 50 byte. Những tập tin gồm một chuỗi ngẫu nhiên (random) của các ký tự, trong đó có các tập tin nén, thì kích thước của tập tin tăng lên khoảng 0,5%.
Câu lệnh bunzip2 hoặc bzip2 –d giải nén tập tin chỉ ra. Nếu tập tin này không phải do bzip2 tạo ra thì chương trình sẽ không giải nén mà đưa ra lời cảnh báo. Khi giải nénbzip2sẽ đoán tên của tập tin sẽ tạo ra theo quy luật sau:
tên_tập_tin.bz2 thay thế bằngtên_tập_tin tên_tập_tin.bzthay thế bằngtên_tập_tin
4.7 Các câu lệnh lưu trữ và nén tập tin 93
tên_tập_tin.tbz2 thay thế bằngtên_tập_tin.tar tên_tập_tin.tbz thay thế bằngtên_tập_tin.tar tên_tập_tin khác thay thế bằngtên_tập_tin.out. Ví dụ:
teppi82@ThinhQuyen:~> bzip2 2
teppi82@ThinhQuyen:~> mv 2.bz2 2.sj teppi82@ThinhQuyen:~> bunzip2 2.sj
bunzip2: Can’t guess original name for 2.sj -- using 2.sj.out
Các tuỳ chọn của bzip2rất giống với tùy chọn của gzip nhưng không phải tất cả. Tôi sẽ đưa ra một danh sách ngắn những tùy chọn cần thiết nhất trong bảng4.7.
Bảng 4.7: Những tùy chọn chính của chương trìnhbzip2
Tùy chọn Ý nghĩa
-d, --decompress Bắt buộc giải nén tập tin. Tùy chọn này cần thiết vì trên thực tếbzip2,bunzip2vàbzcatchỉ là một chương trình. Mỗi chương trình tuỳ theo “phần mở rộng” tập tin mà quyết định xem sẽ làm gì với tập tin đó. Tùy chọn-dbỏ đi cơ chế này và bắt buộc chương trình phải giải nén tập tin đã chỉ ra.
-z, --compress Bắt buộc nén tập tin (xem ở trên).
-t, --test Thử (kiểm tra) tính nguyên vẹn của tập tin nén.
-f, --force Ghi chèn lên tập tin đã có. Theo mặc địnhbzip2 không ghi chèn lên tập tin đã có trên đĩa. Nếu muốn ghi chèn thì hãy dùng tùy chọn này.
-k, --keep Giữ gìn (không xóa) tập tin ban đầu khi nén hoặc giải nén.
-s, --small Giảm yêu cầu đối với dung lượng bộ nhớ cần sử dụng bằng cách giảm tốc độ nén. Chỉ nên dùng tùy chọn này trên những máy tính cũ có ít bộ nhớ (8MB hoặc ít hơn). Có lẽ chúng ta không bao giờ cần đến tùy chọn này hoặc ít nhất là hy vọng như vậy.
-q, --quiet Bỏ đi những cảnh báo ít ý nghĩa.
-v, --verbose Đưa ra các thông báo phụ trong khi làm việc (chỉ có ý nghĩa chuẩn đoán).
–L, —-license, –V, —-version
Hiển thị số phiên bản và bản quyền của chương trình.
Tham số đứng sau hai dấu gạch ngang (--) và một khoảng trắng được coi là tên tập tin, dù tham số có một dấu gạch ngang ở đầu. Ví dụ:
[user]$ bzip2 -- -tên_tập_tin
Bây giờ đã đến lúc chúng ta học cách kết hợp tar với hai câu lệnh gzip và