|
CP(1) manual page
Table of Contents
cp - copia file e directory
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] [--]
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.
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. (Nota 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)
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.
- -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.
- -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.
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.
- --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.
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.
POSIX 1003.2.
Questa
pagina descrive cp come si trova nel pacchetto fileutils-3.16; altre versioni
potrebbero differire leggermente. Spedisci correzioni o aggiunte a aeb@cwi.nl,
aw@mail1.bet1.puv.fi o ragnar@lightside.ddns.org [NdT: ovviamente, problemi
nella traduzione devono essere spediti al traduttore, non agli autori].
Segnala bachi nei programmi a fileutils-bugs@gnu.ai.mit.edu.
Table of Contents
|