O segundo exemplo lê os dados em lote via entrada padrão, para que o arquivo em lotes não precise ser copiado primeiro na máquina remota. Este exemplo evita o script foo.sh porque precisava usar uma opção --read-batch modificada, mas você poderia editar o arquivo de script se desejasse utilizá-lo (apenas certifique-se de que nenhuma outra opção esteja tentando usar o padrão entrada, como a opção "--exclude-from = -").
Ressalvas:
A opção de leitura em lote espera que a árvore de destino que está sendo atualizada seja idêntica à árvore de destino usada para criar o conjunto de arquivos de atualização em lote. Quando é encontrada uma diferença entre as árvores de destino, a atualização pode ser descartada com um aviso (se o arquivo já estiver atualizado) ou a atualização do arquivo pode ser tentada e, em seguida, se o arquivo falhar na verificação , a atualização descartada com um erro. Isso significa que deve ser seguro executar novamente uma operação de lote de leitura se o comando for interrompido. Se você deseja forçar a tentativa de atualização em lote sempre, independentemente do tamanho e data do arquivo, use a opção -I (ao ler o lote). Se ocorrer um erro, a árvore de destino provavelmente estará em um estado parcialmente atualizado. Nesse caso,
A versão rsync usada em todos os destinos deve ser pelo menos tão nova quanto a usada para gerar o arquivo em lotes. O Rsync sofrerá um erro se a versão do protocolo no arquivo em lotes for muito nova para o rsync de leitura em lote. Consulte também a opção --protocol para obter uma maneira de fazer com que o rsync criado gere um arquivo em lotes que um rsync mais antigo possa entender. (Observe que os arquivos em lote foram alterados na versão 2.6.3, portanto, misturar versões anteriores a versões novas não funcionará.)
Ao ler um arquivo em lotes, o rsync forçará o valor de certas opções a corresponderem aos dados no arquivo em lotes, se você não os definir para o mesmo que o comando de gravação em lote. Outras opções podem (e devem) ser alteradas. Por exemplo, as alterações --write-batch para --read-batch, --files-from são descartadas e as opções --filter / - include / - exclude não são necessárias, a menos que uma das opções --delete seja especificada .
O código que cria o arquivo BATCH.sh transforma qualquer opção de filtro / inclusão / exclusão em uma única lista que é anexada como um documento "aqui" ao arquivo de script do shell. Um usuário avançado pode usar isso para modificar a lista de exclusões, se desejar uma alteração no que é excluído por --delete. Um usuário normal pode ignorar esses detalhes e apenas usar o script de shell como uma maneira fácil de executar o comando --read-batch apropriado para os dados em lote.
O modo de lote original no rsync foi baseado em "rsync +", mas a versão mais recente usa uma nova implementação.
remote destination is not allowed with --read-batch