Script Criação de Pastas

1. Script Criação de Pastas

Felipe
vlakitus

(usa Ubuntu)

Enviado em 10/10/2013 - 13:42h

Pessoal boa tarde!

Nunca fiz nada em shell script e nem sequer havia lido algo sobre, as pessoas que trabalham com linux aqui na empresa estão fora, e preciso criar o seguinte script:

Criar uma estrutura de pastas (Até aí tudo bem).

A estrutura ficará assim:
/home/admin_linux/backup(exemplo)

nessa estrutura, preciso criar as seguintes pastas:
(ano) 2013 (pasta para o ano)
(mes) 10 (pasta para o mes)
(dia) 10 (pasta para o dia)

ou seja: /home/admin_linux/backup/(ano)/(mes)/(dia)

até aí beleza, consegui fazer, o problema é o seguinte:

este script vai rodar todo dia (agendado), preciso fazer uns ifs onde:

se a pasta ANO existir, ele dá um "cd" na pasta, se não ele cria a pasta ANO e entra na pasta

Dentro da pasta ANO, verifica se existe a pasta MES, se a pasta nao existe, ele cria a pasta mes e entra na pasta

Dentro da pasta MES, ele verifica se existe a pasta do dia atual, se nao existir ele cria e o sript chega ao fim, se existir o script chega ao fim

Obs.: Mesmo sabendo que o script vai rodar só uma vez ao dia e que não é necessário validar se a pasta do dia(current day) existe, prefiro fazer para evitar qualquer tipo de problema.

aí vem meu problema: estou com dificuldade de verificar se as pastas existem ou não, provavelmente não estou sabendo concatenar o caminho com as pastas a serem criadas nos IFs, segue abaixo o código:



#!/bin/bash

DIRECTORY="/home/admin_linux/backup"
YEAR=$(date +%Y)
MONTH=$(date +%m)
DAY=$(date +%d)

cd /home/admin_linux/backup

if [ ! -d "$DIRECTORY""/"$YEAR ]; then
mkdir $YEAR
cd /home/admin_linux/backup"/"$YEAR

if [ ! -d "$DIRECTORY""/"$YEAR"/"$MONTH ]; then

mkdir $MONTH
cd /home/admin_linux/backup"/"$YEAR"/"$MONTH

mkdir $DAY
else
cd /home/admin_linux/backup"/"$YEAR"/"$MONTH
mkdir $DAY
fi

else

#DIRECTORY=$DIRECTORY"/"$YEAR
cd /home/admin_linux/backup"/"$YEAR

if [ ! -d "$DIRECTORY""/"$YEAR"/"$MONTH ]; then

mkdir $MONTH
cd /home/admin_linux/backup"/"$YEAR"/"$MONTH
mkdir $DAY
else
cd /home/admin_linux/backup"/"$YEAR"/"$MONTH
mkdir $DAY
fi

fi


Alguém poderia me dar uma dica? ou se existir uma estrutura mais simples de fazer isso, também resolve.

Agradeço antecipadamente.

Att,

Felipe





  


2. Re: Script Criação de Pastas

Allan Moraes
MySQLBox

(usa CentOS)

Enviado em 10/10/2013 - 17:57h

Olá...
Eu não cheguei a testar, mas tente usar desta forma:

if [ != -d "$DIRECTORY""/"$YEAR ]; then

Colocando o "=" depois do "!".


3. Re: Script Criação de Pastas

Fernando
phoemur

(usa Debian)

Enviado em 10/10/2013 - 18:32h

Não precisa desse monte de if else

Use a opção -p do comando mkdir que ele só criará a pasta se ela não existir, se existir ele cria as subpastas, se existir a árvore inteira ele não faz nada...

Você resolveria com 2 linhas:


mkdir -p /home/admin_linux/backup/$(date +%Y/%m/%d)
cd /home/admin_linux/backup/$(date +%Y/%m/%d)



4. Re: Script Criação de Pastas

Paulo
paulo1205

(usa Ubuntu)

Enviado em 10/10/2013 - 18:34h

Você precisa mesmo testar a existência e entrar em cada nível? Há algo que lhe impeça de fazer diretamente um "mkdir -p YYYY/MM/DD" (que cria automaticamente os níveis acima que porventura não existam, e não dá erro se o diretório já existir)?


5. Re: Script Criação de Pastas

Felipe
vlakitus

(usa Ubuntu)

Enviado em 11/10/2013 - 08:04h

Cara,

Como eu disse não conhecia nada e tive que fazer as pressas rsrsrs

mas o comando:
mkdir -p /home/admin_linux/backup/$(date +%Y/%m/%d)
cd /home/admin_linux/backup/$(date +%Y/%m/%d)

Funcionou perfeitamente!

Muito obrigado! Agora irei estudar um pouco de shell script por que já vi que precisarei fazer muita coisa!

Obrigado à todos!


6. Re: Script Criação de Pastas

Allan Moraes
MySQLBox

(usa CentOS)

Enviado em 18/10/2013 - 10:44h

Ótimo, só não esqueça de marcar como resolvido.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts