Ajuda Shell Script [RESOLVIDO]

1. Ajuda Shell Script [RESOLVIDO]

Roberto Gama
robertofgama

(usa Manjaro Linux)

Enviado em 02/02/2016 - 09:09h

Fala pessoal, estou criando um script para automatização de um acompactação de arquivos em um servidor, só que alguma coisa não está encaixando direito.

A ideia que o script irá dar um ls combinado com o grep, buscando arquivos com a extenção .bak, se houver algum arquivo na pasta com o nome ele pegará o arquivo compactará e moverá pra uma pasta o arquivo original, só algo no meio tempo está dando errado.

Desde já agradeço a ajuda.

#!/bin/bash

# Declaração de Variáveis
SENHA_ARQUIVO="123"
DATA=$(date +%Y-%m-%d)
DIR_BACKUP="/home/Temp"
ARQUIVO=$(ls $DIR_BACKUP | grep .bak)

while [ 'ls $DIR_BACKUP | grep .bak' = *.bak ];
do
7za a -mx=0 -p$SENHA_ARQUIVO $DATA.7z $ARQUIVO
mkdir Compactados
mv $ARQUIVO Compactados
done



  


2. RESP:

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 02/02/2016 - 10:55h

robertofgama escreveu:

Fala pessoal, estou criando um script para automatização de um acompactação de arquivos em um servidor, só que alguma coisa não está encaixando direito.

A ideia que o script irá dar um ls combinado com o grep, buscando arquivos com a extenção .bak, se houver algum arquivo na pasta com o nome ele pegará o arquivo compactará e moverá pra uma pasta o arquivo original, só algo no meio tempo está dando errado.

Desde já agradeço a ajuda.

#!/bin/bash

# Declaração de Variáveis
SENHA_ARQUIVO="123"
DATA=$(date +%Y-%m-%d)
DIR_BACKUP="/home/Temp"
ARQUIVO=$(ls $DIR_BACKUP | grep .bak)

while [ 'ls $DIR_BACKUP | grep .bak' = *.bak ];
do
7za a -mx=0 -p$SENHA_ARQUIVO $DATA.7z $ARQUIVO
mkdir Compactados
mv $ARQUIVO Compactados
done


###############################################################################################
Bom dia robertofgama.
1º Crie a pasta COMPACTADOS fora do laço while.
2º Use ls -1, assim você "pega" somente o caminho e o nome do arquivo, neste caso o grep é desnecessário, o ls faz o serviço!
#!/bin/bash
[ -d /home/Temp/ORIGINAL ] || mkdir /home/Temp/ORIGINAL
# Declaração de Variáveis
SENHA="123"
DATA=$(date +%Y-%m-%d)
ORIG="/home/Temp"
DEST="/home/Temp/ORIGINAL"

for ARQ in $(ls -1 $ORIG/*.bak);do
7za a -mx=0 -p$SENHA $ARQ-$DATA.7z $ARQ
mv $ARQ $DEST
done


Att.:
Marcelo Oliver




3. Re: Ajuda Shell Script [RESOLVIDO]

Luis Henrique Pessoa
gwarah

(usa Ubuntu)

Enviado em 02/02/2016 - 12:08h


experimenta substituir o while por um for mais ou menos assim


#!/bin/bash
for arquivo in `ls | grep -i "txt$"`;do

# coloque o código de tratamento aqui
echo tratando arquivo $arquivo
done


no meu caso, o grep seleciona da lista ls, os arquivos que terminem em txt (o $ no final faz isso) e o -i ignora o case (aceita maiúsculas e minúsculas).

---------------------
O perfeito é desumano porque o humano é imperfeito
(Fernando Pessoa)


4. Re: Ajuda Shell Script [RESOLVIDO]

Rodrigo maia
Rodrigo Maia

(usa Outra)

Enviado em 02/02/2016 - 15:29h

Cara,

Pelo que entendi seria mais ou menos isso:


#!/bin/bash

DATA=`date +%Y-%m-%d`

ls /home/tmp | grep .bak

if [ $? = 0 ]
then
tar -czvf $DATA.tar.gz *.bak
mkdir Compactados
mv *.tar.gz Compactados
rm -rf *.bak
fi



5. Agradecimentos

Roberto Gama
robertofgama

(usa Manjaro Linux)

Enviado em 03/02/2016 - 15:53h

Galera, valeu mesmo as alternativas, já adaptei meu script e está a todo o vapor.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts