Như Bichoy đã chỉ ra, bạn có thể sử dụng find
lệnh để tìm các tệp có thời gian truy cập, tạo và sửa đổi cụ thể. Tuy nhiên, thời gian bù lại tăng theo 24 giờ và không phải lúc nào cũng thuận tiện để tính trừ khi bạn muốn thứ gì đó từ một số lượng cụ thể của 'ngày' trước. Bạn sẽ cần kết hợp điều đó với -daystart
'làm tròn' đến đầu ngày.
Tôi nghĩ thuận tiện hơn trong trường hợp của bạn, là tùy chọn -newermt sẽ lấy dữ liệu (chứ không phải tên của tệp tham chiếu như hầu hết các phiên bản -newerXY)
Cùng với đó là find
's -print0
tùy chọn để xử lý file với các không gian trong tên và tùy chọn -type f
không nhận được bất kỳ thư mục trong giai đoạn bạn đang quan tâm:
find /var/lib/edumate/backup/archive_logs/db2inst1/SAAS \
-newermt 20130310 -not -newermt 20130314 -type f -print0 \
| xargs -0 tar -cvzf /tmp/saas_archive_logs.tar.gz
Có một vấn đề lớn với điều đó: trong trường hợp số lượng tệp được tìm thấy trở nên dài, xargs
sẽ gọi lệnh của nó (trong trường hợp này tar
) nhiều lần khi xargs
cần điều chỉnh các đối số trên dòng lệnh không phải là vô hạn. Để phá vỡ cái mà tôi luôn sử dụng cpio
, nó đọc tên tập tin từ stdin. Với --format=ustar
tham số để có được tệp tar POSIX, và trong trường hợp của bạn, bạn sẽ cần dẫn đầu ra qua gzip
để có kết quả mong muốn:
find /var/lib/edumate/backup/archive_logs/db2inst1/SAAS \
-newermt 20130310 -not -newermt 20130314 -type f -print0 \
| cpio --create --null --format=ustar \
| gzip > /tmp/saas_archive_logs.tar.gz