Quando lavori su sistemi Linux e Unix, copiare file e directory è una delle attività più comuni che esegui quotidianamente.
cp
è un'utilità da riga di comando per copiare file e directory su sistemi Unix e Linux.
In questo articolo spiegheremo come usare il cp
comando.
Come usare cp
comando #
La sintassi generale per cp
il comando è il seguente:
cp [OPTIONS] SOURCE... DESTINATION
La SOURCE
può contenere uno o più file o directory come argomenti e la DESTINATION
l'argomento può essere un singolo file o directory.
- Quando il
SOURCE
eDESTINATION
gli argomenti sono entrambi i file, ilcp
comando copia il primo file nel secondo. Se il file non esiste, il comando lo crea. - Quando il
SOURCE
ha più file o directory come argomenti, ilDESTINATION
l'argomento deve essere una directory. In questa situazione, ilSOURCE
i file e le directory vengono spostati nellaDESTINATION
directory. - Quando il
SOURCE
eDESTINATION
gli argomenti sono entrambe le directory, ilcp
comando copia la prima directory nella seconda.
Per copiare file e directory, devi disporre almeno dei permessi di lettura sul file di origine e di quelli di scrittura sulla directory di destinazione. In caso contrario, viene visualizzato un errore di autorizzazione negata.
Copiare file con il comando cp #
Lo scenario più semplice dell'utilizzo di cp
consiste nel copiare un file nella directory di lavoro corrente. Ad esempio, per copiare un file denominato file.txt
a file_backup.txt
, esegui il seguente comando:
cp file file_backup
oppure:
cp file{,_backup}
Per copiare un file in un'altra directory, specificare il percorso assoluto o relativo della directory di destinazione.
Quando come destinazione viene specificato solo il nome della directory, il file copiato ha lo stesso nome del file originale.
Nell'esempio seguente, stiamo copiando il file file.txt
al /backup
directory:
cp file.txt /backup
Se si desidera copiare il file con un nome diverso, è necessario specificare il nome file desiderato. Il comando seguente copierà il file nella directory specificata come new_file.txt
.
cp file.txt /backup/new_file.txt
Per impostazione predefinita, se il file di destinazione esiste, viene sovrascritto. Il -n
l'opzione dice a cp
per non sovrascrivere un file esistente.
Per forzare cp
per richiedere conferma, utilizzare -i
opzione.
cp -i file.txt file_backup.txt
Se vuoi copiare il file solo se è più nuovo della destinazione, invoca il comando con -u
opzione:
cp -u file.txt file_backup.txt
Quando si copia un file, il nuovo file è di proprietà dell'utente che esegue il comando. Usa il -p
opzione per preservare la modalità del file, la proprietà e i timestamp:
cp -p file.txt file_backup.txt
Un'altra opzione che può essere utile è -v
, che dice a cp
per stampare un output dettagliato:
cp -v file.txt file_backup.txt
'file.txt' -> 'file_backup.txt'
Copiare le directory con il comando cp #
Per copiare una directory, inclusi tutti i suoi file e sottodirectory, usa il -R
o -r
opzione.
Nell'esempio seguente, stiamo copiando la directory Pictures
a Pictures_backup
:
cp -R Pictures Pictures_backup
Il comando sopra crea la directory di destinazione e copia ricorsivamente tutti i file e le sottodirectory dall'origine alla directory di destinazione.
Se la directory di destinazione esiste già, la directory di origine stessa e il suo contenuto vengono copiati all'interno della directory di destinazione.
Per copiare solo i file e le sottodirectory ma non la directory di origine, usa il -T
opzione:
cp -RT Pictures Pictures_backup
Un altro modo per copiare solo il contenuto della directory ma non la directory stessa è utilizzare il carattere jolly (*
). Lo svantaggio del comando seguente è che non copia i file e le directory nascosti (quelli che iniziano con un punto .
):
cp -RT Pictures/* Pictures_backup/
Tutte le opzioni che abbiamo utilizzato nella sezione precedente per la copia dei file possono essere utilizzate anche durante la copia delle directory. La differenza principale è che quando copi le directory, devi sempre usare il -R
opzione.
Copia più file e directory #
Per copiare più file e directory contemporaneamente, specificarne i nomi e utilizzare la directory di destinazione come ultimo argomento:
cp file.txt dir file1.txt dir1
Quando si copiano più file, la destinazione deve essere una directory.
Conclusione #
Copia di file e directory con il cp
il comando è un compito semplice. Per ulteriori informazioni sul cp
disponibile opzioni, digita man cp
nel tuo terminale.
Per copiare i file in rete, usa rsync
e scp
utilità.
Se hai domande o feedback, sentiti libero di lasciare un commento.