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