rsync - cria um arquivo temporário durante a transferência?

31

Tanto quanto eu posso ver, o rsync não cria o arquivo no diretório de destino até que esteja completo.

Isso deve significar que ele cria o arquivo em um diretório temporário em algum lugar e copia o arquivo no diretório de destino quando ele é concluído.

Primeiramente, isso está correto?

Se for verdade, é possível que o rsync não use um diretório temporário? Em vez disso, crie o arquivo no diretório de destino e continue escrevendo até que esteja completo?

    
por Cheetah 06.04.2013 / 20:17

3 respostas

36

Sim, ele cria um arquivo temporário.

De acordo com a página man , você pode especificar o diretório no qual o arquivo temporário é armazenado com o parâmetro - T como em

-T, --temp-dir=DIR create temporary files in directory DIR

A resposta para a segunda parte da sua pergunta também pode ser encontrada lá:

--inplace

This option changes how rsync transfers a file when the file's data needs to be updated: instead of the default method of creating a new copy of the file and moving it into place when it is complete, rsync instead writes the updated data directly to the destination file.

    
por 06.04.2013 / 20:43
13

Ele cria um arquivo temporário, por padrão no diretório de destino e denominado .<FILE_NAME>.<RANDOM_STRING> . Portanto, se você estiver copiando foo.txt , ele criará um arquivo tmp chamado .foo.txt.GV4H3 ( GV4H3 é a cadeia aleatória que será diferente toda vez que você executá-lo). Você pode controlar esse comportamento usando as opções rsync :

   --partial
          By default, rsync will delete any partially transferred
          file if the transfer is interrupted.  In  some  circum‐
          stances  it  is more desirable to keep partially trans‐
          ferred files. Using the --partial option tells rsync to
          keep  the  partial  file which should make a subsequent
          transfer of the rest of the file much faster.

   --partial-dir=DIR
          A better way to keep partial files than  the  --partial
          option  is  to  specify a DIR that will be used to hold
          the partial data (instead of writing it out to the des‐
          tination file).  On the next transfer, rsync will use a
          file found in this dir as data to speed up the  resump‐
          tion  of  the  transfer and then delete it after it has
          served its purpose.

Por favor, leia as partes relevantes da página rsync man (o seguinte é apenas um pequeno trecho da grande seção sobre como usar --partial-dir ).

    
por 06.04.2013 / 20:43
4

O rsync cria arquivos temporários no diretório de destino. Esse arquivo é nomeado como a fonte, mas com uma extensão. Poderia ser assim:

source: foo.bar 
target temp: foo.bar.hzmkjt7 (hzmkjt7 is just an example) 

A extensão é removida após o arquivo ter sido verificado como uma cópia exata da origem. Durante a propriedade do processo de renomeação, as permissões e a hora da modificação são definidas. Portanto, é possível que você não veja o arquivo por causa das permissões. Certifique-se de que você tenha permissão suficiente para ver todos os arquivos, bem como os que não pertencem a você, para ver os arquivos temporários.

    
por 06.04.2013 / 20:41

Tags