NOME
cp − copia file e directory
SINTASSI
cp
[opzioni] file percorso
cp [opzioni] file... directory
Opzioni POSIX: [−fipRr]
Opzioni GNU (forma breve): [−abdfilprsuvxPR] [−S SUFFISSO] [−V {numbered,existing,simple}] [−−sparse=QUANDO] [−−help] [−−version] [−−]
DESCRIZIONE
cp copia file (o, eventualmente, directory). È possibile copiare sia un file su una destinazione data, sia un numero arbitrario di file su una directory d’arrivo. Se l’ultimo argomento indica una directory esistente, cp copia ogni file sorgente su quella directory (mantenendo lo stesso nome). Altrimenti, se sono indicati solo due file, copia il primo sul secondo. Si ha un errore se l’ultimo argomento non è una directory e sono presenti più di due argomenti non di opzione.
Perciò, «cp −r /a /b» copia /a su /b/a e /a/x su /b/a/x nel caso in cui /b esiste già, ma copia /a su /b e /a/x su /b/x se /b non esisteva in precedenza.
I permessi dei file e delle directory così create sono identici a quelli dei file originali, AND 0777 e modificati dalla umask utente (a meno che sia usata l’opzione −p). Durante la copia ricorsiva di directory, però, i permessi delle directory create ex novo sono quelli finali OR S_IRWXU (0700), per permettere lettura, scrittura e ricerca nella nuova directory al processo.
Copiando un file su se stesso, non viene fatto niente (a parte produrre un eventuale messaggio d’errore). Copiando su un file esistente, questo viene aperto con «open(path, O_WRONLY | O_TRUNC)». Copiando su un file inesistente, questo viene creato con «open(path, O_WRONLY | O_CREAT, mode)». Se ciò fallisce, il file esiste e ed era stata data l’opzione −f, cp prova a cancellare (unlink) il file esistente, e in caso di successo continua come per un file inesistente.
OPZIONI POSIX
POSIX riconosce quattro opzioni e mezza:
−f |
Rimuove i file di destinazione preesistenti, se necessario (vedi sopra). | ||
−i |
Chiede conferma per sovrascrivere file di destinazione preesistenti (la domanda è scritta su stderr e la risposta letta da stdin; la copia avviene solo in caso di risposta affermativa) −p Conserva proprietario, gruppo, permessi (inclusi i bit setuid e setgid), data di ultima modifica e data di ultimo accesso dei file originali. Nel caso la duplicazione del proprietario o del gruppo fallisca i bit setuid e setgid vengono azzerati (si noti che alla fine originale e copia potrebbero ben avere diverse date d’accesso, costituendo l’operazione di copia un accesso all’originale). | ||
−R |
Copia le directory ricorsivamente, facendo la cosa giusta incontrando oggetti diversi da file ordinari o directory (cioè, la copia di una FIFO o un file speciale è una FIFO o un file speciale). | ||
−r |
Copia le directory ricorsivamente, comportandosi in modo non specificato con oggetti diversi da file ordinari o directory; cioè è permesso, o meglio incoraggiato, che −r sia un sinonimo di −R. In ogni caso, comportamenti bizzarri, come quello della versione GNU attuale di cp (vedi oltre) non è vietato. |
PARTICOLARI GNU
Di norma, i file sono scritti così come sono letti. Per eccezioni, vedi −−sparse oltre.
Di natura, cp non copia directory (ma vedi −r oltre).
cp rifiuta, di norma, di copiare un file su se stesso, con l’eccezione seguente: se vengono date le opzioni −−force −−backup con identici sorgenti e destinazioni , che si riferiscono ad un file normale, cp crea un file di backup, normale o numerato come specificato nel modo usuale. Questo torna utile quando si vuole semplicemente fare un backup di un file esistente prima di modificarlo.
OPZIONI GNU
−a, −−archive
Conserva nella copia quanto è possibile della struttura e degli attributi dei file originali (ma non la struttura di directory). Lo stesso di −dpR.
−d, −−no-dereference
Copia link simbolici come link simbolici piuttosto che copiare i file da essi puntati, e conserva la relazione di hard link tra i file originali anche nelle copie.
−f, −−force
Rimuove i file di destinazione preesistenti e senza mai chiederne conferma.
−i, −−interactive
Chiede conferma per sovrascrivere i file normali preesistenti.
−l, −−link
Esegue collegamenti fisici (hard link) piuttosto che copie per le non-directory.
−p, −−preserve
Conserva proprietario, gruppo, permessi e date dei file originali.
−P, −−parents
Forma il nome di ognuno dei file destinazione aggiungendo al nome della directory indicata uno slash (/) e il nome del file originale. L’ultimo argomento dato a cp deve essere il nome di una directory esistente. Per esempio, il comando «cp −−parents a/b/c dir_esistente» copia il file a/b/c su dir_esistente/a/b/c, creando qualsiasi directory intermedia mancante.
−r |
Copia le directory ricorsivamente, copiando tutte le non-directory e i link non simbolici (FIFO e file speciali) come se fossero file normali. In altre parole, provando a leggere dati da ciascuna sorgente e scrivendoli sulla destinazione. Perciò, con questa opzione, cp può impiantarsi indefinitivamente mentre legge una FIFO o /dev/tty. Questo è un baco: ciò implica che bisogna evitare −r e usare −R se non si conosce il contenuto dell’albero che si sta copiando. L’apertura di un device ignoto, uno scanner, per esempio, ha effetti sconosciuti sull’hardware. |
−R, −−recursive
Copia le directory ricorsivamente, rispettando le non-directory (vedi −r sopra)
−−sparse=QUANDO
Un «file sparso» contiene «buchi»: sequenze di byte nulli che non occupano nessuno blocco fisico sul disco; la chiamata di sistema «read» li legge come se fossero veramente dei byte nulli. Ciò può fare notevolmente risparmiare spazio sul disco ed aumentare la velocità visto che parecchi file binari contengono molti byte nulli consecutivi. Di natura, cp usa un’euristica grossolana per riconoscere buchi nei file sorgenti, e rende sparsi anche i file in uscita.
QUANDO può assumere uno di questi valori:
auto |
Il comportamento di default: il file di output è sparso se lo è quello d’input. | ||
always |
(sempre) Rende sempre sparso il file di output. Ciò può venire utile quando il file d’input sta su un filesystem che non supporta file sparsi mentre il file di output sta su un filesystem che li supporta. | ||
never |
(mai) Non rendere mai sparso il file di output. Se trovi un uso per questa opzione faccelo sapere. |
−s, −−symbolic-link
Crea link simbolici piuttosto che copie di non-directory. Tutti i nomi dei file di origine devono essere assoluti (iniziare con ’/’) a meno che i file di destinazione non siano nella directory corrente. Questa opzione produce semplicemente un messaggio di errore su sistemi che non permettono i link simbolici.
−u, −−update
Non copia una non-directory sopra una destinazione preesistente con la data di modifica uguale o più recente
−v, −−verbose
Stampa il nome di ogni file prima di copiarlo.
−x, −−one-file-system
Salta le sub-directory che sono su dei filesystem diversi da quello da cui si è iniziata la copia.
OPZIONI GNU DI BACKUP
Le versioni GNU
di programmi come cp, mv, ln,
install e patch creano una copia di backup dei
file che stanno per essere sovrascritti, modificati o
distrutti, se ciò viene richiesto. Una simile
richiesta è indicata dall’opzione −b.
Come i file di backup debbano essere chiamati è dato
dall’opzione −V. Nel caso in cui il loro nome
sia dato dal nome dei file originali più un suffisso,
il suffisso è indicato dall’opzione −S.
−b, −−backup
Crea copie di backup dei file che stanno per essere sovrascritti o rimossi.
−S SUFFISSO , −−suffix= SUFFISSO
Aggiunge SUFFISSO a tutti file di backup. Se questa opzione non è specificata, viene usato il valore della variabile ambientale SIMPLE_BACKUP_SUFFIX . Se SIMPLE_BACKUP_SUFFIX non è impostata, il valore di default è «~».
-V METODO, −−version-control=METODO
Specifica come creare il nome dei file di backup. L’argomento METODO può essere «numbered» (o «t»), «existing» (o «nil») oppure «never» (o «simple»). Se questa opzione non è specificata, viene usato il valore della variabile ambientale VERSION_CONTROL . Se VERSION_CONTROL non è impostata, il valore di default è «existing».
Questa opzione
corrisponde alla variabile «version-control» di
emacs. Valori leciti per sono (dove le abbreviazioni
univoche sono accettate):
t, numbered
Crea sempre backup numerati.
nil, existing
Crea backup numerati per i file che già ne hanno, backup semplici per gli altri.
never, simple
Crea sempre backup semplici.
OPZIONI GNU STANDARD
−−help |
Stampa un messaggio di spiegazione sullo standard output ed esce (con successo). |
−−version
Stampa informazioni sulla versione sullo standard output ed esce (con successo).
−− |
Termina l’elenco delle opzioni. |
AMBIENTE
Le variabili LANG, LC_ALL, LC_COLLATE, LC_CTYPE e LC_MESSAGES hanno il solito significato. Per la versione GNU, le variabili SIMPLE_BACKUP_SUFFIX e VERSION_CONTROL controllano la formazione del nome dei backup, come descritto più sopra.
CONFORME A
POSIX 1003.2.
NOTE
Questa pagina descrive cp come si trova nel pacchetto fileutils-4.0; altre versioni potrebbero differire leggermente. Spedisci correzioni o aggiunte a aeb [AT] cwi.nl [NdT: ovviamente, problemi nella traduzione devono essere spediti al traduttore, non agli autori]. Segnala bachi nei programmi a fileutils-bugs [AT] gnu.edu.