Comando cp

Introdução

o comando 'cp', lisenciado pela FSF – Free Software Foundation, é responsável por fazer cópia de arquivos e diretórios nos sistemas operacionais Unix e Unix-like (*BSD, Linux).

sintaxe

cp [OPÇÕES] ORIGEM DESTINO

ORIGEM e DESTINO, podem ser arquivos ou diretórios, e há diversas opções para se trabalhar com o comando 'cp'.

opções

-a, --archive
       mesmo que -dR --preserve=all

       --backup[=CONTROL]
       realiza o backup de cada arquivo existente no destino

       -b     similar ao --backup mas não aceita argumentos

       -d     mesmo que --no-dereference --preserve=link

       -f, --force
       Se existe um arquivo destino que não pode ser aberto, 
       ele tenta novamente

       -i, --interactive
       modo interativo que exige confirmação do usuário

       -H     Segue os links simbólicos em linha de comando

       -l, --link
       cria links de arquivos em vez de copia-los

       -L, --dereference
       Sempre segue os links simbólicos

       -P, --no-dereference
       Nunca segue os links simbólicos

       -p     mesmo que --preserve=mode,ownership,timestamps

       --preserve[=ATTR_LIST]
       preserva os atributos específicos (default:  mode,
       owner-ship,timestamps), se possível os atributos 
       adicionais:  context, links, xattr, all

       -c     mesmo que --preserve=context

       --no-preserve=ATTR_LIST
       Não preserva os atributos especificados

       --parents
       Usa o caminho completo da origem dos arquivos 
       para o destino da cópia

       -R, -r, --recursive
       Copia os diretórios recursivamente

       --remove-destination
       remover cada arquivo de destino existente antes 
       de tentar abrir-lo (oposto de  --force)

       --sparse=WHEN
       criação de controle de arquivos esparsos

       --strip-trailing-slashes 
              remove qualquer barra ao final de cada argumento de origem

       -s, --symbolic-link
       faze links simbólicos em vez de copiar

       -S, --suffix=SUFFIX
       altera o sufixo usual do backup

       -t, --target-directory=DIRECTORY
      copia todos os argumentos dentro do diretório

       -T, --no-target-directory
       treat DEST as a normal file

       -u, --update
       copia somente quando o arquivo de origem é mais recente 
       que o destino arquivo ou quando o arquivo de destino está em falta
       -v, --verbose
       exibe a execução com detalhes

       -x, --one-file-system
       fixa o sistema de arquivos

       -Z, --context=CONTEXT
       definir o contexto de segurança de cópia

       --help exibe a ajuda

       --version
       apresenta a versão do comando cp

Exemplos

Opções com o '--help' e '--version' não possuem parâmetros de origem e destino.
cp --version
cp (GNU coreutils) 7.4

Para se realizar uma cópia simples não é necessário opções, no exemplo abaixo copia o arq.txt para o home do usuário.
cp /tmp/arq.txt ~/


find + cp

Copiar os arquivos encontrados pelo find em uma estrutura para uma nova arvore:
find . \( -name "*zope.conf" -o -name "zeo.conf" \) ! -path "*homologar*" -exec cp -vap --parent {} /tmp/novoPath/ \;

Copia os arquivos do twiki, exceto os '.svn', os '.log', os ',v' e os '.lease', mantendo a estrutura original (--parents), o modo, o propríetário e o timestamp (-p); exibindo na tela as ações executadas.
find twiki/ ! \( -iwholename '*.svn*' -o -name '*.log' -o -iwholename '*,v' -o -iwholename '*.lease' \) -exec cp --parents -pv {} ~/dirti/ \;


Se por ventura no comando anterior ocorrer algum problema, pode-se continuar de onde foi interrompido com o comando abaixo:
find federativo/ ! \( -iwholename '*.svn*' -o -name '*.log' -o -iwholename '*,v' -o -iwholename '*.lease' \) -exec cp --parents -upv {} ~/dirti/ \;

Referencias

man cp

Atualizações

20111109;

Comentários