Primeiro arquivo em ordem alfabética não copiado com rsync

Primeiro arquivo em ordem alfabética não copiado com rsync

Estou usando o seguinte comando para fazer uma cópia recursiva completa do conteúdo de um diretório para outro:

rsync -avzhe /path1/to1/dir1/* /path2/to2/dir2/

Funciona como esperado, exceto que o primeiro arquivo (em ordem alfabética), seja um diretório ou arquivo, não é copiado. Todos os outros arquivos são copiados. Por que ?

Meu sistema operacional é MacOS 10.14.6, se isso for importante.

Responder1

A -eopção precisa de um argumento, então leva o primeiro nome de arquivo para isso. Não sei por que você deseja, -epois ele define o comando a ser usado para conectar-se ao controle remoto, mas você não está usando um controle remoto. Basta remover o -e.

Responder2

Para fazer uma cópia completa do diretório /path1/to1/dir1chamado /path2/to2/dir2, use

rsync -av /path2/to1/dir1/ /path2/to2/dir2

Não faz sentido usar compactação ( -z) para uma cópia local. A -eopção especifica o comando usado para estabelecer a conexão de rede (é por isso que seu comando falha ao copiar o primeiro arquivo; rsyncusa-o como argumento de opção para a -eopção), portanto, isso também deve ser removido neste cenário.

Além disso, não use *no final do caminho de origem, pois normalmente não corresponderia a nenhum nome oculto. Glovar todos os nomes dir1também poderia expandir para uma lista muito longa para que o comando fosse executado.

Apenas certifique-se de que o caminho de origem termine com uma barra. Uma barra no final do caminho de destino não faz diferença. Remover a barra do caminho de origem copiaria dir1dentro de dir2. Uma barra no final do caminho de origem faz dir2uma cópia do arquivo dir1.

Fora isso, você pode usar -Hpara garantir que os links físicos sejam estabelecidos corretamente no destino e --sparsese você sabe que está copiando arquivos que podem ser esparsos (como imagens de disco pré-alocadas).

Use --deletepara tambémexcluirentradas do destino que não fazem parte da hierarquia do arquivo de origem. Use isso com cuidado. Você pode querer testar a execução com -n( --dry-run) primeiro.

informação relacionada