Operações apenas em arquivos completos [duplicados]

6

Eu tenho uma máquina na qual os arquivos são enviados por ftp. A partir desta máquina eu gostaria de executar o cronjob e o scp / rsync (simplesmente copiá-los) para máquinas diferentes na mesma rede.

O problema é que não quero copiar arquivos que não são copiados (ainda durante a transferência) Existe a possibilidade de verificar se um arquivo está completo e apenas copiar para outro servidor?

    
por s1c 10.09.2014 / 09:00

2 respostas

4

Você pode usar lsyncd :

Lsyncd watches a local directory trees event monitor interface (inotify or fsevents). It aggregates and combines events for a few seconds and then spawns one (or more) process(es) to synchronize the changes. By default this is rsync.

Você pode especificar o tempo limite após o qual um arquivo foi alterado para ser sincronizado. Definir como, por exemplo cinco vezes o tempo de upload típico e você provavelmente está bem.

    
por 10.09.2014 / 09:15
0

Se a ideia do lsyncd não for do seu agrado - porque " tempo de carregamento típico "é algo destinado a quebrar em um meio como a internet, sem considerar uma faixa maior de tamanhos de upload (de 32K a 1234T), basta pensar em uma retomada de transferência de ftp . Bem, até a minha ideia não ajuda você, receio. Mas que tal usar o lsof ?!?

lsof /home/ftp

Bem, depois de um pouco de atenção na documentação do lsyncd, eu acho que minhas preocupações - nascidas do fraseado " tempo típico de upload " - parecem injustificadas; o inotify padrão que assiste é "CloseWrite", que parece bem. YMMV.

    
por 10.09.2014 / 16:52