Opzioni del comando cp e sovrascrittura senza conferme | yes e barra rovesciata

cp chiede per ogni file se sovrascriverlo quando copi più file, e il lavoro si blocca. Il comando cp è l'abbreviazione di Copy e copia file e directory; questo articolo spiega l'uso di base, le opzioni e 2 modi per sovrascrivere tutto senza conferme.
Il comando cp sovrascrive senza chiedere un file con lo stesso nome nella destinazione. Per evitarlo è impostato [alias cp='cp -i'], così chiede conferma prima di sovrascrivere.
✅ Uso di base
La sintassi di base è la seguente.
cp -[opzioni] <origine: File o directory> <destinazione: percorso o File o directory percorso>Scrivi prima cosa copiare, poi la destinazione o il nuovo nome.

# copia file > file
cp file1 file2
# copia file > dentro una directory
cp file1 dir1/
# copia 2 file > dentro una directory
cp file1 file2 dir1/ testuser]# cp dir1/ dir2/
cp: -r not specified; omitting directory 'dir1/'
Per copiare una directory serve l'opzione -r, -R o -a.
- -r/-R : copia ricorsiva di una directory e del contenuto
- -a : copia ricorsiva che mantiene gli attributi (include -r)
✅ 2 modi per sovrascrivere tutto con cp
Il comando cp chiede [overwrite] perché per cp è impostato l'alias [cp -i].
cp -a
cp: overwrite 'messages_ori'? y
~]# alias cp
alias cp='cp -i'Con uno o due file va bene, ma con molti devi rispondere per ognuno.
In quel caso i due metodi qui sotto sovrascrivono senza conferme.
yes | cp -ar /home/ ./Il primo è mettere [yes |] davanti, che risponde y a ogni domanda così la copia prosegue. Il secondo è mettere una barra rovesciata [\] davanti al comando, che salta l'alias ed esegue il cp originale.
\cp -ar /home/ ./✅ Opzioni del comando cp & simulatore
| Opzione | Descrizione | |
|---|---|---|
| -a | --archiveCopiare mantenendo tutti i permessi, proprietario, gruppo e orari del file originale[mantiene permessi, proprietario, gruppo, orari e altro] + [-d : copia il link simbolico stesso] + [-R : copia ricorsiva delle directory] | |
| -b | Se il file di destinazione esiste già, ne fa un backup prima di copiare | |
| -d | Se l'origine è un link simbolico, copia il link stesso | |
| -f | Se il file di destinazione esiste, lo elimina forzatamente e copia | |
| -i | --interactiveChiede conferma all'utente prima di sovrascriverealias cp='cp -i' | |
| -l(minuscola) | Copia come hard link | |
| -P | Copia il link simbolico così com'è senza seguirlo | |
| -p | Mantiene proprietario, gruppo, permessi e orari dell'originale | |
| -r, -R | Copia le directory ricorsivamente (incluse sottodirectory e file)L'opzione -r non è standard POSIX e può dare problemi con link simbolici e file di dispositivo. | |
| -s | Copia come link simbolico (l'origine va indicata con un percorso assoluto) | |
| -u | Non sovrascrive se il file di destinazione è più recente o uguale | |
| -v | Stampa l'avanzamento della copia (verbose)Mostra un messaggio per ogni copia completata | |
| -x | Non copia quando origine e destinazione sono su file system diversi. |
🔲 -a: mantenere gli attributi dei file & copiare sottodirectory e file
La sola opzione [-a] basta per copiare le sottodirectory mantenendo gli attributi dei file originali. Alcuni script e strumenti di automazione però richiedono esplicitamente [-r], quindi a volte si aggiunge anche [-r] o [-R].
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 il link simbolico stesso]+[-R : copia ricorsiva delle directory]+[--preserve=all]
| Elementi inclusi in --preserve=all | Descrizione |
|---|---|
| mode | Permessi del file (rwx ecc.) |
| ownership | Proprietario (user) e gruppo (group) |
| timestamps | Timestamp come l'ora dell'ultima modifica |
| links | Numero di hard link (mantiene l'inode condiviso) |
| context | Contesto di sicurezza SELinux |
| xattr | Attributi estesi (metadati aggiuntivi salvati con il file) |
| all | Forma breve che include tutti gli elementi sopra |
🔲 -u: copiare solo i file nuovi e modificati
- Copia solo se nella destinazione non c'è un file con lo stesso nome, o quando l'origine è più recente
- Usato spesso per backup e sincronizzazione
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
ℹ️ Informativa sull'affiliazione
I contenuti di questo sito includono link di affiliazione. Se un visitatore acquista un prodotto o un servizio tramite uno di questi link, il sito riceve una commissione dal venditore. In questo processo l'importo pagato dall'acquirente (durante le promozioni l'importo scende↓) non aumenta. Prezzi, sconti e disponibilità indicati si riferiscono al momento della stesura e possono differire da quelli reali: prima di acquistare verifica sempre presso il venditore. I prodotti vengono scelti e valutati secondo criteri propri, e le commissioni non influiscono sull'ordine di presentazione né sul contenuto delle valutazioni.