Script para mover arquivos está deixando o meu disco a 100%

1. Script para mover arquivos está deixando o meu disco a 100%

RICARDO SILVESTRE
ricardojppb

(usa Ubuntu)

Enviado em 12/04/2011 - 11:54h

Bom dia comunidade.

Estou com um probleminha que não consigo entender.
É o seguinte eu fiz um script shell que lista os arquivo pela data e move esses arquivos para um diretorio especifico do mesmo disco, como são muito arquivos cerca de 68.000 arquivos para serem movidos o meu disco esque chegando a 100% de uso.

Script Shell:

#!/bin/bash


# Variavel que possue data de 2 meses atrás pela data corrente #

# Mês anterior
mes_anterior=$(date --date='-2 months' +%m)

# Ano anterior
ano_anterior=$(date --date='-2 months' +%Y)

# Variavel que possui a data corrente #
# Mês corrente
mes_corrente=$(date +%m)
# Ano corrente
ano_corrente=$(date +%Y)

# Definição dos diretorios #

# Diretorio onde está localizado os arquivos de audio do asterisk
diretorio_padrao="/var/spool/asterisk/monitor"
# Diretorio raiz onde os arquivos de audio vão ser movidos da pasta padrão para a destino
diretorio_destino="/grv_asterisk/monitor"


# Comando que lista os arquivos de audio, que poder ser mudando o diretorio onde os arquivos estão localizado e a data que seria o Ano e o Mês ( 201104 )
# explicando os comandos

# 1º - ls -lu $diretorio_padrao ----- Este comando lista os arquivos de um determinado diretorio,
# com as seguintes informações ( data de criação, hora de criação, permissão, usuario, nome do arquivo
# 2º - grep -E '.*\.(gsm|wav)' ----- Com a informação do 1º comando é feito uma busca pelo tipo de arquivo que pode ser GSM ou WAV
# 3º - grep $ano_anterior$mes_anterior ----- Com a informação do 2º comando é feito uma busta pela data que está no nome do arquivo.
# 4º - awk '{print $9}' ----- Com a informação do 3º comando é feita a separação pegando a posição do nome do arquivo, essa posição pode mudar dependendo da distribuição.
arquivos=$(ls -lu $diretorio_padrao | grep -E '.*\.(gsm|wav)' | grep $ano_anterior$mes_anterior | awk '{print $9}')

# Se a variavel ARQUIVOS tiver os nomes, é feito o loop para que cada arquivo seja movido para o diretorio destino.
for i in $arquivos;

do
# verifica se o arquivo existe
if ls $diretorio_padrao"/"$i >> /dev/null
then

# monta o caminho completo do diretorio dependendo do ano e do mes do arquivo
diretorio=$diretorio_destino"/"$ano_anterior"/"$mes_anterior

# verifica se o diretorio completo já existe
if ls $diretorio
then
echo "Diretorio [ $diretorio ] já existe!"
else
# Cria o diretorio completo se ele não existir
mkdir -p $diretorio
fi

# copia o arquivo para o diretorio destino
mv $diretorio_padrao"/"$i $diretorio"/"$i

fi
done

exit 0


  


2. Re: Script para mover arquivos está deixando o meu disco a 100%

Mauricio Souza Klein
Hebang

(usa Arch Linux)

Enviado em 12/04/2011 - 12:00h

Bom, isso parece normal, pelo fato de serem 68000 arquivos. Você pode baixar a prioridade na hora de rodar seu script. Ele vai demorar mais para finalizar, mas não vai monopolizar a CPU (use o comando "nice");

Se isso não resolver, verifique se não é o seu próprio for que está ficando "lotado", uma vez que ele precisa controlar uma lista de 68000 itens.

Espero ter ajudado!


3. Re: Script para mover arquivos está deixando o meu disco a 100%

Daniel Fernandes
volcom

(usa Debian)

Enviado em 12/04/2011 - 12:00h

Mude a prioridade de execução do script ou do comando mv com o "nice".

Qual o tamanho dos arquivos que estão sendo movidos? Alterar a prioridade pode deixar o processo muito lento, tome cuidado.




4. Re: Script para mover arquivos está deixando o meu disco a 100%

RICARDO SILVESTRE
ricardojppb

(usa Ubuntu)

Enviado em 12/04/2011 - 13:51h

Primeiramente agradecer as resposta.

Volcom o tamanho dos arquivos variam muito, mas pode chegar a ter 50Mb cada arquivo.


5. Re: Script para mover arquivos está deixando o meu disco a 100%

RICARDO SILVESTRE
ricardojppb

(usa Ubuntu)

Enviado em 12/04/2011 - 14:10h

Uma coisa que esqueci comentar foi que esse arquivo está sendo executado pelo cron.

Eu descobri que o cron está criando um arquivo temporario no tmp e esse arquivo aumenta de tamanho quando os arquivos estão sendo movidos.



Alguem sabe me explicar o porque o cron cria esse run-crons.hourly.23860

O nome desse arquivo está assim porque eu coloquei o meu script no diretorio /etc/cron.hourly/






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts