copiando um diretório + renomeando-o

5

Eu quero copiar um diretório de:

path1/dir1

para

path2/dir2

na primeira vez que invoco

cp -r path1/dir1 path2/dir2

não há problema, o dir2 é criado no caminho2

ls path2/dir2

bu na segunda vez, o dir1 é criado no caminho2 / dir2

ls path2/dir2/dir1

Posso obter o comportamento correto usando apenas cp ? (= sem invocar rm -f path2/dir2 )

    
por Pierre 14.04.2014 / 11:53

2 respostas

6

Use a opção -T para cp (GNU cp ):

cp -rT path2/dir2 path1/dir1

Se você usa rsync para isso (que é provavelmente o que você quer, pois evitará copiar arquivos que não foram alterados), você pode acrescentar um / ao diretório de origem para que especificamente o conteúdo seja copiado que o próprio diretório. Por exemplo:

rsync -r path1/dir1/ path2/dir2
    
por 14.04.2014 / 12:01
2

É ambíguo o que você quer que o comportamento seja quando "copia" um diretório para um destino que já existe. Você quer

  • adicionar apenas novos arquivos?
  • adiciona novos arquivos e atualiza arquivos cujo conteúdo foi alterado?
  • adicionar e atualizar arquivos e excluir arquivos no destino que foram removidos da fonte?

Basicamente, o que você considera uma simples operação de cópia é muito mais complicado - muito complicado para cp . Em todos os casos, você deseja usar o comando rsync .

    
por 14.04.2014 / 12:01

Tags