
Thực hành tổng hợp Linux Essentials: dữ liệu, script và quyền
Thực hành Linux với ticket giả lập: tạo script đếm, kiểm tra lỗi, giới hạn dữ liệu, phục hồi TAR và xác minh báo cáo HTTP loopback bằng so sánh byte.

Phân biệt archive, nén và sao lưu trên Linux; tạo TAR, gzip, ZIP trong lab, xem danh sách, giải nén vào đích riêng và so nội dung sau phục hồi.
Bạn có một thư mục chứa nhiều báo cáo cần chuyển sang máy khác. Gom chúng vào một archive giúp giữ cấu trúc trong một đơn vị thuận tiện; nén có thể giảm lượng byte cần truyền. Nhưng một tệp archive được tạo thành công chưa chứng minh nó là bản sao lưu có thể phục hồi đầy đủ. Phải xem đã lấy đúng dữ liệu chưa và khôi phục có đạt yêu cầu không.
Bài thuộc mục tiêu 3.1 của Linux Essentials 010-160, liên hệ 013.1 của 010-200. Mốc biên tập: 23/10/2026. Lab dùng GNU tar, gzip và công cụ ZIP trong Ubuntu 26.04 LTS, với dữ liệu giả lập trong thư mục tạm. Bạn sẽ tạo, liệt kê và giải nén vào đích riêng, rồi so sánh nội dung. Không sử dụng archive lạ hoặc thư mục hệ thống làm dữ liệu học tập.
Archive là cách đóng nhiều mục dữ liệu cùng thông tin liên quan thành một định dạng. TAR thường được dùng cho cây tệp trên hệ Unix/Linux. Một tệp .tar không bắt buộc đã được nén. Compression mã hóa dữ liệu theo cách giảm kích thước khi nội dung có đặc tính phù hợp; dữ liệu vốn đã nén có thể giảm ít hoặc không giảm.
gzip, bzip2 và xz là những công cụ nén thường gặp. Chúng có định dạng và sự đánh đổi khác nhau về thời gian, bộ nhớ, mức nén và khả năng tương thích. Không nên chọn định dạng chỉ bằng giả định “đuôi này luôn nhỏ nhất”. Để chuyển một bộ dữ liệu thật, còn phải xem công cụ phía nhận và chi phí giải nén.
ZIP kết hợp khả năng đóng nhiều mục với nén theo định dạng của nó. Định dạng phổ biến không đồng nghĩa mọi công cụ giữ đầy đủ cùng loại metadata. Khi cần phục hồi quyền, owner, symlink, ACL hoặc thuộc tính filesystem, lập tiêu chí riêng và kiểm tra trên môi trường đích thay vì chỉ nhìn các tên tệp.
Tạo một thư mục mới, chứa source và restore. Hai tệp văn bản có dữ liệu tự biên soạn, không có bí mật. Archive sẽ được đặt ngoài source để tránh đưa chính archive đang tạo vào cây đầu vào. Các lệnh ghi nội dung dùng dấu >; chỉ áp dụng tại thư mục mới vì nó có thể ghi đè khi tái sử dụng ở đích tồn tại.
lpi_archive=$(mktemp -d)
mkdir -p -- "$lpi_archive/source/reports" "$lpi_archive/restore"
printf '%s\n' 'Báo cáo giả lập tháng 10' > "$lpi_archive/source/reports/month.txt"
printf '%s\n' 'Ghi chú phục hồi thử nghiệm' > "$lpi_archive/source/README.txt"
find "$lpi_archive/source" -type f -print
Bạn dự kiến thấy README.txt và reports/month.txt dưới source. Giữ biến lpi_archive trong cùng phiên. Nếu không đọc được tệp đầu vào, dừng tìm nguyên nhân trước khi tạo một archive thiếu dữ liệu. Không thêm sudo để vượt mọi lỗi quyền rồi coi bản sao đã đầy đủ.

