12 để trong dấu ngoặc vì chúng ta biết rằng trong Linux không có khái niệm phần mở rộng tập tin.
4.7.1 Chương trình tar
Những người dùng đã quen với những chương trình nén dạng winzip (đưa tất cả tập tin vào một “kho” rồi sau đó nén chúng) thì có thể sẽ hỏi “Tại sao lại cần hai chương trình?”. Chúng ta sẽ tìm thấy câu trả lời cho câu hỏi này sau khi đọc xong hai phần tới đây, và sẽ thấy đây không phải là một yếu điểm của Linux mà còn là điểm mạnh nếu biết cách kết hợp “nhịp nhàng” hai chương trình này.
Tên chương trình tar có nghĩa là tape archiver, tức là chương trình này không nén các dữ liệu mà chỉ kết hợp chúng vào một tập tin chung sau đó ghi tập tin này lên cách băng nhớ (tape) thường dùng để lưu trữ thông tin. Nếu muốn tạo tập tin này trên đĩa cứng, thì cần sử dụng lệnhtarvới tùy chọnf, sau đó chỉ ra tên tập tin. Chương trìnhtarcó 8 tùy chọn khác với những tùy chọn còn lại ở chỗ khi chạy lệnhtarthì cần phải đưa ra một trong số 8 tùy chọn này. Tám tùy chọn này xác định các chức năng chính của chương trình (xem bảng4.5).
Bảng 4.5: Những tùy chọn chính củatar
Tùy chọn Ý nghĩa
-A, --catenate, --concatenate Thêm tập tin vào kho đã có.
-c, --create Tạo kho mới.
-d, --diff, --compare Tìm sự khác nhau giữa các tập tin trong kho và trên hệ thống tập tin (so sánh).
--delete Xóa tập tin khỏi kho (không dùng cho băng ghi).
-r, --append Thêm tập tin vào cuối kho.
-t, --list Đưa ra danh sách các tập tin trong kho.
-u, --update Chỉ thêm những tập tin mới hơn bản sao trong kho (cập nhật kho).
-x, --extract, --get Lấy tập tin ra khỏi kho (“giải phóng”). Nếu bạn làm việc với các tập tin kho trên đĩa chứ không phải với băng ghi (đây là đa số trường hợp sử dụng máy tính cá nhân), thì nhất định phải dùng
tùy chọn f. Những tùy chọn khác (trừ 8 tùy chọn bắt buộc kể trên) là không cần thiết, chúng chỉ dùng để thêm vào các chức năng phụ cụ thể nào đó. Ví dụ, tùy chọnvbắt buộc chương trình phải đưa ra danh sách các tập tin đưa vào kho.
Có thể liệt kê các tuỳ chọn một chữ cái (c, f, . . . ) liền nhau và dấu gạch ngang (–) ở phía trước có thể dùng nhưng không nhất thiết phải có. Chúng ta sẽ thấy ở ví dụ tới đây. Tôi sẽ không đưa ra mô tả tất cả các tùy chọn của lệnhtar, mà chỉ cho biết một số dòng lệnh cần thiết nhất để làm việc với các kho tập tin. Như vậy sẽ có ích hơn trong thời gian này.
Để tạo một kho tập tin tar từ vài tập tin cần sử dụng một trong hai lệnh sau:
[user]$ tar -cf tên_kho tập_tin1 tập_tin2 [user]$ tar cf tên_kho tập_tin1 tập_tin2
trong đó tùy chọn c(từ bây giờ tôi sẽ bỏ đi dấu gạch ngang “–” ở phía trước tuỳ chọn) cho biết chương trình cần tạo ra (create) kho tập tin, còn tuỳ chọn f cho biết là kho này phải được tạo ở dạng tập tin có têntên_khoở phía sau tùy chọn. Trong phần tên tập tin muốn lưu vào kho có thể sử dụng các “mẫu tên”, bao gồm cả các ký tự thay thế đơn giản như “*” và “?”. Nhờ vào tính năng này có thể lưu vào kho ngay lập tức nhiều tập tin bằng một câu lệnh rất ngắn. Ví dụ, để tạo ra kho chứa tất cả các tập tin của một thư mục con của thư mục hiện thời, giả sử
projects, thì chỉ cần gọi lệnh:
[user]$ tar cf projects.tar projects/*
hoặc thậm chí còn đơn giản hơn:
[user]$ tar cf projects.tar projects
Câu lệnh này sẽ tạo ra khoprojects.tartrong thư mục hiện thời. Kho này không chỉ lưu tất cả những tập tin có trong thư mục projects mà còn lưu tất cả những thư mục con của nó cùng với tất cả những tập tin nằm trong chúng (chúng ta dùng thuật ngữ “lưu đệ quy”, hoặc “lưu toàn bộ cấu trúc thư mục”). Trong tập tin kho cấu trúc thư mục củaprojectsvẫn được giữ nguyên.
Cần chú ý là trong ví dụ trên nếu ở chỗ “*” đặt “*.*” thì sẽ chỉ lưu những tập tin nằm trực tiếp trong thư mục projectsvà những thư mục con có dấu chấm trong tên (ít gặp), những thư mục con còn lại của projectssẽ không được lưu. Cũng trong ví dụ này nếu không chỉ ra tên thư mục thì sẽ lưu tất cả các tập tin và thư mục con của thư mục hiện thời. Nếu chạy lệnh sau:
[user]$ tar cvf tên_kho ./.*
thì không chỉ lưu tất cả các tập tin và thư mục con của thư mục hiện thời, mà còn lưu những tập tin của thư mục mẹ.
Bây giờ bạn đọc đã biết cách tạo kho tập tin. Để lấy (giải phóng) tất cả tập tin ra khỏi kho, cần dùng lệnh:
[user]$ tar xvf tên_kho
4.7 Các câu lệnh lưu trữ và nén tập tin 91
[user]$ tar tvf tên_kho | less
Giải phóng một tập tin nào đó bằng:
[user]$ tar xvf tên_kho tên_tập_tin
Chương trình tar là phương tiện thuận lợi để tạo các bản sao lưu trữ (sao lưu) của tập tin. Tất nhiên còn có những tiện ích sao lưu chuyên dùng khác, nhưng cả khi bạn đọc không biết những tiện ích này, thì vẫn có thể sao lưu dữ liệu quý báu của mình lên đĩa mềm bằng:
[user]$ tar Mcvf /dev/fd0 thư_mục
rồi phục hồi thư mục bằng lệnh:
[user]$ tar Mxpvf /dev/fd0
Hoặc đơn giản hơn, tạo một tập tin kho chứa:
[user]$ tar cvf tên_kho thư_mục
rồi sao chép tập tin tên_kho lên một thiết bị lưu tháo rời hoặc thư mục trên mạng nào đó (CD, DVD, flash, ftp,. . . ). Phục hồi lại bằng lệnh:
[user]$ tar xpvf tên_kho
Nếu có khó khăn khi sử dụng lệnhtar, hãy đọc trợ giúp man của nó hoặc đọc những thông tin hiện ra khi chạytarvới tùy chọn--help