De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.

find e TZ - ajustes

Colaboração: Márcio C. M. Rezende

Data de Publicação: 19 de junho de 2010

Estava com um problema num comando (gnu) find e precisei ajustar a hora para exibir corretamente os arquivos baseados em uma referência de tempo absoluta.

O comando (gnu) find pode fazer isto com a diretiva opcional -newermt "201006110000", porém a referência é tomada pelo horário local e isto diferencia-se do horário de gravação (UTC) do arquivo.

Usando o comando find:

  find -newermt "201006110000" /srv/dir/bck

Os arquivos que foram gravados às 5:37 não apareciam, apesar de estarem lá.

Solução: utilizar a variável timezone (TZ).

Ajustei esta variável, dentro do scprit para Greenwich e as referências ajustaram-se automaticamente a ela.

Tive a idéia, mas o modo de fazer eu encontrei no artigo Linux / UNIX: display time of different time zones using TZ environment variable.

Nota: o TZ deve conter o valor como um dos nomes dos diretórios usr/share/zoneinfo

Nota: poderia ter mexido nas variaveis internas do script, mas como as obtenho com

  thisyear=`date +%Y`
  thismonth=`date +%D`
  thisday=`date +%D`

teria que partir para aritmética do bash para somar ou subtrair a diferença.

Logo, o script ficou assim:

  #!/bin/bash
  export TZ=Greenwich
  thisyear=`date +%Y`
  thismonth=`date +%m`
  thisday=`date +%d`
  
  thisdir=/srv/bck/$thisyear/$thismonth
  
  find $thisdir -newermt "$thismonth$thisday0000"
  unset TZ

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


Veja a relação completa dos artigos de Márcio C. M. Rezende