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