+ Responder ao Tópico



  1. #1

    Padrão remover arquivos tmp

    Pessoal, blz?

    Será q alguem tem uma dica p/ isso q estou querendo fazer?
    É o seguinte:
    Tenho o samba configurado aki e funcionando blz. E todo dia faço um backup dos arquivos pessoais dos usuários (2ª FULL e de 3ª a sabado incremental). Até ai tudo bem sem problemas.

    Só q eu andie olhando, e existem muito arquivos .tmp (temporarios) q acabam sendo "backpeados" e q é uma ciosa desnecessária. Então para melhorar minha politica de backup, o que quero fazer é q antes do backup ser executado, rode um script q remova esse arquivos .tmp.

    Tenho esse script funcionando + ou -. Segue abaixo o script:

    #!/bin/bash
    find /home/ -name "*.tpm" > lista_a_excluir.txt
    for ARQ in `cat lista_a_excluir.txt` ; do
    rm -f $ARQ
    done

    O script funciona legal para diretorios sem espaço. Mas qdo o nome do diretorio tem masi de uma palavra separado por espaço, o script já não funciona.
    Ex.:

    /home/usuario/teste.tmp -> esse arquivo o script consegue excluir.
    /home/usuario/projeto linux/teste.tmp -> esse arquivo o script já não exclui.

    Até cheguei a colocar manualmente a contra barra mas nada.
    /home/usuario/projeto\ linux/teste.tmp

    o linux sempre entendo como se fossem 2 diretorios, diretorio projeto e diretorio linux.
    rm -f /home/usuario/projeto ::: arquivo ou diretorio não encontrado
    rm -f linux ::: arquivo ou diretorio não encontrado

    Alguém sabe como posso resolver isso???

    Valeu ....

  2. #2
    errado
    Visitante

    Padrão remover arquivos tmp

    Olá!

    Veja:

    Código :
    #!/bin/bash
     
    find /home -name "*.tmp" > teste.txt
     
    num=`wc -l teste.txt|awk '{print $1}'`
    num=`expr $num + 1`
    count=1
     
    while [ $count -lt  $num ]
    do
    	comando=$count"p"
    	arquivo=`sed -n $comando teste.txt`
    	rm "$arquivo"
    	count=`expr $count + 1`
    done

    Isso faz o trabalho. O código não está nem um pouco polido e nem testei à fundo, mas o "lance" é fazer a leitura do arquivo por linhas visto que `for $var in ...` separa por espaços. (sed -n Xp arquivo, onde X é o número da linha).

    ;)

  3. #3

  4. #4

    Padrão remover arquivos tmp

    Show de bola. Era isso mesmo.
    Esta funcionado blz.

    Valeu pelo script.

  5. #5
    whinston
    Visitante

    Padrão incremental

    Citação Postado originalmente por doliveira
    Show de bola. Era isso mesmo.
    Esta funcionado blz.

    Valeu pelo script.

    blz cara, q bom que funcionou.
    tem como vc disponibilizar este incremental que vc está usando ?
    axo que seria bem útil a comunidade, abs.

  6. #6

    Padrão Re: incremental

    Citação Postado originalmente por whinston
    Citação Postado originalmente por doliveira
    Show de bola. Era isso mesmo.
    Esta funcionado blz.

    Valeu pelo script.

    blz cara, q bom que funcionou.
    tem como vc disponibilizar este incremental que vc está usando ?
    axo que seria bem útil a comunidade, abs.

    O script q uso p/ fazer backup incremental, segue abaixo:

    #! /bin/sh
    ######### Descricao: Script de backup
    # # Script: bkp_incremental.sh
    #########

    # Formatacao de data e hora
    dt=`date '+%d%m%Y'`

    echo "Iniciando o Backup"

    echo "Apagando arquivos de backup antigos"
    rm -f /backup/*.gz >/dev/null 2>&1

    echo "Compactando Unipac"
    find /unipac /home -ctime -1 -type f -print |
    tar -czf /backup/Incremental_$dt.tar.gz -T -

    echo "Fim do Backup "

    segue meu cron tb:

    # Atualizaçao do ClamAV (Anti-Vírus)
    03 0 * * * root /usr/bin/freshclam
    # Varredura em Busca de Vírus
    20 1 * * 1-6 root /home/netlogon/varredura.sh
    # Agendamento do Backup
    10 2 * * 1 root /home/netlogon/bkp_full.sh
    10 2 * * 2-5 root /home/netlogon/bkp_incremental.sh

    Como vcs podem observar as 2ª feiras é feito um backup full e de 3ª a 6ª feira é feito o backup incremental, ou seja, é feito backup somente dos arquivos alterados.

    OBS: Observem q o meu backup é feito na madruga (2:10h) então o script esta deacordo com esse horário, pois ele pega os arquivos que foram alterados no dia anterior.

    Espero ter ajudado ....
    Valeu ....

  7. #7
    whinston
    Visitante

    Padrão Entendendo o comando

    Amigo, me dá uma explicação sobre isto:

    find /unipac /home -ctime -1 -type f -print | tar -czf /backup/Incremental_$dt.tar.gz -T -

    Esta é a linha que realmente verifica nos diretórios /unipac e /home se algo mudou ou não, pra entrar no backup

    No Windows, quando você faz um backup normal ou incremental, ele marca o arquivo com uma flag pra saber que o arquivo entrou no backup. No diferencial e cópia já não, ele copia, mas não altera a flag.

    No Unix, como isto tá funcionando?

  8. #8

    Padrão remover arquivos tmp

    Olá whinston,

    O q faço, é usar o find para procurar arquivos q tiveram suas datas alteradas no dia anterior. Isto tb vale para os arquivos criados.

    Funciona + ou - assim, todo arquivo dentro do diretorio especificado, q tiver a data de um dia anterior a execução do comando, será agrupado e compactado.

    Ex.: executo o comando agora, e dentro dos diretórios especificados, todo arquivo q tiver a data de ontem será backpeado.

    Consegui responder sua pergunta????

  9. #9
    whinston
    Visitante

    Padrão + ou -

    ah, ok..
    mas qdo vc copia um arquivo ele não altera a data, altera ?
    tipow.. não modifica um flag nas propriedades do arquivo.

  10. #10

    Padrão Re: + ou -

    Citação Postado originalmente por whinston
    ah, ok..
    mas qdo vc copia um arquivo ele não altera a data, altera ?
    tipow.. não modifica um flag nas propriedades do arquivo.
    Não, fica com a mesma data do arquivo do qual foi copiado. Porém o backup é feito mesmo assim.

    Ok.

  11. #11
    errado
    Visitante

    Padrão remover arquivos tmp

    Cópias, teoricamente, modificam a data sim, até porque um "arquivo" novo é criado. Segue o teste:

    Código :
    niflhein ~ $ cat .bashrc |grep ll=
    alias ll="ls --color -lh"
    niflhein ~ $ file sda
    sda: HTML document text
    niflhein ~ $ ll sda
    -rw-r--r--  1 errado users 1003 Jun  8 06:38 sda
    niflhein ~ $ cp sda dsa
    niflhein ~ $ ll sda dsa
    -rw-r--r--  1 errado users 1003 Jul  6 15:07 dsa
    -rw-r--r--  1 errado users 1003 Jun  8 06:38 sda

    Na movimentação de arquivos é que não muda:

    Código :
    niflhein ~ $ cat .bashrc |grep ll=
    alias ll="ls --color -lh"
    niflhein ~ $ file sda
    sda: HTML document text
    niflhein ~ $ ll sda
    -rw-r--r--  1 errado users 1003 Jun  8 06:38 sda
    niflhein ~ $ mv sda hot
    niflhein ~ $ ll hot
    -rw-r--r--  1 errado users 1003 Jun  8 06:38 hot
    niflhein ~ $ mv hot sda
    niflhein ~ $ ll sda
    -rw-r--r--  1 errado users 1003 Jun  8 06:38 sda

    O motivo do backup ser feito (digo, do `find` selecionar o arquivo) é justamente a mudança de data.

    []'z

  12. #12
    whinston
    Visitante

    Padrão valeu

    valeu cara!

  13. #13

    Padrão remover arquivos tmp

    Qdo faço uma copia usando o windows e colocando do arquivo no "samba", ele mantem a data do arquivo original. Tanto é q um desses arquivos tem data de 2004 e qdo fiz a copia ele continuou com a mesma data.
    Cheguei até olhar pelo linux, e o arquivo estava com dt 2004.

    Porem qdo faço a mesma copia usando o linux, ai sim a copia fica com a data do dia em q foi feita a copia.

    Agora não sei pq cargas d'agua qdo uso o windows ele não altera.

  14. #14

    Padrão remover arquivos tmp

    Só uma obs:

    Qdo falei usando o linux, falei do servidor samba e não um cliente linux acessando esse servidor.

    Seria até uma boa perguntar, será q um cliente linux acesssando o samba a data seria mudada ou não????