#!/bin/sh
wpath='.'
prefix='change'
ext='tar.gz'
skip() {
echo "Skip: $_"
}
remove() {
echo "Delete: $_"
rm $_
}
list=`/bin/ls ${wpath}/*-${prefix}-??????.${ext} 2>/dev/null | sort -r`
total=`echo -n $list | wc -w | sed 's/[^0-9]//g'`
echo "Have ${total} file(s)"
echo "Delete old files ..."
cnt=1
total=''
for x in $list ; do
case $cnt in
1)
cnt=2
skip $x
;;
2)
cnt=''
skip $x
;;
*)
total="${total}x"
remove $x
;;
esac
done
total=`echo -n $total | wc -c | sed 's/[^0-9]//g'`
echo "Done. Deleted ${total} file(s)"
Сравнение имен файлов из bash
Я начинающий линуксоид, поэтому наверняка задаю простой для всех вопрос.
Возникла необходимость сделать систему резервного копирования для ext3 и далее периодически убивать старые версии файлов tar.
Все предполагается делать скриптом на BASH
принцыпиально имена файлов будут
***-change-080423.tar.gz
08-04-23 Год,месяц,число
Необходима процедура поиска наиболее старого файла и удаление его из директории. Причем процедура удаления основывается не на дате создания файла (ctime,mtime) а на количество резервных копий хранящихся в каталоге. Т.е. если в директории будет >2 резервных копий, все последующие необходимо удалять.
Заранее спасибо!!!!
Я не гуру, но вот что у меня получилось: