5.3 Copia di file o directory
In GNU/Linux è possibile copiare i file e le directory con il comando cp (man page cp(1))
(copy).
____________________________________________________________________
Comando: cp
Path: /bin/cp
SINTASSI
$ cp [option] source dest
DESCRIZIONE
-
option è l’insieme delle opzioni che modificano il comportamento di cp. Può assumere i
seguenti valori:
-
-a | --archive
come -dpR;
-
-b | --backup[=control]
effettua un backup di ogni file di destinazione esistente (control può
assumere i valori riportati nella tab. 5.1). L’indicazione del backup
può essere effettuata anche tramite l’impostazione della variabile di
ambiente VERSION_CONTROL;
| Tabella 5.1: | Tipi di backup effettuabili con cp. |
|
- --copy-contents
copia il contenuto dei file speciali in caso di copia ricorsiva;
-
-d come --no-dereference --preserve=links;
-
-P | --no-dereference
copia i symbolic link così come sono (non copia il file al quale essi si
riferiscono);
-
-f | --force
?;
-
-i | --interactive
chiede conferma prima di sovrascrivere eventuali file esistenti;
-
-H segue i symbolic link specificati sulla riga di comando (considera i file ai
quali essi si riferiscono) (default);
-
-l | --link
crea un hard link a source anziché copiare il file;
-
-L | --dereference
segue sempre i symbolic link (considera i file ai quali essi si
riferiscono);
-
-p come --preserve=mode,ownership,timestamps;
-
--preserve[=attr_list]
mantiene gli attributi dei file o directory da copiare, specificati da attr_list
(un elenco di keyword separate dal carattere ‘,’ - v. tab. 5.2).
Per default vengono mantenuti gli attributi mode, ownership e
timestamps;
| Tabella 5.2: | Attributi degli oggetti del filesystem mantenibili
nella copia con cp. |
|
-
--no-preserve[=attr_list]
non mantiene gli attributi dei file o directory da copiare, specificati da
attr_list (v. tab. 5.2);
-
--parents
sposta i file o directory indicati da source nella directory indicata da
desct;
-
-R | -r | --recursive
copia i file e directory presenti in tutto il sottoalbero indicato da source (in
maniera ricorsiva);
-
--remove-destination
cancella i file di destinazione esistenti prima di rimpiazzarli con i file da
copiare;
-
--reply={yes|no|query}
specifica come gestire il caso in cui esista già un file o directory con lo
stesso nome di quello specificato da dest: yes indica di rimpiazzare il file
esistente (il contenuto file esistente sarà perduto - comportamento di
default), no indica di non rimpiazzare il file esistente (il file non verrà
copiato affatto), query indica di richiedere all’utente se rimpiazzare o meno
il file esistente;
-
--sparse=when
indica se copiare come sono o meno gli sparse file (v. tab. 5.3);
| Tabella 5.3: | Copia di sparse file con cp. |
|
-
--strip-trailing-slashes
elimina tutti gli eventuali caratteri slash (/) presenti nella parte finale del
nome dei file o directory da copiare;
-
-s | --symbolic-link
crea un symbolic link anziché copiare il file;
-
-S | --suffix=suffix
indica il suffisso (suffix) da utilizzare per i file di backup (per default è
‘~’);
-
--target-directory=directory
sposta i file indicati da source nella directory directory;
-
-u | --update
copia soltanto i file specificati da source più nuovi rispetto a quelli di
destinazione o non esistenti nella directory di destinazione;
-
-v | --verbose
visualizza dei messaggi di informazione;
-
-x | --one-file-system
effettua la copia rimanendo all’interno dello stesso filesystem;
-
--help visualizza un aiuto sommario di cp;
-
--version
visualizza la versione di cp;
-
source specifica il nome del file o della directory da copiare (sorgente);
-
dest specifica il nome del file o della directory in cui devono essere copiate le
informazioni (destinazione);
_______________________________________________
Ad esempio, il comando
$ cp pippo pluto
copia il file pippo nel file pluto, all’interno della working directory, mentre il
comando
$ cp pippo /home/daniele/prova/pluto
copia il file pippo presente nella working directory, nel file pluto nella directory
/home/daniele/prova. Il comando
$ cp -puv /home/daniele/prova/* .
copia tutti i file più recenti presenti nella directory /home/daniele/prova/ all’interno
della working directory, preservandone il proprietario, i permessi di accesso e la data/ora, e
visualizza i nomi dei file effettivamente copiati.