Ae galera, to precisando compactar usando o tar, mas quero compactar somente arquivo com um determinada data....
vi a opcao -N no tar, mas nao consegui utiliza-la...alguem tem ideia de como posso fazer isso ?
obrigado
Versão Imprimível
Ae galera, to precisando compactar usando o tar, mas quero compactar somente arquivo com um determinada data....
vi a opcao -N no tar, mas nao consegui utiliza-la...alguem tem ideia de como posso fazer isso ?
obrigado
Vc quer criar um pacote com arquivos que foram criados ou modificados em uma determinada data? ou criar um pacote e o nome do pacotem contém um data?
Criei este script, vê se pode te ajudar.
coloquei um echo " " a mais, pois não sei porque o \n não tava criando um nova linha. :|
Nesse caso eu nõa fiz um pacotão do diretorio, eu pega cada elemento do diretorio, e compacto separadamente, se eu fizer um só arquivo se este corromper eu perco tudo o que foi comapctado.Citação:
#!/bin/bash
dir_bkp=/var/genome/bioinformatica #diretorio que será compactado
diretorio=/backup #diretorio onde será guardado o pacote tar
dia=`date | cut -f3 -d" "` #pega o dia
mes=`date | cut -f2 -d" "` #pega o m6es
ano=`date | cut -f6 -d" "` #pega o ano
hora_inicial=`date | cut -f4 -d" "` #pega a hora inicial
ls $dir_bkp > lista.txt #todos os aqruvos e diretórios são colocados numa lista
lista=`cat lista.txt` #um vetor com os elementos da lista.txt
mkdir $diretorio/$dia$mes$ano #cria diretorio e seu nome é a data atual
echo "Hora inicial: $hora_inicial"
echo "Data inicial: $dia-$mes-$ano as $hora_inicial" >> $diretorio/$dia$mes$ano/backup-$dia-$mes-$ano.log
echo " " >> $diretorio/$dia$mes$ano/backup-$dia-$mes-$ano.log
for i in $lista
do
if [ -d $dir_bkp/$i ] #testa se é um diretorio ou arquivo
then
echo "Iniciando o backup do diretorio $dir_bkp/$i" >> $diretorio/$dia$mes$ano/backup-$dia-$mes-$ano.log
else
echo "Iniciando o backup do arquivo $dir_bkp/$i" >> $diretorio/$dia$mes$ano/backup-$dia-$mes-$ano.log
fi
if [ "$i" = "comum" ] #estou excluindo o diretorio comum do backup pois não me interessa
then
echo "Diretorio $dir_bkp/$i nao sera compactado!" >> $diretorio/$dia$mes$ano/backup-$dia-$mes-$ano.log
echo " " >> $diretorio/$dia$mes$ano/backup-$dia-$mes-$ano.log
continue
else
tar -cjvf $diretorio/$dia$mes$ano/bkp-$i-$dia-$mes-$ano.tar.bz2 $dir_bkp/$i >> $diretorio/$dia$mes$ano/backup-$dia-$mes-$ano.log
echo " " >> $diretorio/$dia$mes$ano/backup-$dia-$mes-$ano.log
fi
done
echo " " >> $diretorio/$dia$mes$ano/backup-$dia-$mes-$ano.log
hora_final=`date | cut -f4 -d" "`
echo "Hora final: $hora_final" >> $diretorio/$dia$mes$ano/backup-$dia-$mes-$ano.log
echo "Hora final: $dia-$mes-$ano as $hora_final"
rm lista.txt
Espero ter ajudado !!
Ab, Duca. :-)
opa amigo, de muita valia seu script...
eu ja havia preparado um dessa maneira, mas o q eu preciso é fazer um pacote com arquivos de datas especificados, modificados ou criados naquela data, e nao colocar uma data no arquivo....hehehe
tipo, tenho um diretorio com um 1000 arquivos, mas so quero compactar arquivos desses diretorio que foram modificados em uma determinada data...
Abracos
Humm...agora fiquei na curiosidade tb, vou dar uma procurada nisso. :-)
Ab, Duca
pode usar as cariaveis do comando date
date +%k:%M:%S' '%d/%m/%Y
%k = hora (1..23)
%M = minutos
%S = segundos
%d = dia
%m = mes
%Y = ano (4 digitos)