Ajuda com script para back up [RESOLVIDO]

1. Ajuda com script para back up [RESOLVIDO]

Deivyd Richard Saldanha Resende
drunbass

(usa Debian)

Enviado em 11/05/2018 - 13:43h

Boa tarde

Se possível alguém puder me ajudar com o script abaixo

ano="2018"
mes="02"
dia="01"
hora="01"
origem="/var/spool/asterisk/monitor/$ano-$mes-$dia_$hora"
destino="/mnt/storage/$ano/$mes/"


for((m=mes;m<4;mes++))
if [ -d $destino ]
then
echo "oi"
else
mkdir -p -m 777 $destino
fi
for((dia=01;dia<32;dia++))
for(hora=01;hora<25;hora++))
mv -f $origem & *.wav $destino

done
done
done


Está apresentando a seguinte linha de erro
./backupdvd.sh: line 11: syntax error near unexpected token `if'
./backupdvd.sh: line 11: ` if [ -d $destino ]'

No caso a linha 11 é a linha onde está o if [ -d $destino ]


Desde já grato




  


2. Re: Ajuda com script para back up

Osama Jr.
/bin/laden

(usa Void Linux)

Enviado em 12/05/2018 - 00:46h

Falta o "do" do for!

for (( ... ))
do
...
done



for ((m=mes;m<4;mes++))
do
if [ -d $destino ]
then
echo "oi"
else
mkdir -p -m 777 $destino
fi

for ((dia=01;dia<32;dia++))
do
for (hora=01;hora<25;hora++))
do
mv -f $origem & *.wav $destino
done
done
done



3. Resolvido o problema agora arrumei outro kkk

Deivyd Richard Saldanha Resende
drunbass

(usa Debian)

Enviado em 14/05/2018 - 09:44h

Muito obrigado consegui resolver, agora só estou um comproblema no mv onde ele não reconhece o "_" antes da variável $hora.

Mas muito obrigado pela ajuda


4. Re: Ajuda com script para back up [RESOLVIDO]

Diego Mendes Rodrigues
diegomrodrigues

(usa Ubuntu)

Enviado em 14/05/2018 - 13:44h

Na variável $origem, você colocou ..._$hora" no final, eu troquei por ...-$hora". O underline (_) tem um significado especial no shell.

Alterei também um pouco os fors, que estavam sem o do.

Veja se funciona desta forma:

#!/bin/bash

ano="2018"
mes="02"
dia="01"
hora="01"
origem="/var/spool/asterisk/monitor/$ano-$mes-$dia-$hora"
destino="/mnt/storage/$ano/$mes/"

echo $origem
echo $destino

for(m=mes;m<4;mes++);
do
if [ -d $destino ]
then
echo "oi"
else
mkdir -p -m 777 $destino
fi

for(dia=01;dia<32;dia++);
do
for(hora=01;hora<25;hora++);
do
mv -f $origem & *.wav $destino
done
done

done



5. Problema no underline

Deivyd Richard Saldanha Resende
drunbass

(usa Debian)

Enviado em 14/05/2018 - 13:51h

então o problema é q o nome dos arquivos que serão movimentados possui "_" , consegui contornar usando uma variável para fazer o papel do underline.



6. NOvo problema :(

Deivyd Richard Saldanha Resende
drunbass

(usa Debian)

Enviado em 14/05/2018 - 17:29h

Estou com um outro problema , como o nome de origem dos arquivos estão da seguinte maneira 2018-01-01_01
usando 2 casas decimais para tudo , na hora de procurar pelos arquivos transformo as variáveis usando um 0$var para números menores que 10 porém
por algum motivo que não estou entendendo as variáveis de endereço não aderem o valor novo e quando vou para o próximo laço de repetição ele buga para fazer a soma informando que o argumento é muito longo

estado atual do scrip

#!/bin/bash -x

ano="2018"
mes="03"
dia="01"
hora="01"
under="_"
tuto="*.wav"
origem="/var/spool/asterisk/monitor/$ano-$mes-$dia$under$hora$tuto"
destino="/mnt/storage/$ano/$mes"


for((mes="2";$mes<5;mes="$mes+1"))
do
#Verifica o destino
if [ -d $destino ]
then
echo " Diretorio $destino existe "
else
echo " Criando diretorio $destino "
mkdir -p -m 777 $destino
fi
if (($mes<10))
then
mes="0$mes"
else
mes="$mes"
fi
for((dia="01";$dia<32;dia="$dia+1"))
do
if (($dia<10))
then
dia="0$dia"
else
dia="$dia"
fi
for((hora="7";$hora<21;hora="$hora+1"))
do
if [ -d $origem ]
then
if (($hora<10))
then
hora="0$hora"
echo " copiando $origem para $destino "
mv $origem $destino
else
hora="$hora"
echo " copiando $origem para $destino "
mv $origem $destino
fi
else
if(($hora<10))
then
hora="0$hora"
echo " $origem nao existe "
else
hora="$hora"
echo " $origem nao existe "
fi
fi


done
done
done



Debug do erro
[root@scout.practis] 8020 130 - 14/May/2018 17:26
[~]$ ./backupdvd.sh
+ ano=2018
+ mes=03
+ dia=01
+ hora=01
+ under=_
+ tuto='*.wav'
+ origem='/var/spool/asterisk/monitor/2018-03-01_01*.wav'
+ destino=/mnt/storage/2018/03
+ (( mes=2 ))
+ (( 2<5 ))
+ '[' -d /mnt/storage/2018/03 ']'
+ echo ' Diretorio /mnt/storage/2018/03 existe '
Diretorio /mnt/storage/2018/03 existe
+ (( 2<10 ))
+ mes=02
+ (( dia=01 ))
+ (( 1<32 ))
+ (( 1<10 ))
+ dia=01
+ (( hora=7 ))
+ (( 7<21 ))
+ '[' -d '/var/spool/asterisk/monitor/2018-03-01_01*.wav' ']'
+ (( 7<10 ))
+ hora=07
+ echo ' /var/spool/asterisk/monitor/2018-03-01_01*.wav nao existe '
/var/spool/asterisk/monitor/2018-03-01_01*.wav nao existe
+ (( hora=07+1 ))
+ (( 8<21 ))
+ '[' -d '/var/spool/asterisk/monitor/2018-03-01_01*.wav' ']'
+ (( 8<10 ))
+ hora=08
+ echo ' /var/spool/asterisk/monitor/2018-03-01_01*.wav nao existe '
/var/spool/asterisk/monitor/2018-03-01_01*.wav nao existe
+ (( hora=08+1 ))
./backupdvd.sh: line 37: ((: hora=08: value too great for base (error token is "08")


Detalhe interessante é que a variável origem não está pegando as variáveis mes, dia , e hora quando as mesmas são atualizadas na estrutura de repetição.

Alguém consegue dar uma luz ?





7. Problema resolvido

Deivyd Richard Saldanha Resende
drunbass

(usa Debian)

Enviado em 16/05/2018 - 16:45h

Muito obrigado a todos que auxiliaram aos trancos e barrancos script rodando liso.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts