Opções do comando cp e sobrescrever tudo sem confirmação | yes e barra invertida

cp pergunta, a cada arquivo, se deve sobrescrevê-lo quando você copia vários arquivos, e o trabalho trava. O comando cp é a abreviação de Copy e copia arquivos e diretórios; este post traz o uso básico, as opções e 2 jeitos de sobrescrever tudo sem confirmação.
O comando cp sobrescreve sem perguntar um arquivo de mesmo nome no destino. Para evitar isso, [alias cp='cp -i'] está configurado, e assim ele pede confirmação antes de sobrescrever.
✅ Uso básico
A sintaxe básica é a seguinte.
cp -[opções] <origem: Arquivo ou diretório> <destino: caminho ou Arquivo ou diretório caminho>Escreva primeiro o que vai copiar e depois o destino ou o novo nome.

# copiar arquivo > arquivo
cp file1 file2
# copiar arquivo > para dentro de um diretório
cp file1 dir1/
# copiar 2 arquivos > para dentro de um diretório
cp file1 file2 dir1/ testuser]# cp dir1/ dir2/
cp: -r not specified; omitting directory 'dir1/'
Para copiar um diretório é preciso a opção -r, -R ou -a.
- -r/-R : copia recursiva de um diretório e do conteúdo
- -a : cópia recursiva mantendo atributos (inclui -r)
✅ 2 jeitos de sobrescrever tudo com cp
O comando cp pergunta [overwrite] porque o alias [cp -i] está configurado para o cp.
cp -a
cp: overwrite 'messages_ori'? y
~]# alias cp
alias cp='cp -i'Com um ou dois arquivos tudo bem, mas com muitos é preciso responder para cada um.
Nesse caso, os dois métodos abaixo sobrescrevem sem confirmação.
yes | cp -ar /home/ ./O primeiro é pôr [yes |] na frente, o que responde y a cada pergunta e a cópia segue direto. O segundo é pôr uma barra invertida [\] antes do comando, o que pula o alias e roda o cp original.
\cp -ar /home/ ./✅ Opções do comando cp & simulador
| Opção | Descrição | |
|---|---|---|
| -a | --archiveCopiar mantendo todas as permissões, dono, grupo e horários do arquivo original[mantém permissões, dono, grupo, horários e mais] + [-d : copia o próprio link simbólico] + [-R : copia diretórios recursivamente] | |
| -b | Se o arquivo de destino já existir, faz backup dele antes de copiar | |
| -d | Se a origem for um link simbólico, copia o próprio link | |
| -f | Se o arquivo de destino existir, apaga à força e copia | |
| -i | --interactivePede confirmação ao usuário antes de sobrescreveralias cp='cp -i' | |
| -l(minúsculo) | Copia como link físico | |
| -P | Copia o link simbólico como está, sem segui-lo | |
| -p | Mantém dono, grupo, permissões e horários do original | |
| -r, -R | Copia diretórios recursivamente (inclui subdiretórios e arquivos)A opção -r não é padrão POSIX e pode dar problemas com links simbólicos e arquivos de dispositivo. | |
| -s | Copia como link simbólico (a origem deve ser um caminho absoluto) | |
| -u | Não sobrescreve quando o arquivo de destino é mais novo ou igual | |
| -v | Mostra o andamento da cópia (verbose)Mostra uma mensagem para cada cópia concluída | |
| -x | Não copia quando origem e destino estão em sistemas de arquivos diferentes. |
🔲 -a: manter atributos dos arquivos & copiar subdiretórios e arquivos
Só a opção [-a] já basta para copiar subdiretórios mantendo os atributos dos arquivos originais. Mas alguns scripts e ferramentas de automação exigem [-r] explicitamente, então às vezes se junta [-r] ou [-R] também.
testuser]# cp -a dir1 dir2
testuser]# ll dir*
dir1:
total 0
-rw-r--r-- 1 root root 0 Jun 8 14:11 file1
-rw-r--r-- 1 root root 0 Jun 8 14:15 file2
dir2:
total 0
-rw-r--r-- 1 root root 0 Jun 8 14:11 file1
-rw-r--r-- 1 root root 0 Jun 8 14:15 file2
testuser]# [-d : copia o próprio link simbólico]+[-R : copia diretórios recursivamente]+[--preserve=all]
| Itens incluídos em --preserve=all | Descrição |
|---|---|
| mode | Permissões do arquivo (rwx etc.) |
| ownership | Dono (user) e grupo (group) |
| timestamps | Carimbos de data como a última modificação |
| links | Número de links físicos (mantém o inode compartilhado) |
| context | Contexto de segurança do SELinux |
| xattr | Atributos estendidos (metadados extras guardados com o arquivo) |
| all | Forma curta que inclui todos os itens acima |
🔲 -u: copiar só arquivos novos e alterados
- Copia só quando não há arquivo de mesmo nome no destino, ou quando a origem é mais nova
- Muito usado em backups e sincronização
testuser]# cp -u file1 file2
testuser]# ll file*
-rw-r--r-- 1 root root 0 Jun 8 14:11 file1
-rw-r--r-- 1 root root 0 Jun 8 14:30 file2
ℹ️ Aviso de afiliados
O conteúdo deste site contém links de afiliados. Quando um visitante compra um produto ou serviço por meio de um desses links, o site recebe uma comissão do vendedor. O valor que o comprador paga (em promoções, ele diminui ↓) não aumenta por causa disso. Preços, descontos e informações de estoque valem para o momento em que o texto foi escrito e podem ter mudado, por isso confirme com o vendedor antes de comprar. Os produtos são escolhidos e avaliados por critérios próprios, e o recebimento de comissão não influencia a ordem de apresentação nem o conteúdo das avaliações.