Flavio Torres wrote:
> tar -czf - $(find /home -name \*.doc) | ssh ...

Junior Polegato - Linux wrote:
> tar -czf - `find /home -iname "*.doc"` | ssh [EMAIL PROTECTED] "cat
> > /backup/arqbackup.tar.gz

Duas respostas virtualmente idênticas, mas ambas incorretas. Os comandos 
acima falham quando qualquer arquivo contiver espaços no nome, além de 
criarem uma vulnerabilidade que permitira acessar arquivos arbitrários 
no sistema. Por exemplo:

/tmp/test% mkdir -p 'x /etc'
/tmp/test% echo 'Arquivo falso.' > 'x /etc/issue .doc'
/tmp/test% tar -cvf test.tar $(find /tmp/test -name '*.doc')
tar: Removing leading `/' from member names
tar: /tmp/test/x: Cannot stat: No such file or directory
/etc/issue
tar: .doc: Cannot stat: No such file or directory
tar: Error exit delayed from previous errors
/tmp/test% tar -xOf test.tar
Fedora release 8 (Werewolf)
Kernel \r on an \m
/tmp/test%

Possíveis comandos corretos são:

    find /home -iname '*.doc' -print0 | xargs -0 tar -czf - | ssh ...
    find /home -iname '*.doc' -exec tar -czf - '{}' + | ssh ...

NUNCA use a saída do comando find como parâmetros de shell. NUNCA. Se é 
para alimentar uma linha de comando com o resultado do find, SEMPRE 
use-o em conjunto com o xargs ou use o parâmetro -exec.

-- 
Juliano F. Ravasi ·· http://juliano.info/
5105 46CC B2B7 F0CD 5F47 E740 72CA 54F4 DF37 9E96

"A candle loses nothing by lighting another candle." -- Erin Majors

* NOTE: Don't try to reach me through this address, use "contact@" instead.
---------------------------------------------------------------------------
Esta lista é patrocinada pela Conectiva S.A. Visite http://www.conectiva.com.br

Arquivo: http://bazar2.conectiva.com.br/mailman/listinfo/linux-br
Regras de utilização da lista: http://linux-br.conectiva.com.br
FAQ: http://www.zago.eti.br/menu.html

Responder a