Как архивировать только измененные файлы без ведения отдельного списка и без сложных скриптов. Решение на самом деле простое - связка find + tar + gzip.
▪️ Проблема
Обычный
tar -czf backup.tar.gz /data каждый раз сжимает все файлы → при больших каталогах это очень долго.Хотелось бы архивировать только то, что изменилось за последний день/час.
▪️ Решение: find + tar
find /data -type f -mtime -1 -print0 | tar --null -czf backup-$(date +%F).tar.gz --files-from=-
-mtime -1 - ищет файлы, измененные за последние 24 часа-print0 + --null - защита от пробелов в именах--files-from=- - tar берет список файлов прямо из stdin▪️ Вариант с часами (например, за 2 часа)
find /data -type f -mmin -120 -print0 | tar --null -czf backup-$(date +%F_%H%M).tar.gz --files-from=-
▪️ Инкрементальные архивы (только изменения с момента последнего бэкапа)
touch /tmp/last-backup
find /data -type f -newer /tmp/last-backup -print0 | \
tar --null -czf backup-$(date +%F).tar.gz --files-from=-
touch /tmp/last-backup
BashTex 📱 #bash #utils