Após um ano e meio de desenvolvimento, a versão Rsync 3.2.4 está disponível, uma ferramenta para sincronização de arquivos e backup, que minimiza o tráfego através da cópia incremental de alterações. Como transporte, podem ser utilizados ssh, rsh ou o protocolo próprio do rsync. É suportada a organização de servidores rsync anônimos, otimizados para garantir a sincronização de espelhos. O código do projeto é distribuído sob a licença GPLv3.
Entre as mudanças adicionadas:
- Foi proposto um novo método de proteção dos argumentos da linha de comando, que é semelhante à opção anterior '—protect-args' ('-s'), mas não interfere no funcionamento do script rrsync (rsync restrito). A proteção consiste na escape de caracteres especiais, incluindo espaços, ao transmitir solicitações para um interpretador de comandos externo. O novo método não escapa caracteres especiais dentro de um bloco entre aspas, o que permite a utilização de simples marcação de nomes de arquivos entre aspas sem necessidade de escape adicional; por exemplo, agora é permitido o comando 'rsync -aiv host:’a simple file.pdf’ .'. Para reverter o comportamento antigo, foi proposta a opção '—old-args' e a variável de ambiente 'RSYNC_OLD_ARGS=1'.
- Foi resolvido um problema antigo com o tratamento de caracteres de vírgula decimal de acordo com a localidade atual (',' em vez de '.'). Para scripts que esperam processar apenas o caractere '.' em números, caso ocorram incompatibilidades, pode-se definir a localidade como 'C'.
- Uma vulnerabilidade (CVE-2018-25032) no código incluído da biblioteca zlib foi corrigida, evitando um buffer overflow ao tentar comprimir uma sequência de caracteres especialmente construída.
- Foi implementada a opção '—fsync' para chamar a função fsync() em cada operação com o arquivo a fim de descarregar o cache do disco.
- No script rsync-ssl, a opção '-verify_hostname' foi ativada ao usar o openssl.
- Adicionada a opção '—copy-devices' para copiar arquivos de dispositivos como arquivos normais.
- Reduzido o consumo de memória durante a transferência incremental de um grande número de pequenos diretórios.
- Na plataforma macOS, a opção '—atimes' foi garantida para funcionamento.
- Implementada a possibilidade de atualizar os atributos xattrs para arquivos em modo somente leitura, se o usuário tiver permissão para alterar as permissões (por exemplo, ao ser executado com privilégios de root).
- Adicionado e ativado por padrão o parâmetro '—info=NONREG' para exibir avisos sobre a transmissão de arquivos especiais.
- O script rrsync (rsync restrito) foi reescrito em Python. Novas opções «-munge», «-no-lock» e «-no-del» foram adicionadas. Por padrão, o bloqueio das opções «—copy-links» (-L), «—copy-dirlinks» (-k) e «—keep-dirlinks» (-K) está ativado para dificultar ataques que manipulam links simbólicos para diretórios.
- O script atomic-rsync foi reescrito em Python e ampliado com a capacidade de ignorar códigos de retorno diferentes de zero. Por padrão, o código 24 é ignorado, que é retornado quando arquivos desaparecem durante a execução do rsync (por exemplo, o código 24 é retornado para arquivos temporários que estavam presentes durante a indexação inicial, mas foram removidos até o momento da transferência).
- O script munge-symlinks foi reescrito em Python.
Fonte: opennet.ru