Trong lệnh dưới, -c yêu cầu tạo archive, -f chỉ tệp archive, còn -C đổi thư mục làm việc của tar trước khi đọc đối số tiếp theo. Đối số source là cây dữ liệu được đưa vào. Việc dùng đường dẫn tương đối bên trong archive giúp bài phục hồi dễ quan sát hơn so với đóng gói cả đường dẫn thư mục tạm của máy hiện tại.
tar -cf "$lpi_archive/reports.tar" -C "$lpi_archive" source
tar -tf "$lpi_archive/reports.tar"
Lệnh -t đọc danh sách mục trong archive. Bạn cần thấy source/, README.txt và reports/month.txt theo cấu trúc đã tạo; thứ tự hiển thị không phải mục tiêu chính. Listing đúng tên là một bước kiểm tra, chưa chứng minh byte dữ liệu khôi phục đúng hoặc mọi metadata yêu cầu được giữ.
Đọc thông báo và mã thoát của tar. Nếu công cụ báo tệp đổi trong lúc đọc, không coi đó là bản chụp nhất quán của một ứng dụng đang hoạt động. Database hoặc dịch vụ ghi liên tục có thể cần cơ chế backup riêng. Ví dụ này dùng tệp văn bản tĩnh để giữ phạm vi kiểm tra rõ ràng.
GNU tar có thể gọi gzip khi dùng -z. Dòng dưới tạo một archive nén mới với tên khác bản .tar trước, sau đó liệt kê để đối chiếu cấu trúc. Đầu vào vẫn nằm nguyên trong source trong cách dùng này.
tar -czf "$lpi_archive/reports.tar.gz" -C "$lpi_archive" source
tar -tzf "$lpi_archive/reports.tar.gz"
Đừng suy từ thao tác tar này sang mọi cách gọi gzip độc lập. Một lệnh nén trực tiếp tệp có thể thay tên hoặc loại bản đầu vào theo chế độ mặc định của công cụ. Khi muốn giữ nguồn, dùng tùy chọn được tài liệu phiên bản xác nhận hoặc ghi kết quả qua stdout tới tệp mới. Luôn kiểm tra trước và sau khi áp dụng vào dữ liệu cần giữ.
Với cây văn bản rất nhỏ, phần header và metadata có thể chiếm phần đáng kể. Không dùng kích thước của ví dụ để công bố một tỷ lệ tiết kiệm cho mọi dữ liệu. Nếu cần so hiệu quả, dùng bộ dữ liệu đại diện và đo cả thời gian, bộ nhớ cùng yêu cầu của phía nhận.
Một môi trường GNU tar có thể hỗ trợ -j cho bzip2 và -J cho xz nếu chương trình nén tương ứng đã có. Trong lab, bạn chỉ thử sau khi command -v xác nhận công cụ. Không cài thêm hàng loạt gói lên máy sản xuất chỉ để chạy đủ các biến thể của một bài học.
command -v bzip2
command -v xz
tar --help
Những lệnh này quan sát khả năng môi trường. Nếu chưa có compressor, ghi thiếu dependency và tiếp tục phần gzip đã sẵn sàng. Mục tiêu là hiểu archive và compression tách được nhau. Một tệp có đuôi .xz không đủ để khẳng định nó chứa TAR; tên mở rộng chỉ là một dấu hiệu, còn nội dung và công cụ đọc mới quyết định.

