+ Responder ao Tópico



  1. #1

    Padrão Compactar arquivos com data especifica

    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

  2. #2

    Padrão Re: Compactar arquivos com data especifica

    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. :|

    #!/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
    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.

    Espero ter ajudado !!
    Ab, Duca. :-)



  3. #3

    Padrão Re: Compactar arquivos com data especifica

    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

  4. #4

    Padrão Re: Compactar arquivos com data especifica

    Humm...agora fiquei na curiosidade tb, vou dar uma procurada nisso. :-)

    Ab, Duca



  5. #5

    Padrão Re: Compactar arquivos com data especifica

    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)