fbpx

Comandos Linux – Comando cp

Comando Linux cp

Atualizado: 05/04/2019 por Computer Hope

comando cp

Em sistemas operacionais do tipo Unix, o comando cp faz cópias de arquivos e diretórios.

Este documento descreve a versão GNU / Linux do cp .

Descrição

A forma geral do comando é destino de origem cp , por exemplo:

  cp myfile.txt myfilecopy.txt

Como muitos comandos principais do Linux, se o comando cp for bem-sucedido, por padrão, nenhuma saída será exibida. Para exibir a saída quando os arquivos são copiados, use a opção -v (detalhada).

Por padrão, o cp substituirá os arquivos sem perguntar. Se o nome do arquivo de destino já existir, seus dados serão destruídos. Se você deseja ser solicitado a confirmar antes que os arquivos sejam substituídos, use a opção -i (interativa).

Sintaxe

  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

Opções

-a,
–archive
O mesmo que -dR –preserve = ALL . Ao executar a cópia, tente preservar o máximo possível da estrutura, atributos e metadados do arquivo original. Esses metadados incluem dados do contexto de segurança se você estiver executando o SELinux .
–attributes-onlyNão copie os dados do arquivo, apenas crie um arquivo com os mesmos atributos . Se o arquivo de destino já existir, não altere seu conteúdo. Você pode controlar exatamente quais atributos são copiados com a opção –preserve .
–backup[=control]]Faça um backup de cada arquivo de destino existente que seria substituído ou removido. O parâmetro de controle especifica qual método de controle de versão usar; consulte controle de versão para obter detalhes.

Como um caso especial, o cp –force –backup fará um backup da origem quando source e dest forem o mesmo arquivo regular.

-bComo – backup , mas não aceita um argumento de controle ; o método de controle padrão é sempre usado.
–copy-contentsAo operar recursivamente , copie o conteúdo de arquivos especiais, como FIFOs e dispositivos encontrados em / dev . Você geralmente não deseja usar esta opção, pois pode ter resultados indesejados, como travar para sempre ou encher todo o disco. No entanto, esta opção está disponível para casos de uso especiais e especializados.
-dCopie os links simbólicos em si, em vez dos arquivos a que se referem, e preserve os links físicos entre os arquivos de origem nas cópias. O mesmo que ” –no-dereference –preserve = links “.
-f,
–force
Se um arquivo de destino existente não puder ser aberto, remova-o e tente novamente. Esta opção não tem efeito se a opção -n / –no-clobber for usada. No entanto, ele se aplica independentemente de -i / –interactive ; nenhuma opção cancela o efeito da outra.
-i,
–interactive
Avisar antes de substituir (substitui uma opção -n anterior).
-HSiga os links simbólicos especificados na linha de comando, mas preserve os links descobertos.

Se um dos argumentos na linha de comando for um link simbólico , copie o arquivo referenciado, não o próprio link. No entanto, se um link simbólico for descoberto durante o percurso recursivo, ele será copiado como um link simbólico, não como um arquivo regular.

-l,
–link
Crie links físicos para arquivos em vez de copiá-los.
-L,
–dereference
Sempre siga os links simbólicos na fonte ; se a origem for um link simbólico, copie o arquivo vinculado ao invés do próprio link simbólico. Quando esta opção é especificada, o cp não pode criar links simbólicos nas cópias de destino.
-n ,
–no-clobber
Não substitua um arquivo existente. Se -i / –interactive foi especificado anteriormente, esta opção a substitui. Esta opção não pode ser especificada com -b / –backup , porque os backups são criados apenas quando um arquivo foi substituído.
-P ,
–no-dereference
Nunca siga links simbólicos na fonte ; copiar links simbólicos como links simbólicos. Os links simbólicos existentes encontrados no destino ainda podem ser seguidos.
-pO mesmo que –preserve = mode, propriedade, timestamps .
–preserve = [ attr_list ]Preserve os atributos especificados, separados por vírgula. Os atributos são:

modoPreserve os bits do modo de arquivo (conforme definido com chmod ) e quaisquer ACLs .
propriedadePreserve o proprietário e o grupo (conforme definido com o chown ). A capacidade de preservar esses atributos é restrita da mesma maneira que o uso de chown .
timestampsPreserve a hora do último acesso e modificação do arquivo ( atime e mtime , conforme definido com o toque ), se possível.
ligaçõesPreserve nos arquivos de destino todos os links entre os arquivos de origem. Com -L ou -H , essa opção pode potencialmente copiar links simbólicos como links físicos.
contextoPreserve o contexto de segurança SELinux dos arquivos de origem ou falhe com diagnósticos detalhados.
xattrPreserve atributos estendidos de arquivos de origem ou falhe com diagnósticos detalhados.
tudoPreserve todas as opções acima. O mesmo que especificar todos os atributos acima individualmente, com exceção de que a falha ao copiar o contexto ou o xattr não dará um status de saída de falha.

Se não especificado, o valor padrão de attr_list é ” modo, propriedade, registros de data e hora “.

–no-preserve = attr_listNão preserve os atributos especificados.
–paisCrie diretórios-pai ausentes no destino, se necessário, ao copiar para o diretório de destino, de acordo com o nome do caminho especificado na origem .

Por exemplo, ” cp –parents dir2 / dir3 / file dir1 ” cria o arquivo de destino ” dir1 / dir2 / dir3 / file “, mesmo que dir2 e dir3 não existam atualmente em dir1 .

-R,
-r,
–recursive
Copie diretórios recursivamente.
–reflink = [ quando ]Execute um clone otimizado de CoW (“copiar na gravação”), se o sistema de arquivos de destino suportar. A cópia resultante compartilhará os mesmos bytes em disco que o arquivo original, até que a cópia seja modificada. Esteja ciente de que isso significa que, se os bytes de origem estiverem corrompidos, o destino compartilhará os dados corrompidos.

O parâmetro when define o que acontecerá se a cópia na gravação não for suportada pelo sistema de arquivos de destino. Se when for sempre (o padrão), a cópia falhará. Se automática , a cópia prosseguirá, usando o comportamento padrão da cópia.

–remove-destinationRemova cada arquivo de destino existente antes de tentar abri-lo (contraste com a opção –force , que remove o destino somente após uma falha na tentativa de abrir).
–sparse=whenControlar a criação de arquivos esparsos.

Um arquivo esparso contém “buracos”, onde um buraco é uma sequência de zero bytes que não ocupa espaço físico em disco. Quando o arquivo é lido, os furos são lidos como zeros. Isso pode economizar espaço em disco, pois muitos arquivos contêm longas seqüências de zeros. Por padrão, o cp detecta arquivos esparsos e cria arquivos de destino esparsos também.

O parâmetro when define o que o cp deve fazer quando um arquivo de origem for esparso:

autoSe a fonte for escassa, tente tornar o destino escasso. Se o destino existir e for um arquivo não comum, não tente torná-lo esparso. Esse é o padrão.
semprePara cada sequência suficientemente longa de zero bytes na origem, tente fazer um furo esparso no destino, mesmo se o arquivo de entrada não for esparso. Isso pode ser útil se o sistema de arquivos de origem não suportar arquivos esparsos; um arquivo esparso pode ser criado adequadamente no sistema de arquivos de destino.
NuncaNunca torne o arquivo de saída escasso. Alguns arquivos especiais, como um arquivo de troca, nunca devem ser esparsos. Nesses casos, essa opção deve ser usada.
–strip-trailing-slashesRemova as barras finais de cada argumento de origem .
-s ,
–symbolic-link
Faça links simbólicos em vez de copiar os arquivos. Todos os arquivos de origem devem ser nomes de caminho absolutos começando com uma barra, a menos que os arquivos de destino estejam no diretório atual.
-S ,
–suffix = sufixo
Substitua o sufixo de backup usual.
-t ,
–target-directory = diretório
Copie todos os argumentos de origem no diretório
-T,
–no-target-directory
Trate o destino como um arquivo normal.
-u,
–update
Copie apenas quando o arquivo de origem for mais novo que o arquivo de destino ou quando o arquivo de destino estiver ausente.
-v ,
–verbose
Modo verboso ; explique o que está sendo feito.
-x,
–one-file-system
Apenas opere no sistema de arquivos em que o comando foi executado. Se o cp tentar cruzar a fronteira para outro sistema de arquivos, esses arquivos serão ignorados. Isso inclui unidades em rede, outra partição – qualquer arquivo que reside em um sistema de arquivos com um ponto de montagem diferente.

O diretório que representa o próprio ponto de montagem será copiado, mas não atravessado.

Se -v for especificado, você verá exatamente quais arquivos foram ignorados.

–helpExiba uma mensagem de ajuda e saia.
–versionInformações de versão de saída e saída.

Por padrão, os arquivos de origem esparsos são detectados por uma heurística bruta e o arquivo de destino correspondente também é esparso. Esse é o comportamento selecionado por –sparse = auto . Especifique –sparse = sempre para criar um arquivo de destino esparso sempre que o arquivo de origem contiver uma sequência suficientemente longa de zero bytes. Use –sparse = nunca para inibir a criação de arquivos esparsos.

Quando –reflink [ = sempre ] é especificado, o cp executa uma cópia leve, na qual os blocos de dados são copiados apenas quando modificados. Se isso não for possível, a cópia falha; ou, se –reflink = auto for especificado, cp retornará a uma operação de cópia padrão.

Controle de versão

Ao usar -b / –backup , o sufixo de backup é ‘ ~ ‘, a menos que definido com –suffix ou SIMPLE_BACKUP_SUFFIX . O método de controle de versão pode ser selecionado através da opção –backup = control ou através da variável de ambiente VERSION_CONTROL . Os possíveis valores de controle ou VERSION_CONTROL são:

noneoffNunca faça backups (mesmo se –backup for fornecido).
numberedtFaça backups numerados.
existingnilNumerado se existirem backups numerados, simples caso contrário.
simpleneverSempre faça backups simples.

Como um caso especial, o cp faz um backup da fonte quando as opções de força e backup são fornecidas e a origem e o destino têm o mesmo nome para um arquivo regular existente.

Exemplos

Digamos que você tenha um arquivo chamado picture.jpg em seu diretório de trabalho e deseje fazer uma cópia chamada picture-02.jpg . Você executaria o comando:

  cp picture.jpg foto-02.jpg

… e o arquivo será copiado. Aqui, picture.jpg é a fonte da operação de cópia e picture-02.jpg é o destino. Agora os dois arquivos existem no seu diretório de trabalho.

Os arquivos de origem e destino também podem residir em diretórios diferentes. Por exemplo,

  cp /home/chuck/pictures/picture.jpg /home/chuck/backup/picture.jpg

… fará uma cópia do arquivo /home/chuck/pictures/picture.jpg no diretório / home / chuck / backup . O arquivo de destino também será nomeado como picture.jpg .

Se você é o usuário chuck , pode abreviar seu diretório pessoal (” / home / chuck “) usando um til (” ~ “). Por exemplo,

  cp ~ / pictures / picture.jpg ~ / backup / picture.jpg

… funciona da mesma forma que o comando acima quando executado pelo mandril .

Copiando vários arquivos para um diretório

Ou talvez você queira copiar vários arquivos em outro diretório. Para fazer isso, você pode especificar vários arquivos como origem e um nome de diretório como destino. Digamos que você seja o usuário sally e tenha vários arquivos no diretório / home / sally / pictures / denominado picture-01.jpg , picture-02.jpg etc. e deseja copiá-los para o diretório / Página inicial / Sally / Backup de imagem / . Este comando fará o truque:

  cp ~ / pictures / picture - *. jpg ~ / backup de imagem

Aqui, usamos um curinga (o asterisco ” * “) para indicar que os arquivos de origem são todos os arquivos do diretório / home / sally / pictures cujo nome começa com ” picture- ” e tem a extensão ” .jpg “. Eles serão copiados no diretório / home / sally / picture-backup , assumindo que o diretório já exista. Se não existir, o cp fornecerá uma mensagem de erro e nenhum arquivo será copiado.

Você também pode especificar vários arquivos de origem, um após o outro, e o cp esperará que o argumento final seja um nome de diretório e copie todos eles lá. Por exemplo,

  cp ~ / fotos / foto-01.jpg ~ / fotos / foto-02.jpg ~ / foto-backup

… copiará apenas esses dois arquivos, /home/sally/picture-01.jpg e /home/sally/picture-02.jpg , no diretório / home / sally / picture-backup .

Copiando arquivos recursivamente

Você pode usar o cp para copiar estruturas de diretórios inteiras de um local para outro usando a opção -R para executar uma cópia recursiva. Digamos que você seja o usuário steve e tenha um diretório / home / steve / files , que contém muitos arquivos e subdiretórios. Você deseja copiar todos esses arquivos e todos os subdiretórios (e os arquivos e subdiretórios que eles contêm) para um novo local, / home / steve / files-backup . Você pode copiar todos eles usando o comando:

  cp -R ~ / files ~ / files-backup

… e toda a estrutura de diretórios será copiada para o diretório / home / steve / files-backup . Ao executar uma cópia recursiva:

  • Se o backup de arquivos do diretório já existir, os arquivos do diretório serão colocados dentro.
  • Se o backup de arquivos ainda não existir, ele será criado e o conteúdo do diretório de arquivos será colocado dentro dele.

Outro truque útil é usar o cp para criar links simbólicos para os arquivos de origem. Você já deve estar familiarizado com o uso do comando ln para criar links simbólicos; O cp é uma ótima maneira de criar vários links simbólicos de uma só vez.

O cp cria links simbólicos se você especificar a opção -s . Então, por exemplo,

  cp -s arquivo.txt arquivo2.txt

… cria um link simbólico, file2.txt , que aponta para file.txt .

Você também pode criar links simbólicos a partir de vários arquivos de origem, especificando um diretório como o destino.

NotaPara criar links simbólicos em outro diretório, o cp precisa que você especifique o nome do caminho completo, incluindo o nome completo do diretório, nos nomes dos arquivos de origem. Caminhos relativos não funcionarão.

Digamos que você seja o usuário melissa e tenha um conjunto de arquivos, file01.txt , file02.txt , etc. no diretório / home / melissa / myfiles . Você deseja criar links simbólicos para esses arquivos no diretório existente / home / melissa / myfiles2 . Este comando fará o truque:

  cp -s ~ / meus arquivos / arquivo * .txt ~ / meus arquivos

O diretório myfiles2 agora conterá links simbólicos para o arquivo * .txt no diretório / home / melissa / myfiles . O diretório myfiles2 já deve existir para que a operação seja bem-sucedida; se não existir, o cp fornecerá uma mensagem de erro e nada será copiado.

Isso também funcionará com uma cópia recursiva. Então o comando:

  cp -R -s ~ / meus arquivos ~ / meus arquivos2

… recriará a estrutura de diretórios de / home / melissa / myfiles , incluindo quaisquer subdiretórios e seu conteúdo; todos os arquivos serão criados como links simbólicos para os originais, mas os diretórios não serão links simbólicos, apenas diretórios regulares. Se myfiles2 já existir, o cp cria um diretório dentro dele chamado myfiles que contém a estrutura de diretórios e links simbólicos; se o myfiles2 ainda não existir, ele será criado e conterá os subdiretórios e links simbólicos para os arquivos que o myfiles contém.

Existem outras opções que você pode fornecer ao cp que afetará seu comportamento. Eles são listados, juntamente com a sintaxe precisa do comando, nas seções a seguir.

Faça uma cópia de um arquivo no mesmo diretório

  cp origfile newfile

Cria uma cópia do arquivo no diretório de trabalho chamado origfile . A cópia será nomeada newfile e estará localizada no diretório de trabalho.

CuidadoSe o novo arquivo de destino já existir, ele será substituído sem um prompt de confirmação . Este é o comportamento padrão para todas as operações cp .

Se você deseja ser avisado antes de substituir um arquivo, use a opção -i (interativa). Por exemplo:

  cp -i oldfile newfile

Se o novo arquivo já existir, você será solicitado:

  cp: substituir 'novo arquivo'?

Se você digitar y (ou sim , Y , YES ou qualquer outra combinação de maiúsculas e minúsculas), o novo arquivo será substituído por uma cópia do arquivo de origem . Digitar qualquer outra coisa interromperá a operação.

Copie um arquivo para outro diretório

  cp origfile / directory / subdiretório

