Seperti yang ditunjukkan Bichoy, Anda dapat menggunakan find
perintah untuk menemukan file dengan akses, waktu pembuatan, dan modifikasi tertentu. Namun - waktu mengambil offset dalam kenaikan 24 jam dan tidak selalu nyaman untuk dihitung kecuali jika Anda menginginkan sesuatu dari jumlah tertentu jumlah 'hari' yang lalu. Anda harus menggabungkannya dengan -daystart
untuk 'memutari' itu ke awal hari.
Saya pikir lebih nyaman dalam kasus Anda, adalah opsi -newermt yang mengambil datestring (dan bukan nama file referensi seperti kebanyakan versi -newerXY)
Menggabungkan dengan find
's -print0
pilihan untuk file handle dengan spasi dalam nama dan opsional -type f
untuk tidak mendapatkan direktori pada periode Anda tertarik:
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
Ada satu masalah besar dengan itu: jika jumlah file yang ditemukan menjadi panjang, xargs
akan memanggil perintahnya (dalam hal ini tar
) beberapa kali karena xargs
harus sesuai dengan argumen pada commandline yang tidak terbatas. Untuk menghindari itu saya selalu menggunakan cpio
, yang bertuliskan nama file dari stdin. Dengan --format=ustar
parameter untuk mendapatkan file tar POSIX, dan dalam kasus Anda, Anda perlu menyalurkan output gzip
untuk mendapatkan hasil yang diinginkan:
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