Mover arquivo de log com mais de 2 dias

0

Eu quero mover os arquivos de log com mais de dois dias para um novo diretório por data, como abaixo.

Fonte:

1) /Test1/Server.log
2) /Test1/Server17032016.log

Destino:

1)/Test2/17032016/Server17032016.log

Crie diretórios por data e mova arquivos para lá.

    
por Chirag Dhaduk 19.03.2016 / 19:53

2 respostas

1

Sugiro que você não faça backups com a data de modificação.

Você não prefere classificar seus backups no dia em que eles realmente passaram por backup?

Eu sei que sim.

Eu resolveria o problema assim

#!/bin/sh

targetDirectory=$2

for file in $1; do 
    if [ -f "$file" ]; then
        if [ $((('date +%s' - 'stat -L --format %Y $file') > (172800))) -eq 1 ]; then
                today=$(date +"%Y%m%d")
                mkdir -p "$targetDirectory"
                mkdir -p "$targetDirectory/$today"
                mv $file "$targetDirectory/$today"
                echo "$file moved to $targetDirectory/$today/$file"
        fi
    fi
done

(O número mágico 172800 é de 2 dias em segundos.)

Execute o script da seguinte forma: $ ./movebackup.sh "/Logfolder/*.log" Backups

Output

Server.log moved to Backups/20160319/Server.log
Server17032016.log moved to Backups/20160319/Server17032016.log

E execute isso em um cronjob à meia-noite todos os dias.

    
por 19.03.2016 / 22:09
0

O OP aparentemente espera que um nome de caminho seja

 /Test1/Server17032016.log

é interpretado como se os últimos 8 dígitos do nome do arquivo fossem uma data (dia do mês, mês e ano) e quer que o nome do diretório seja derivado dessa data.

Um script para os dados fornecidos pode ser assim:

#!/bin/sh
find /Test1 -type f -mtime +2 | while IFS= read -r name
do
    date=$(echo "$name" | sed -e 's,^/Test1/Server,,' -e 's,\.log$,,' )
    [ -z "$date" ]          && continue
    [ "x$date" = "x$name" ] && continue
    mkdir -p /Test2/"$date"
    mv -f "$name" /Test2/"$date/"
done

embora seja necessário algum refinamento se os arquivos de log não começarem com o literal Server , bem como para excluir arquivos que não se encaixam no padrão.

    
por 19.03.2016 / 21:14