Cria uma cópia do arquivo no diretório de trabalho chamado origfile . A cópia estará localizada no diretório / directory / subdiretório e será nomeada origfile .

  cp origfile / directory / subdiretório /.

O mesmo que o comando acima. O ponto de barra ( /. ) Está implícito na forma acima do comando. (O ponto é um arquivo especial em todo diretório Linux que significa “este diretório”.)

Copie um arquivo para outro diretório e atribua um novo nome

  cp origfile / directory / subdiretório / newfile

Cria uma cópia do arquivo no diretório de trabalho chamado origfile . A cópia será nomeada newfile e estará localizada no diretório / directory / subdiretório .

Copie vários arquivos em outro diretório, usando um curinga

  arquivo cp * / diretório / subdiretório

Copie todos os arquivos no diretório de trabalho cujo nome comece com o arquivo no diretório / directory / subdiretório . O asterisco (” * “) é um curinga – um caractere especial que se expande para corresponder a outros caracteres. Especificamente, o curinga do asterisco corresponde a zero ou mais caracteres que não sejam espaços em branco . Por exemplo, este comando copiará todos os arquivos nomeados arquivo , arquivo001 , arquivo.txt , arquivo.jpg , arquivo-arquivo.zip , etc.

  arquivo cp * .jpg / directory / subdiretório

Copie todos os arquivos no diretório ativo cujo nome comece com arquivo e termine com a extensão .jpg . Por exemplo, ele faria cópias de qualquer arquivo chamado file , file001.jpg , file002.jpg ou file-new.jpg , etc. As cópias serão colocadas no diretório / diretório / subdiretório .

Copie uma estrutura de diretório inteira para outro local

  cp -R / um / dois / três / quatro

Copie o diretório dois (localizado no diretório / one ) e tudo o que ele contém, no diretório de destino / three / four . O resultado será chamado / três / quatro / dois . O diretório / três já deve existir para que o comando seja bem-sucedido. Se o diretório quatro ainda não existir no diretório / three , ele será criado.

  cp file1.txt newdir

Copia o arquivo1.txt no diretório de trabalho para o subdiretório newdir .

  cp /home/public_html/mylog.txt /home/public_html/backup/mylog.bak

Copia o arquivo mylog.txt no diretório public_html no diretório public_html / backup como mylog.bak .

  cp -u * .txt newdir

Copie todos os arquivos que terminam em .txt no diretório newdir , mas apenas se os arquivos ainda não existirem no novo diretório ou se os arquivos que estão sendo copiados forem mais recentes.

  cp -R / home / esperança / arquivos / * / home / esperança / backup

Copia recursivamente todos os arquivos, diretórios e subdiretórios do diretório / home / hope / files para o diretório / home / hope / backup . Se o backup do diretório não existir no diretório / home / hope , ele será criado.

cp –backup origfile newfile

Se o novo arquivo já existir, faça um backup do novo arquivo existente antes de substituí-lo por uma cópia do origfile . Por padrão, o backup do novo arquivo será nomeado como novo arquivo ~ .

cp –backup = novo arquivo de origfile numerado

Se o novo arquivo já existir, faça um backup do novo arquivo existente antes de substituí-lo por uma cópia do origfile . O backup do novo arquivo será nomeado como novo arquivo. ~ 1 ~ se não houver outro backup, ou novo arquivo. ~ 2 ~ se houver novo arquivo. ~ 1 ~ , etc.

dd – Copie e converta a codificação de arquivos.
ln – Crie um link, ou um link simbólico, para um arquivo ou diretório.
mv – Mova arquivos e diretórios de um local para outro e, opcionalmente, renomeie-os.

14 de novembro de 2019

Sobre nós

A Linux Force Brasil é uma empresa que ama a arte de ensinar. Nossa missão é criar talentos para a área de tecnologia e atender com excelência nossos clientes.

CNPJ: 13.299.207/0001-50
SAC:         0800 721 7901

sac@linuxforce.com.br

Comercial: 11 3796-7900

Suporte:    11 3796-5900
contato@linuxforce.com.br

Últimos Tweets

Erro ao receber tweets

Administrador Online

Marcio Mariano
Copyright © Linux Force Security  - Desde 2011.