Em 27 de outubro de 2011 13:13, Flavio Henrique Araque Gurgel
<fha...@gmail.com> escreveu:
>> Em outras palavras, "veja se já existe o arquivo (%f) no destino
>> (/var/lib/pgsql/archives/) e *se não existir* (test ! -f ...) copie o
>> arquivo a ser arquivado (%p) para lá".
>
> E pra quê você faz isso?
> Não vi necessidade nenhuma. O PostgreSQL só copia o arquivo *uma* vez
> e o faz até garantir que *foi copiado*.
> Bastaria o comando "cp".

Sim, bastaria um 'cp' com a opção '-i' o que deixaria o comando mais
ou menos como um 'cp -i %p /archives/%f < /dev/null', o que não é
portável para algumas plataformas, onde no caso de ele não consegui
substituir ele retorna 0, e o PostgreSQL acaba "achando" que rodou com
sucesso, o que não ocorreu.

Um exemplo para ficar mais claro, reproduzido num RHEL4 e num Ubuntu 10.04.

$ echo abc  > arquivo1
$ echo def > arquivo2
$ /bin/cp -i  arquivo2 arquivo1 < /dev/null   # a documentação
*recomendava* isso
$ echo $?

Acima deveria retornar um codigo diferente de 0 já que a copia
anterior não foi feita, mas ele retorna '0'

$ diff -s arquivo1 arquivo2
1c1
< abc
---
> def


A própria documentação foi modificada *sugerindo* o uso do "test ! -f"
para que possam ser evitadas situações como esta.

-- 
Dickson S. Guedes
mail/xmpp: gue...@guedesoft.net - skype: guediz
http://guedesoft.net - http://www.postgresql.org.br
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a