Bash скрипт для автоматического удаления файлов
В линуксе я новичок. Установлена Ubuntu 18.04.
Мне необходимо настроить резервное копирование файлов. Архив автоматически создается отправляется через SSH на компьютер для хранения. Специально выделил для хранения жесткий диск. Если пройдет определенное количество времени, то диск заполнится этими файлами и нельзя будет скопировать новые.
Вопрос в следующем:
Как средствами bash написать скрипт, который смог бы определить достаточно ли места на жестком диске, и в случае наличия необходимого места - скопировать файл. Соответственно, если места недостаточно, то необходимо удалить самый старый файл или несколько файлов до достижения необходимого пространства, чтоб новый файл можно было скопировать?
В общем, решил для себя проблему следующим образом. Скачал скрипт который определяет размер папки и удаляет из нее самые старые файлы до тех пор, пока не будет выполнено условие размера. Вот код:
while [ "$(du -shb /media/bu3/backups_work | awk '{print $1}')" -gt 1000000 ]
do
find /media/bu3/backups_work -maxdepth 1 -type f -printf '%T@\t%p\n' | \
sort -n | head -n 1 | cut -d $'\t' -f 2- | xargs -d '\n' rm -f
done
Ответы (1 шт):
Есть замечательная команда du которая поможет вам в этом вопросе. Так-же неплохо почитать маны по grep и awk, которые помогают вытащить нужную инфу из иногда многословного вывода утилит. Ну надеюсь про перенаправление ввода вывода, конвейеры и вот это вот всё вы в курсе?