Di solito copiamo i file da una posizione a un'altra esistente usando comandi come cp
, rsync
e scp
ecc. Se la posizione di destinazione non esiste, prima la creiamo e quindi il file di copia in quella posizione appena creata. Fino ad ora, questo è il modo in cui di solito copio i file da una posizione all'altra dalla riga di comando. Sapevi che possiamo copiare un file e creare automaticamente la directory di destinazione se non esiste? No? Nessun problema! In questa guida vedremo come copiare file e creare directory di destinazione contemporaneamente, con un solo comando, in Linux.
Si prega di notare che non sto parlando di combinare due comandi. Ad esempio, chiunque potrebbe farlo combinando due comandi come di seguito:
$ mkdir -p destination && cp source_file destination
Ma questo non è un singolo comando. Qui abbiamo usato due comandi, ovvero mkdir
e cp
. In realtà è un comando one-liner. Ora lascia che ti mostri come eseguire la stessa attività utilizzando un solo comando.
Copia file e crea directory di destinazione contemporaneamente in Linux
Possiamo farlo usando in tre diversi metodi. Per prima cosa vedremo come farlo usando install
comando.
Metodo 1:utilizzo di install
comando
L'install
comando copia i file in qualsiasi destinazione a tua scelta in Linux. È usato specialmente per questo scopo da sistemi di build come automake
. Fa parte di GNU coreutils, quindi non è necessario installarlo.
Per copiare un file e creare contemporaneamente la directory di destinazione utilizzando install
comando, esegui semplicemente:
$ install -D source-file destination-directory
Esempio:
Il comando seguente copia un file chiamato sk.txt
a una directory di destinazione denominata ostechnix
. Si prega di notare che la directory di destinazione non esiste. Copieremo il file e creeremo la directory di destinazione allo stesso tempo con install
comando come di seguito:
$ install -D sk.txt ostechnix/sk.txt
Verifica se il file è stato copiato in ostechnix
directory elencandone il contenuto con ls
comando:
$ ls ostechnix/
sk.txt
Vedere? Non ho creato prima la directory di destinazione. Il comando di installazione ha creato automaticamente la directory e ha salvato il file in essa.
Comodo, vero? Infatti! Questa è una delle funzioni utili di install
comando. Si può usare negli script di shell.
Ci sono alcune limitazioni in questo metodo. È necessario menzionare il nome del file di origine alla fine del percorso di destinazione. Se non specifichi il nome del file, install
il comando non lo copierà e visualizzerà il seguente errore:
$ install -D sk.txt ostechnix/
install: target 'ostechnix/' is not a directory: No such file or directory
Puoi copiare un file alla volta. Non è possibile copiare più file su più destinazioni utilizzando install
comando.
Possiamo anche copiare file e modificare la proprietà, i permessi allo stesso tempo usando install
comando come descritto nella seguente guida.
- Come copiare file e modificare contemporaneamente la proprietà e le autorizzazioni
Per maggiori dettagli sul comando di installazione, fare riferimento alla sua pagina manuale.
$ man install
Metodo 2:utilizzo di cp
comando
In genere, utilizziamo cp
comando per copiare i file da un posto all'altro. Il cp
comando ha un'opzione denominata --parents
che ci consente di copiare l'intera struttura di directory del file di origine e salvarlo nella destinazione.
Ad esempio, diciamo, il sk.txt
il file viene salvato in ~/Downloads
directory e volevi copiarlo in ~/Documents
directory. Se copi il file usando cp
comando da ~/Downloads
a ~/Documents
, il file verrà salvato in una struttura di directory come questa -> ~/Documents/Downloads/sk.txt
.
Facciamolo in tempo reale e vediamo cosa succede.
$ cp --parents Downloads/sk.txt ~/Documents/
Ora esegui l'tree
comando per controllare ~/Documents
contenuto della directory:
$ tree Documents/
Documents/
└── Downloads
└── sk.txt
1 directory, 1 file
Ricorda che non abbiamo creato alcuna directory all'interno di ~/Documents
Posizione. Il --parents
opzione del cp
comando ha preservato la struttura della directory del file di origine.
A differenza di install
comando, non è necessario specificare il nome del file alla fine della directory di destinazione.
Questo non è direttamente correlato al nostro argomento. Tuttavia, il cp
il comando ha creato automaticamente le directory di destinazione, ovvero ha preservato la struttura della directory del file di origine.
Metodo 3:utilizzo di rsync
comando
Rsync
è una soluzione ideale per copiare e fare il backup dei dati tra directory locali e remote. Per copiare file e creare directory di destinazione in un momento utilizzando il comando rsync, eseguire:
$ rsync sk.txt ostechnix/
Dove la directory chiamata ostechnix
non deve esistere. Rsync lo creerà automaticamente e salverà il file sorgente al suo interno.
Tra questi tre comandi, preferisco install
comando. Perché posso creare directory nidificate (directory all'interno di un'altra directory) usando install
comando. Il cp
e rsync
i comandi possono creare solo una directory, per quanto ne so. Per favore correggimi se sbaglio.
Lettura correlata:
- Come mantenere intatte la proprietà e le autorizzazioni dei file durante la copia di file o directory