2016-08-09 41 views
-1

Bitte helfen Sie hierzuKomprimiert und die Dateien in jeweiligen Verzeichnis zu bewegen

Ich habe den Ordner, die Protokolle auf einer täglichen Basis hat, so mein Ziel zu tar ist und die Zip-Datei und auf sehr neben dem separaten Verzeichnis verschieben Tag mit Cron.

*** Alle Protokolle werden im Format als "server.log.2016-08-08" gespeichert (server.log.year-Monat-Tag)

inorder die Datei i for i in verwendet zu finden

find . -type f -name server.log.$(date "+%Y-%m-%d" -d '1 day ago')

wenn der Tag 2016.08.09 ist, wird es das gestern Serverprotokoll (server.log.2016-08-07)

*** auch dann, um es zu komprimieren Ich benutzte do tar -czvf server.log.$(date "+%B-%m-%d" -d '1 day ago').tar.gz $i --remove-files

**** Ich habe Ordner als Januar, Februar .... Dezember auf dem Weg /opt/Solartis_Monitoring/logsbackup/(jan,feb...dec)

**** jetzt muss ich Verschieben Sie die archivierte und komprimierte Datei an den Speicherort , wenn die komprimierten Protokolle zum Monat August gehört, dann sollte es im August Ordner sein, der gleiche Fall gilt für alle Monate.

so verwendet i mv server.log.$(date "+%B-%m-%d" -d '1 day ago').tar.gz /opt/Solartis_Monitoring/logsbackup/$(date "+%B")

ich crontab dafür bin mit ausgeführt werden.

Problem:

Das Problem ist, wenn die Datei am 1. Tag des nächsten Monats (September) ausgeführt wird, Skript den 31. August Datei finden und es wird komprimieren, aber während die komprimierte Datei zu bewegen, wird es Umzug nach September Monat rit ?? da ich /opt/Solartis_Monitoring/logsbackup/$(date "+%B") bin mit

hier date "+%B" wird im September und meine Datei erweitert werden wird/opt/Solartis_Monitoring/logsbackup/September rechts ....

bewegt werden Wie this..august Datei zu lösen ist, nehme an im Ordner August verschoben

Drehbuch:

cd /opt/Solartis_Monitoring/JON_Server/logs 

for i in `find . -type f -name server.log.$(date "+%Y-%m-%d" -d '1 day ago')` 
do tar -czvf server.log.$(date "+%B-%m-%d" -d '1 day ago').tar.gz $i --remove-files 

mv server.log.$(date "+%B-%m-%d" -d '1 day ago').tar.gz /opt/Solartis_Monitoring/logsbackup/$(date "+%B") 
done 
+0

Ändern Sie '$ (Datum" +% B ")' in '$ (Datum" +% B "-d 'vor 1 Tag')'? –

Antwort

1

Versuchen Sie dies.

Der obige Befehl gibt Ihnen den Monat-Parameter von gestern.

cd /opt/Solartis_Monitoring/JON_Server/logs 
for i in `find . -type f -name server.log.$(date "+%Y-%m-%d" -d '1 day ago')` 
do tar -czvf server.log.$(date "+%B-%m-%d" -d '1 day ago').tar.gz $i --remove-files 
mv server.log.$(date "+%B-%m-%d" -d '1 day ago').tar.gz 
/opt/Solartis_Monitoring/logsbackup/$(date "+%B" -d '1 day ago') 
1

versuchen dies;

Wenn heute der 1. Tag des Monats ist, verschieben Sie die gzip-Datei in den vorherigen Monat.

cd /opt/Solartis_Monitoring/JON_Server/logs 
for i in `find . -type f -name server.log.$(date "+%Y-%m-%d" -d '1 day ago')` 
do tar -czvf server.log.$(date "+%B-%m-%d" -d '1 day ago').tar.gz $i --remove-files 
ifStart=`date '+%d'` 
if [ $ifStart == 01 ] 
then 
mv server.log.$(date "+%B-%m-%d" -d '1 day ago').tar.gz /opt/Solartis_Monitoring/logsbackup/$(date +"%B" -d 'last month') 
else 
mv server.log.$(date "+%B-%m-%d" -d '1 day ago').tar.gz /opt/Solartis_Monitoring/logsbackup/$(date "+%B") 
fi 


done 
+0

Danke dogru, werde davon Gebrauch machen – karthikraj