Por que o rsync não tira proveito do comando mv quando o --remove-source-files é especificado?

0

Suponha que eu queira mover uma árvore no sistema de arquivos, por exemplo

/path/to/a
  a.txt
  b.txt

para outra localização com rsync (versão 30 de protocolo 3.0.9), e. com rsync -a --remove-source-files /path/to/a/ /path/to/b/ , por que rsync não descobre que / path / to / a e / path / to / b estão no sistema de arquivos salvo ( rsync é definitivamente capaz de fazer isso, senão não haveria -x argument - a funcionalidade teria de ser disponibilizada sem especificação de -x ) e usa o comando mv que provavelmente irá lucrar com a manipulação no nível do sistema de arquivos, como alterar links e inodes ao invés de ler, editar e apagar todos os arquivos no árvore?

EDIT 1: Experimentei ler e escrever em vez de usar mv em um sistema de arquivos ext4 e reiserfs. Eu não estou procurando insumos como "simplesmente não faz, patches bem-vindos", mas se há algumas decisões explícitas e possivelmente documentadas ou discutidas sobre o design ou casos de uso (como, por exemplo, a resposta de Gilles).

    
por Karl Richter 25.08.2014 / 18:29

1 resposta

2

O rsync é usado com muita frequência para copiar arquivos em um link de rede. Também é usado para copiar arquivos para mídia de backup. Remover arquivos de origem é um uso bastante raro do rsync. Preservar metadados é comumente solicitado, mas opcional. Portanto, é preciso uma combinação de casos de uso incomuns para o rsync ter a oportunidade de mover um arquivo da origem para o destino, em vez de copiá-lo e excluí-lo. Detectar o caso onde é possível exigiria complexidade adicional para algo que raramente acontece.

    
por 26.08.2014 / 04:10