Cp

From Linuzz

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 per‐ messi 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, comporta‐ menti 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 scriven‐ doli 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 con‐ tenuto 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.

torna all'elenco dei comandi


--Marco.g 06:24, 21 June 2007 (EDT)

Personal tools