Tìm kiếm và quản lý tệp nâng cao trên Linux: find, tree, scp, touch, dd và sao lưu tự động với cron + tar

Linux cung cấp một bộ công cụ mạnh mẽ để tìm kiếm, kiểm soát thời gian truy cập/tác động, hiển thị cấu trúc thư mục, truyền tệp và tự động hóa sao lưu. Dưới đây là hướng dẫn thực hành tập trung vào các thao tác thiết yếu.

Tìm kiếm tệp bằng find

Câu lệnh find cho phép duyệt hệ thống tệp theo nhiều tiêu chí đồng thời:

  • Theo tên: find /var/log -name "syslog*" — tìm các tệp bắt đầu bằng syslog trong /var/log.
  • Theo loại: find /home -type d -name "Documents" — chỉ tìm thư mục có tên Documents.
  • Theo thời gian sửa đổi:
    find /tmp -mtime 0 — tệp được chỉnh sửa trong vòng 24 giờ qua.
    find /data -mtime +7 — tệp chưa được sửa trong hơn 7 ngày.
  • Theo kích thước:
    find /opt -size +500M — tệp lớn hơn 500 MB.
    find /tmp -size 1G — tệp đúng bằng 1 GB (không dùng dấu + hay -).
  • Kết hợp xử lý: find /var/tmp -name "*.log" -mtime +30 -exec gzip {} \; — nén tất cả tệp nhật ký cũ hơn 30 ngày.

Quản lý thời điểm sửa đổi tệp

Dùng stat để kiểm tra chi tiết thời gian:

stat /etc/hosts

Kết quả hiển thị ba mốc: Access (truy cập), Modify (sửa đổi nội dung), Change (thay đổi metadata). Để đặt lại thời điểm Modify, sử dụng touch:

touch -m -d "2023-09-22 14:30:00" /tmp/archive.log

Nếu tệp chưa tồn tại, lệnh này sẽ tạo mới và gán thời gian; nếu đã có, chỉ cập nhật thời điểm sửa đổi.

Hiển thị cấu trúc thư mục dạng cây

Cài đặt và sử dụng tree để trực quan hóa tổ chức thư mục:

yum install -y tree
tree -L 2 /usr/local

Tùy chọn -L 2 giới hạn độ sâu hiển thị ở hai cấp con — hữu ích khi phân tích thư mục có nhiều tầng lồng nhau.

Truyền tệp an toàn qua SSH với scp

scp hoạt động dựa trên giao thức SSH, đảm bảo tính toàn vẹn và bảo mật:

  • Tải về từ máy chủ:
    scp user@10.0.1.5:/var/backups/db.sql.gz ~/downloads/
    scp -r user@10.0.1.5:/srv/app/configs/ ~/configs/ — tải thư mục đệ quy.
  • Tải lên máy chủ:
    scp ~/reports/q3.pdf user@10.0.1.5:/var/www/html/reports/

Lưu ý: luôn thêm cờ -r khi làm việc với thư mục; thiếu cờ này sẽ gây lỗi.

Tạo tệp mẫu có kích thước chính xác

Dùng dd để sinh tệp kiểm thử nhanh — đặc biệt hữu ích khi kiểm tra hiệu năng I/O hoặc phân bổ không gian đĩa:

dd if=/dev/zero of=/tmp/testfile.img bs=1MiB count=2048

Lệnh trên tạo tệp nhị phân testfile.img dung lượng đúng 2048 MiB (≈ 2 GB) từ nguồn dữ liệu null. Tham số bs xác định khối đọc/ghi, count xác định số khối — nhân hai giá trị ra kích thước cuối cùng.

Tự động sao lưu định kỳ với crontar

Kết hợp crontab với tar để duy trì bản sao nhất quán của thư mục hệ thống:

  1. Xác định đường dẫn đầy đủ tới tar: which tar → thường là /usr/bin/tar.
  2. Mở trình soạn thảo crontab: crontab -e.
  3. Thêm dòng sau để nén /etc mỗi giờ với tên tệp chứa dấu thời gian:
0 * * * * /usr/bin/tar -cf /backup/etc-$(date +\%Y\%m\%d-\%H\%M).tar /etc/ 2>/dev/null

Mỗi lần chạy, lệnh tạo một tệp .tar riêng biệt (ví dụ: etc-20240715-1400.tar). Ký tự % trong date phải được escape bằng dấu chéo ngược đơn (\%) để tránh bị cron hiểu sai.

Thẻ: find tree scp touch dd

Đăng vào ngày 28 tháng 5 lúc 22:54