Giải nén có thể tạo hoặc ghi đè tệp tại đích và tiêu thụ dung lượng. Chỉ chạy khối sau với archive do chính lab tạo và restore đang trống. Không đổi đích thành home hoặc thư mục ứng dụng để thử. Với archive không tin cậy, listing không đủ chứng minh an toàn; cần môi trường cô lập, giới hạn tài nguyên và quy trình đánh giá riêng.
tar -xzf "$lpi_archive/reports.tar.gz" -C "$lpi_archive/restore"
cmp "$lpi_archive/source/README.txt" "$lpi_archive/restore/source/README.txt"
cmp "$lpi_archive/source/reports/month.txt" "$lpi_archive/restore/source/reports/month.txt"
Trong ví dụ đạt, cmp không in khác biệt và trả mã 0 cho từng cặp. Nếu nhận mã khác không, đọc lý do: hai tệp khác nội dung hay một đường dẫn chưa có. Không coi việc đã xuất hiện thư mục restore/source là bằng chứng phục hồi hoàn chỉnh. Chúng ta kiểm tra đúng hai tệp của fixture, không suy ra metadata hoặc trạng thái ứng dụng đã được phục hồi.
GNU tar: extraction mô tả thao tác giải nén và cách chọn archive. Trong thực tế còn phải xem tùy chọn bảo toàn metadata, symlink và tên đường dẫn. Không thêm tùy chọn chấp nhận đường dẫn tuyệt đối để bỏ qua cảnh báo từ archive lạ.
Nếu lab có zip và unzip, bạn có thể tạo một tệp ZIP từ source rồi kiểm tra danh sách. Subshell trong ngoặc giúp đổi thư mục cho đúng một đoạn mà không đổi thư mục shell cha sau khi kết thúc. Tên archive vẫn nằm ngoài cây source.
(
cd -- "$lpi_archive"
zip -r reports.zip source
)
unzip -l "$lpi_archive/reports.zip"
Phía nhận cần công cụ đọc định dạng và đủ dung lượng. Kiểm tra bộ mã tên tệp hoặc ký tự đặc biệt nếu dữ liệu có yêu cầu đó. Một cách nhận archive trên desktop không chứng minh quyền Unix và owner giữ được trên filesystem đích. Với ví dụ trao đổi báo cáo, hãy nêu yêu cầu nội dung và cấu trúc trước khi yêu cầu bảo toàn mọi thuộc tính.
Muốn thử phục hồi ZIP, tạo một thư mục mới khác restore của TAR để không trộn hai kết quả. unzip sẽ ghi dữ liệu xuống đích, có thể hỏi ghi đè nếu chạy lại trên dữ liệu đã có. Chỉ dùng archive do lab tạo, giữ đích trống và so lại tệp sau khi giải nén.
mkdir -- "$lpi_archive/restore-zip"
unzip "$lpi_archive/reports.zip" -d "$lpi_archive/restore-zip"
cmp "$lpi_archive/source/README.txt" "$lpi_archive/restore-zip/source/README.txt"
Một bản sao lưu cần gắn với thời điểm, dữ liệu phải có, nơi lưu, quyền truy cập và cách phục hồi. Nếu archive và nguồn cùng nằm trên ổ hỏng, bạn có thể mất cả hai. Nếu chưa từng kiểm tra giải nén, bạn chưa biết có đủ dữ liệu và công cụ ở phía khôi phục hay không. Những yêu cầu này vượt khỏi việc chọn một cờ nén.
Với lab, ghi tên archive, đầu vào, phương thức nén và kết quả so nội dung. Với công việc, bổ sung quy trình sao lưu được tổ chức chấp thuận, đặc biệt cho database hoặc dữ liệu có yêu cầu nhất quán. Không gửi archive chứa thông tin riêng qua kênh công khai để nhờ kiểm tra cú pháp.
Tự kiểm tra: .tar có luôn được nén? Không. Listing đúng tên đã chứng minh nội dung khôi phục giống nguồn? Chưa. cmp đạt hai tệp có chứng minh mọi quyền và timestamp được phục hồi? Không; nó chỉ so byte dữ liệu của các cặp đó. Bạn đạt bài khi giải thích được ba giới hạn và tái tạo được quy trình tạo, liệt kê, phục hồi rồi kiểm chứng trong cây lab mới.

Thực hành Linux với ticket giả lập: tạo script đếm, kiểm tra lỗi, giới hạn dữ liệu, phục hồi TAR và xác minh báo cáo HTTP loopback bằng so sánh byte.

Hiểu thư mục tạm và tệp đặc biệt Linux; thử mktemp, sticky bit, hard link và symlink, kiểm tra đích sau di chuyển và phân biệt liên kết với backup.

Đọc quyền tệp Linux, owner và group; thử chmod, chown, search thư mục và umask bằng tài khoản không root, phân biệt ghi nội dung với xóa tên tệp.

Tạo người dùng Linux và nhóm trong lab riêng; kiểm tra home, skeleton, nhóm bổ sung, khóa mật khẩu và phạm vi xóa tài khoản trước khi áp dụng thực tế.