Eu me pergunto por que esse comando exato no dockerfile copia todos os arquivos do diretório de origem no destino, em vez de copiar apenas o diretório inteiro.
21917 holms
4
Acredito que o '/' no final faz a diferença e isso pode explicar sua experiência. Se a fonte incluir a barra à direita, ela copiará o que está apenas no diretório. Se não incluir a barra à direita, ele também copiará o diretório e, em seguida, o conteúdo dentro dele. Minha memória é que esse comportamento varia de acordo com o comando e talvez com o evento do SO um pouco. Aqui está uma referência com mais informações.
OllieBrown
23
Eu diria que se você não deseja incluir a fonte e deseja garantir que tudo seja copiado (links simbólicos, arquivos ocultos) sem copiar a pasta pai de origem, use -ra source /. destino. Isso garantirá que o conteúdo da pasta seja copiado, mas não a própria pasta pai, o que às vezes é útil. E a diferença é o /.
muni764
Isso também parece funcionar corretamente se os diretórios a serem copiados forem links simbólicos, que foi o meu caso de uso.
Gdalya 12/09/18
3
Observe a importância do "Slash dot" na sua fonte, cp -r src/. desteu sei que é mencionado, mas ainda sinto falta dele o tempo todo.
bbeecher
368
Você está procurando o cpcomando Você precisa alterar os diretórios para ficar fora do diretório que está tentando copiar.
Se o diretório que você está copiando for chamado dir1e você desejar copiá-lo para sua /home/Picturespasta:
cp -r dir1/ ~/Pictures/
O Linux diferencia maiúsculas de minúsculas e também precisa de /cada diretório para saber que não é um arquivo. ~é um caractere especial no terminal que avalia automaticamente o diretório inicial do usuário atual. Se você precisa saber o diretório que você está, use o comando pwd.
Quando você não sabe como usar um comando Linux, há uma página de manual à qual você pode se referir digitando:
man [insert command here]
em um prompt do terminal.
Além disso, para concluir automaticamente caminhos longos de arquivos ao digitar no terminal, você pode pressionar Tabdepois de começar a digitar o caminho e será apresentado a você opções ou ele inserirá a parte restante do caminho.
Para esclarecer mais, a -ropção neste irá copiar diretórios recursivamente.
TVann
5
O OP não especificou que ele estava usando o cp -rcomando, mas que não estava funcionando corretamente?
MD XF
4
A razão pela qual incluí as informações sobre as páginas de manual é que esses sinalizadores podem depender da distribuição. No entanto, em sua maior parte, parece -r, --recursivee -Rsão equivalentes. Também dará armadilhas comuns, etc., o que é bom.
Alex W
6
Se você deseja copiar o DIRECTORY de maneira portável e não apenas o conteúdo, deixe o traço à direita na pasta de origem, por exemplo. cp -r dir1 ~/Pictures/
Respostas:
A opção que você está procurando é
-R
.destination
não existir, será criado.-R
meioscopy directories recursively
. Você também pode usar,-r
pois não diferencia maiúsculas de minúsculas./
conforme o comentário de @ muni764 .fonte
cp -r src/. dest
eu sei que é mencionado, mas ainda sinto falta dele o tempo todo.Você está procurando o
cp
comando Você precisa alterar os diretórios para ficar fora do diretório que está tentando copiar.Se o diretório que você está copiando for chamado
dir1
e você desejar copiá-lo para sua/home/Pictures
pasta:O Linux diferencia maiúsculas de minúsculas e também precisa de
/
cada diretório para saber que não é um arquivo.~
é um caractere especial no terminal que avalia automaticamente o diretório inicial do usuário atual. Se você precisa saber o diretório que você está, use o comandopwd
.Quando você não sabe como usar um comando Linux, há uma página de manual à qual você pode se referir digitando:
em um prompt do terminal.
Além disso, para concluir automaticamente caminhos longos de arquivos ao digitar no terminal, você pode pressionar Tabdepois de começar a digitar o caminho e será apresentado a você opções ou ele inserirá a parte restante do caminho.
fonte
-r
opção neste irá copiar diretórios recursivamente.cp -r
comando, mas que não estava funcionando corretamente?-r
,--recursive
e-R
são equivalentes. Também dará armadilhas comuns, etc., o que é bom.cp -r dir1 ~/Pictures/
Usar:
fonte
demo1_copy
já não existem$ ls demo1 demo3 README.md $ cp -R demo1/ demo1_copy/