Comando cp Linux: Guia Completo Com 16 Exemplos Práticos

Comando cp linux

Nesse artigo vamos entender como funciona o comando cp Linux através de um manual completo com 16 exemplos práticos.

O comando cp é muito útil e com certeza fará parte do seu dia a dia como programador quando estiver usando o sistema operacional Linux.

Ou seja, depois de ler esse artigo você será capaz de dominar o comando cp.

Portanto, recomendo prestar muita atenção e separar um tempo para praticar. Vamos lá?

Sobre o comando cp

Primeiramente devemos entender exatamente o que o comando cp faz dentro do terminal Linux.

Com esse comando podemos facilmente fazer cópias de arquivos e diretórios.

Muito simples de entender, porém existem diversas variações desse comando que devemos entender como funciona.

Mas antes de ir para prática, vamos entender a sintaxe desse comando.

Sintaxe do comando cp

Logo abaixo, temos algumas variações de sintaxe do comando cp Linux:

  cp [ opção ] ... [ -T ] destino de origem

  diretório cp [ opção ] ... origem ...

  cp [ opção ] ... -t fonte do diretório ...

  cp --help

  cp --version

Veja também: Os Melhores Cursos GRATUITOS De Programação Com Certificado

Algumas opções do comando cp

  • -b: gera cópia de segurança se o arquivo de destino já existir.
  • -f : substitui arquivos existentes sem pedir confirmação.
  • -i : pede permissão antes de substituir arquivos existentes.
  • -l : cria um link para o arquivo de origem ao invés de copiar o arquivo.
  • -r : copia arquivos e subdiretórios (recursivo).
  • -u : copia apenas quando o arquivo de origem é mais novo que o arquivo de destino ou quando o arquivo de destino não existe.
  • -v : lista os arquivos copiados.
  • −−help : lista as opções disponíveis com o comando.
  • −−version : exibe informação sobre o comando.

Exemplos de utilização

Agora vamos a prática através de 16 exemplos de utilização do comando cp Linux. Vamos lá?

Copiar arquivo para o diretório de destino

Vamos supor que queremos copiar o arquivo / etc / passwd para o diretório / mnt / backup para algum propósito de backup, então execute abaixo do comando cp:

root@programadorviking:~# cp /etc/passwd /mnt/backup/
root@programadorviking:~#

Copiando vários arquivos ao mesmo tempo

Vamos supor que queremos copiar múltiplos (/ etc / passwd, / etc / group e / etc / shadow) ao mesmo tempo para o diretório de destino (/ mnt / backup)

root@programadorviking:~# cp /etc/passwd /etc/group /etc/shadow /mnt/backup/
root@programadorviking:~#

Copiando os arquivos interativamente (-i)

Se você deseja copiar os arquivos de um lugar para outro interativamente, então use a opção “-i” no comando cp, a opção interativa só funciona se o diretório de destino já tiver o mesmo arquivo, exemplo é mostrado abaixo:

root@programadorviking:~# cp -i /etc/passwd /mnt/backup/
cp: overwrite '/mnt/backup/passwd'? y
root@programadorviking:~#

No comando acima, é necessário digitar manualmente ‘y’ para permitir a operação de cópia

Veja também: Os Melhores Cursos GRATUITOS De Programação Com Certificado

Saída detalhada durante o comando de cópia (-v)

Se você quiser a saída detalhada do comando cp, use a opção “-v”, o exemplo é mostrado abaixo:

root@programadorviking:~# cp -v /etc/fstab  /mnt/backup/
'/etc/fstab' -> '/mnt/backup/fstab'
root@programadorviking:~#

Caso você queira usar tanto o modo interativo quanto o modo detalhado, use as opções “-iv”

root@programadorviking:~# cp -iv /etc/fstab  /mnt/backup/
cp: overwrite '/mnt/backup/fstab'? y
'/etc/fstab' -> '/mnt/backup/fstab'
root@programadorviking:~#

Copiando um diretório ou pasta (-r ou -R)

Para copiar um diretório de um lugar para outro, use a opção -r ou -R no comando cp. Vamos supor que queremos copiar o diretório home do usuário do programadorviking para “/ mn / backup”:

root@programadorviking:~# cp -r /home/programadorviking /mnt/backup/
root@programadorviking:~#

No comando acima, a opção -r copiará os arquivos e o diretório recursivamente.

Agora verifique o conteúdo do diretório programadorviking no local de destino:

root@programadorviking:~# ls -l /mnt/backup/programadorviking/
total 24
drwxr-xr-x 2 root root 4096 Feb  3 17:41 data
-rw-r--r-- 1 root root    7 Feb  3 17:41 file_1.txt
-rw-r--r-- 1 root root    7 Feb  3 17:41 file_2.txt
-rw-r--r-- 1 root root    7 Feb  3 17:41 file_3.txt
-rw-r--r-- 1 root root    7 Feb  3 17:41 file_4.txt
-rw-r--r-- 1 root root    7 Feb  3 17:41 file_5txt
-rw-r--r-- 1 root root    0 Feb  3 17:41 file_5.txt
root@programadorviking:~#

Arquivar arquivos e diretório durante a cópia (-a)

Ao copiar um diretório usando o comando cp, geralmente usamos a opção -r ou -R, mas no lugar da opção -r, podemos usar ‘-a’, que arquivará os arquivos e o diretório durante a cópia, como mostrado abaixo:

root@programadorviking:~# cp -a /home/programadorviking /mnt/backup/
root@programadorviking:~# ls -l /mnt/backup/programadorviking/
total 24
drwxr-xr-x 2 root root 4096 Feb  3 17:41 data
-rw-r--r-- 1 root root    7 Feb  3 17:39 file_1.txt
-rw-r--r-- 1 root root    7 Feb  3 17:39 file_2.txt
-rw-r--r-- 1 root root    7 Feb  3 17:39 file_3.txt
-rw-r--r-- 1 root root    7 Feb  3 17:39 file_4.txt
-rw-r--r-- 1 root root    7 Feb  3 17:40 file_5txt
-rw-r--r-- 1 root root    0 Feb  3 17:39 file_5.txt
root@programadorviking:~#

Copie somente quando o arquivo de origem for mais recente que o de destino (-u)

Pode haver alguns cenários em que você deseja copiar os arquivos apenas se os arquivos de origem forem mais recentes que os de destino. Isto pode ser facilmente alcançado usando a opção “ -u ” no comando cp.

Veja também: Os Melhores Cursos GRATUITOS De Programação Com Certificado

No exemplo: 6 copímos o diretório home programadorviking para a pasta / mnt / backup, na pasta home programadorviking temos 5 arquivos txt, vamos editar alguns deles e depois copiar todos os arquivos txt usando “cp -u”.

root@programadorviking:~# cd /home/programadorviking/
root@programadorviking:/home/programadorviking# echo "ProgramadorViking" >> file_1.txt
root@programadorviking:/home/programadorviking# echo "ProgramadorViking" >> file_4.txt
root@programadorviking:/home/programadorviking# cp -v -u  file_*.txt /mnt/backup/programadorviking/
'file_1.txt' -> '/mnt/backup/programadorviking/file_1.txt'
'file_4.txt' -> '/mnt/backup/programadorviking/file_4.txt'
root@programadorviking:/home/programadorviking#

Não sobrescreva o arquivo existente durante a cópia (-n)

Existem alguns cenários em que você não deseja sobrescrever os arquivos de destino existentes durante a cópia. Isso pode ser feito usando a opção ‘-n’ no comando ‘cp’

root@programadorviking:~# cp -i /etc/passwd /mnt/backup/
cp: overwrite '/mnt/backup/passwd'?

Como você pode ver no comando acima, ele está nos solicitando a sobrescrever o arquivo existente, se você usar -n, ele não solicitará a sobregravação e também não sobrescreverá o arquivo existente.

root@programadorviking:~# cp -n /etc/passwd /mnt/backup/
root@programadorviking:~#

Vamos supor que queremos criar link simbólico de um arquivo em vez de copiar usando o comando cp, para tais cenários use a opção ‘-s’ no comando cp, o exemplo é mostrado abaixo:

root@programadorviking:~# cp -s /home/programadorviking/file_1.txt /mnt/backup/
root@programadorviking:~# cd /mnt/backup/
root@programadorviking:/mnt/backup# ls -l file_1.txt
lrwxrwxrwx 1 root root 27 Feb  5 18:37 file_1.txt -> /home/programadorviking/file_1.txt
root@programadorviking:/mnt/backup#

Se você quiser criar um link físico de um arquivo, copie usando o comando cp e, em seguida, use a opção ‘-l’. Exemplo é mostrado abaixo:

root@programadorviking:~# cp -l /home/programadorviking/devops.txt /mnt/backup/
root@programadorviking:~#

Como sabemos em link físico, fonte e arquivo vinculado terão os mesmos números de inode, vamos verificar isso usando os seguintes comandos:

root@programadorviking:~# ls -li /mnt/backup/devops.txt
918196 -rw-r--r-- 2 root root 37 Feb  5 20:02 /mnt/backup/devops.txt
root@programadorviking:~# ls -li /home/programadorviking/devops.txt
918196 -rw-r--r-- 2 root root 37 Feb  5 20:02 /home/programadorviking/devops.txt
root@programadorviking:

Copiando atributos da origem para o destino (somente para atributos)

Se você quiser copiar apenas os atributos da origem para o destino usando o comando cp, use a opção “ –atributes-only ”

root@programadorviking:/home/programadorviking# cp --attributes-only /home/programadorviking/distributions.txt /mnt/backup/
root@programadorviking:/home/programadorviking# ls -l /home/programadorviking/distributions.txt
-rw-r--r-- 1 root root 41 Feb  5 19:31 /home/programadorviking/distributions.txt
root@programadorviking:/home/programadorviking# ls -l /mnt/backup/distributions.txt
-rw-r--r-- 1 root root 0 Feb  5 19:34 /mnt/backup/distributions.txt
root@programadorviking:/home/programadorviking#

No comando acima, nós copiamos o arquivo distribution.txt do diretório home do programadorviking para a pasta / mnt / backup, se você notou, apenas os atributos são copiados e o conteúdo é ignorado. O tamanho do arquivo distribution.txt em / mn / pasta de backup é zero bytes.

Veja também: Os Melhores Cursos GRATUITOS De Programação Com Certificado

Criando backup do arquivo de destino existente durante a cópia (–backup)

O comportamento padrão do comando cp é sobrescrever o arquivo no destino se o mesmo arquivo existir, se você quiser fazer um backup do arquivo de destino existente durante a operação de cópia e usar a opção ‘- backup ‘, o exemplo é mostrado abaixo:

root@programadorviking:~# cp --backup=simple -v /home/programadorviking/distributions.txt /mnt/backup/distributions.txt
'/home/programadorviking/distributions.txt' -> '/mnt/backup/distributions.txt' (backup: '/mnt/backup/distributions.txt~')
root@programadorviking:~#

Se você notou, o backup foi criado e anexado ao símbolo til no final do arquivo. opção de backup aceita os seguintes parâmetros

  • none, off – nunca faça backups
  • numbered, t  – fazer backups numerados
  • existing, nil- backups numerados se existirem numerados, simples, caso contrário,
  • simple, never  – sempre faça backups simples

Preserve mode, ownership e timestamps durante a cópia (-p)

Se você quiser preservar os atributos de arquivo como modo, propriedade e carimbos de data e hora ao copiar, use a opção -p no comando cp. Exemplo é demonstrado abaixo:

root@programadorviking:~# cd /home/programadorviking/
root@programadorviking:/home/programadorviking# cp -p devops.txt /mnt/backup/
root@programadorviking:/home/programadorviking# ls -l devops.txt
-rw-r--r-- 1 root root 37 Feb  5 20:02 devops.txt
root@programadorviking:/home/programadorviking# ls -l /mnt/backup/devops.txt
-rw-r--r-- 1 root root 37 Feb  5 20:02 /mnt/backup/devops.txt
root@programadorviking:/home/programadorviking#

Se você não quiser seguir os links simbólicos da fonte enquanto estiver copiando, use a opção -P no comando cp. Exemplo é mostrado abaixo:

root@programadorviking:~# cd /home/programadorviking/
root@programadorviking:/home/programadorviking# ls -l /opt/nix-release.txt
lrwxrwxrwx 1 root root 14 Feb  9 12:28 /opt/nix-release.txt -> os-release.txt
root@programadorviking:/home/programadorviking#
root@programadorviking:/home/programadorviking# cp -P os-release.txt /mnt/backup/
root@programadorviking:/home/programadorviking# ls -l /mnt/backup/os-release.txt
-rw-r--r-- 1 root root 35 Feb  9 12:29 /mnt/backup/os-release.txt
root@programadorviking:/home/programadorviking#

Nota: O comportamento padrão do comando cp é seguir os links simbólicos na origem durante a cópia.

Copie os arquivos e o diretório usando a opção -f

Pode haver alguns cenários em que o arquivo de destino existente não pode ser aberto nem removido. E se você tiver um arquivo saudável que possa ser copiado no lugar do arquivo de destino existente, use o comando cp juntamente com a opção -f

root@programadorviking:/home/programadorviking# cp -f distributions.txt  /mnt/backup/
root@programadorviking:/home/programadorviking#

Copiar arquivos esparsos usando a opção sparse no comando cp

O Sparse é um arquivo regular que contém uma longa sequência de zero bytes que não consome nenhum bloco de disco físico. Um dos benefícios do arquivo esparso é que ele não consome muito espaço em disco e a operação de leitura nesse arquivo seria bastante rápida.

Vamos supor que temos uma imagem de nuvem esparsa chamada “ubuntu-cloud.img”

root@programadorviking:/home/programadorviking# du -sh ubuntu-cloud.img
12M     ubuntu-cloud.img
root@programadorviking:/home/programadorviking# cp --sparse=always ubuntu-cloud.img /mnt/backup/
root@programadorviking:/home/programadorviking# du -sh /mnt/backup/ubuntu-cloud.img
0       /mnt/backup/ubuntu-cloud.img
root@programadorviking:/home/programadorviking#

Diferentes opções podem ser usadas ao usar o parâmetro esparso no comando cp,

  • sparse=auto
  • sparse-always
  • sparse=never

Conclusão: Comando cp Linux

No artigo de hoje vimo de forma prática como utilizar o comando cp Linux para fazer cópias em diversas situações.

Ou seja, é muito importante dominar esse comando pois ele será parte do dia a dia de um programador que utiliza o Linux como sistema operacional.

Não perca tempo! Dê um passo decisivo em direção ao seu sucesso profissional agora mesmo. Basta clicar no botão abaixo e abrir as portas para mais de 1400 cursos completos, todos com certificados válidos.

ACESSAR CURSOS COM CERTIFICADO

Enfim, espero que tenha gostado do conteúdo e que tenha de ajudado de alguma forma.

Muito obrigado por ler até aqui.

Até o próximo artigo!

Tags: | |

Sobre o Autor

Programador Viking
Programador Viking

DICA EXTRA: Algumas pessoas estão me perguntando qual é o curso que recomendo para quem deseja aprender programação, mesmo sem ter qualquer conhecimento sobre o assunto. Minha recomendação, tanto para quem está iniciando, como para quem já possui mais experiência, é essa AQUI...

0 Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

plugins premium WordPress