Как отметил Бичой, вы можете использовать find
команду для поиска файлов с определенным временем доступа, создания и изменения. Однако -mtime принимает смещение с шагом 24 часа и не всегда удобно вычислять, если вы не хотите что-то из определенного количества чисел «дней» назад. Вам нужно будет объединить это с -daystart
«округлить» это к началу дня.
Я думаю, что более удобным в вашем случае является параметр -newermt, который принимает строку даты (а не имя справочного файла, как в большинстве версий -newerXY)
Объедините это с опцией find
's -print0
для обработки файлов с пробелами в имени и, по желанию, -type f
чтобы не получать никаких каталогов за интересующий вас период:
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
С этим связана одна большая проблема: в случае, если количество найденных файлов становится длинным, она xargs
будет вызывать свою команду (в данном случае tar
) несколько раз, так как она xargs
должна соответствовать аргументам командной строки, которая не является бесконечной. Чтобы обойти это, я всегда использую cpio
, который читает имена файлов из стандартного ввода. С --format=ustar
параметром для получения tar-файла POSIX, и в вашем случае вам понадобится передать вывод, gzip
чтобы получить желаемый результат:
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