Como copiar um diretório e seu conteúdo no Linux

Use o comando ‘cp’ para copiar e colar diretórios inteiros de um lugar para outro

Não importa qual sistema operacional você está executando, copiar um arquivo ou uma pasta de um local para outro é a tarefa mais básica que você executa diariamente. Em um dia agitado no trabalho, durante uma atribuição de projeto na escola, ou durante o desenvolvimento de um projeto, copiar arquivos do local A para o local B é inevitável.

A cópia de arquivos ou pastas geralmente é feita usando a GUI. O Linux cuida de seu hábito de trabalhar no terminal, fornecendo um utilitário de linha de comando que permite copiar arquivos ou pastas de um local para outro. Usando o cp comando com uma variedade de opções dá a você a liberdade de copiar arquivos e pastas de várias maneiras.

Deixe-me guiá-lo por este artigo, onde você aprenderá sobre o cp comando e as maneiras de copiar diretórios junto com seu conteúdo.

Opções disponíveis com cp comando

Estas são as opções mais comuns usadas com o cp comando no contexto de copiar um diretório e todo o seu conteúdo.

OpçõesDescrição
-vmodo detalhado (mostra o progresso)
-r / Rcopiar diretórios recursivamente
-nnão sobrescrever um arquivo ou pasta existente
-eusolicitar antes de sobrescrever

Copie um diretório de um local para outro

Vamos começar com o uso mais básico do cp comando. Usaremos este comando com a opção -r.

Usando o -r opção garante que as subpastas e arquivos dentro do diretório que você está copiando também serão copiados.

Sintaxe:

cp -r [source_location] [target_location]

Exemplo:

Eu tenho dois diretórios dentro do meu diretório de trabalho atual chamados ‘projeto’ e ‘espaço de trabalho’.

Neste exemplo, vou usar o cp -r comando para copiar o diretório ‘projeto’ junto com todo o seu conteúdo para um novo local, ou seja, ‘/ home / gaurav / workspace’. Isso significa simplesmente que estou copiando o diretório denominado ‘projeto’ para um diretório denominado ‘espaço de trabalho’.

Este é o conteúdo do diretório ‘projeto’. Usando o ls comando para exibir seu conteúdo.

gaurav @ ubuntu: ~ / project $ ls -al total 288 drwxr-xr-x 6 gaurav gaurav 4096 17 de setembro 18:26. drwxr-xr-x 88 gaurav gaurav 266240 17 set 18:24 .. drwxr-xr-x 2 gaurav gaurav 4096 17 set 18:25 dem1, drwxr-xr-x 2 gaurav gaurav 4096 17 set 18:25 dem2 drwxr-xr -x 2 gaurav gaurav 4096 17 set 18:25 dem3 drwxr-xr-x 2 gaurav gaurav 4096 17 set 18:25 dem4 -rw-r - r-- 1 gaurav gaurav 24 set 17 18:26 temp.c gaurav @ ubuntu: ~ / projeto $

Agora, usando o cp -r comando podemos copiar o diretório ‘projeto’ para qualquer local desejado.

gaurav @ ubuntu: ~ $ cp -r / home / gaurav / project / home / gaurav / espaço de trabalho gaurav @ ubuntu: ~ $

Saída:

gaurav @ ubuntu: ~ / workspace $ ls -al total 408 drwxrwxr-x 4 gaurav gaurav 4096 17 de setembro 18:27. drwxr-xr-x 88 gaurav gaurav 266240 17 de setembro 18:24 .. drwxrwxr-x 3 gaurav gaurav 4096 22 de março de 2018 .metadata drwxr-xr-x 6 gaurav gaurav 4096 17 de setembro 18:27 projeto -rw-r - r - 1 gaurav gaurav 1535 16 de setembro 17:13 source.c gaurav @ ubuntu: ~ / workspace $ 

Na saída acima, podemos ver que o diretório ‘projeto’ é copiado do local original para este novo local ‘/ home / gaurav / workspace’. Agora, vamos abrir o diretório ‘projeto’ e verificar se todo o conteúdo dentro dele também foi copiado.

gaurav @ ubuntu: ~ $ cd ./workspace/project gaurav @ ubuntu: ~ / workspace / project $

Observação: Eu tenho usado ./ aqui em vez de inserir o caminho completo. Significa simplesmente que é o caminho do meu diretório inicial e a área de trabalho está localizada no meu diretório inicial ou no diretório de trabalho atual. Para mais esclarecimentos sobre isso, você pode verificar este artigo.

Saída:

gaurav @ ubuntu: ~ / workspace / project $ ls -al total 28 drwxr-xr-x 6 gaurav gaurav 4096 17 set 18:27. drwxrwxr-x 4 gaurav gaurav 4096 set 17 18:27 .. drwxr-xr-x 2 gaurav gaurav 4096 set 18:27 dem1, drwxr-xr-x 2 gaurav gaurav 4096 set 17 18:27 dem2 drwxr-xr-x 2 gaurav gaurav 4096 17 set 18:27 dem3 drwxr-xr-x 2 gaurav gaurav 4096 17 set 18:27 dem4 -rw-r - r-- 1 gaurav gaurav 24 set 17 18:27 temp.c gaurav @ ubuntu: ~ / workspace / project $ 

A partir desta saída, podemos concluir que todo o conteúdo do diretório ‘projeto’ também é movido para o novo local.

Copiar vários diretórios de um local para outro

Para copiar vários diretórios, cp O comando pode ser usado da mesma maneira mencionada acima. A única alteração aqui será que você precisará inserir os vários caminhos de origem dos vários diretórios a serem copiados.

Sintaxe:

cp -r [source_path_1] [source_path_n] [destination_path]

Vamos verificar este comando com um exemplo.

Exemplo:

gaurav @ ubuntu: ~ / workspace $ cp -r ./snap ./project / home / gaurav / tomcat

Aqui, copiei dois diretórios ‘snap’ e ‘project’ do meu diretório de trabalho atual para um novo local ‘/ home / gaurav / tomcat’.

Agora vamos verificar se os diretórios foram copiados com seu conteúdo para o novo local.

gaurav @ ubuntu: ~ / tomcat $ ls -al total 9316 drwxrwxr-x 5 gaurav gaurav 4096 19 de setembro 12:16. drwxr-xr-x 88 gaurav gaurav 266240 Set 19 12:15 .. drwxr-xr-x 6 gaurav gaurav 4096 Set 19 12:16 projeto drwxr-xr-x 7 gaurav gaurav 4096 Set 19 12:16 snap

Verificar se o conteúdo desses diretórios também é copiado.

gaurav @ ubuntu: ~ / tomcat / snap $ ls couchdb eclipse htop pycharm-community vim-editor gaurav @ ubuntu: ~ / tomcat / snap $ 
gaurav @ ubuntu: ~ / tomcat / project $ ls dem1, dem2 dem3 dem4 temp.c gaurav @ ubuntu: ~ / tomcat / project $

Usando cp comando com modo detalhado

Usando o cp comando com a opção -v ativa o modo detalhado. Este recurso exibe os arquivos no terminal que estão sendo copiados. O nome do arquivo ou pasta que está sendo copiado é exibido em seu terminal.

Sintaxe:

cp -vr [source_directory] [target_location_path]

Exemplo:

gaurav @ ubuntu: ~ $ cp -vr ./workspace/apache ./space

Neste exemplo, o diretório ‘apache’ é copiado para uma nova pasta ‘espaço’. Eu usei o -v opção com -r, para que todo o conteúdo do diretório apache também seja copiado.

Saída:

'./workspace/apache' -> './space/apache' './workspace/apache/apache-tomcat-8.0.52.tar.gz' -> './space/apache/apache-tomcat-8.0. 52.tar.gz 'gaurav @ ubuntu: ~ $

A saída exibe o diretório que está sendo copiado. O mesmo processo pode ser feito no caso de copiar vários arquivos.

Evite sobrescrever ao usar cp comando

Às vezes, ao usar o cp comando para copiar vários arquivos ou pastas, você pode acabar sobrescrevendo arquivos que já foram copiados para o novo local. Para evitar isso, é aconselhável usar o -eu opção com o cp comando. Isso o avisará antes de sobrescrever qualquer arquivo ou pasta.

Sintaxe:

cp -ri [source_directory_path] [target_location_path]

Observação: Aqui, na sintaxe que usei -r opção também. Isso copiará também o conteúdo dos diretórios. Também irá verificar se alguma dessas subpastas e arquivos dentro do diretório estão sendo sobrescritos.

Exemplo:

gaurav @ ubuntu: ~ $ cp -ri ./workspace/snap ./tomcat cp: overwrite './tomcat/snap/pycharm-community/current'?

Aqui, tentei copiar um diretório chamado ‘snap’ para um novo local. Mas o nome do diretório ‘snap’ já existe no novo local. Conseqüentemente, o terminal me avisará antes de sobrescrever o diretório snap existente.

Você pode digitar 'sim' ou 'Não‘Como a resposta a este prompt.

No caso, se você não usar o -eu opção, o diretório existente será substituído pelo novo diretório.

Ignorar a substituição de arquivos e diretórios com cp comando

Podemos usar o -n opção de instruir diretamente o terminal a nunca sobrescrever e simplesmente ignorar arquivos e diretórios semelhantes ao usar o cp comando.

Sintaxe:

cp -nr [source_directory_path] [target_location_path]

Usando este comando, você pode ter certeza de que seus arquivos e pastas não serão sobrescritos.

Exemplo:

gaurav @ ubuntu: ~ $ cp -ri ./workspace/snap ./tomcat gaurav @ ubuntu: ~ $

Aqui, o diretório ‘snap’ já existe no local de destino. Portanto, usando -n opção irá garantir que este diretório não seja sobrescrito.

diferente -eu opção, aqui você não será questionado sobre a substituição.

Conclusão

Usando o cp comando para copiar diretórios e seu conteúdo no Linux é um processo fácil. Para saber mais sobre o cp comando com outras opções disponíveis, você pode verificar a página de manual digitando man cp em seu terminal Linux.