Skrypcik do archiwizacji poczty
Dzisiaj sobota i jakoś tak się złożyło że nie jest ona szczególnie zajęta. Postanowiłem odchudzić skrzynkę pocztową i napisałem skrypcik bashowy. Może komuś się przyda.
Jeżeli nie podamy katalogu w linii komend skrypt wchodzi do katalogu ~/Mail/Maildir/. Wyszukuje pliki według daty modyfikacji tak że pliki z każdego roku trafiają do osobnego pliku tar.gz w ~/Mail. Jeżeli ustawimy opcję REMOVE_FILES_AFTER_BAKUP=yes pliki będą tam przeniesione a oryginały usunięte.
#!/bin/bash
YEARS=(2000 2001 2002 2003 2004 2005 2006 2007 2008)
REMOVE_FILES_AFTER_BAKUP=no
function Days_go()
{
DATENOW=`date +%s`
DATEOLD=`date -d ${1}0101 +%s`
DATEOLDER=`date -d $[$1-1]0101 +%s`
DAYS=$[($DATENOW-$DATEOLD)/(60*60*24)]
DAYSYEARBEFORE=$[($DATENOW-$DATEOLDER)/(60*60*24)]
}
if [ -z "$1" ]
then
DIRECTORY=~/Mail/Maildir/
else
DIRECTORY=$1
fi
if [ $REMOVE_FILES_AFTER_BAKUP="yes" ]
then
OPT="--remove-files"
else
OPT=""
fi
echo $DIRECTORY
for YEAR in ${YEARS[@]}
do
Days_go ${YEAR}
FILES2BACKUP="archmail${YEAR}${DATENOW}.tmp"
echo -n "Mails changed before `date -d ${YEAR}0101 +%Y-%M-%d` : "
find ${DIRECTORY} -mtime +$[$DAYS-1] -mtime -${DAYSYEARBEFORE} -type f -print > ${FILES2BACKUP};
MAILNR=`wc -l ${FILES2BACKUP} | cut -f1 -d' '`
echo $MAILNR
if [ -s ${FILES2BACKUP} ]
then
echo "Processing $YEAR ..."
tar -czf "${DIRECTORY}/../arch${YEAR}.tar.gz" ${OPT} --files-from ${FILES2BACKUP};
echo "${DIRECTORY}/../arch${YEAR}.tar.gz Saved"
fi
rm ${FILES2BACKUP}
done
±
Komentarze do wpisu "Skrypcik do archiwizacji poczty":
Jeszcze nie ma żadnych komentarzy. Twój może być pierwszy.
Dodaj komentarz: