Come posso copiare i file in una cartella in un'altra cartella sul terminale Linux?

How Can I Copy Files Folder Into Another Folder Linux Terminal

Quando hai bisogno di copiare il contenuto di una directory in un'altra, nel caso di Linux, ci sono molti strumenti a tua disposizione. Quale usare? Dipende dalla situazione e dalle preferenze personali. In questo articolo, daremo un'occhiata ai modi in cui puoi copiare i contenuti dei file da una cartella all'altra nel terminale. Conterrà alcune delle scelte popolari per diverse situazioni.

Copia di file nel terminale

Copiare il contenuto di una directory in un'altra è un'operazione molto semplice. Tuttavia, hai molte opzioni per farlo. Linux è benedetto con numerosi strumenti per manipolare file e directory attraverso varie azioni.



Tutti i passaggi sono dimostrati su Ubuntu 18.04.1. All'inizio, creiamo una manciata di file fittizi con cui lavorare.



$mkdir -vdir_A



Ora creiamo i file fittizi usando il tocco.

$toccomanichino{1..10}

Creiamo un'altra cartella all'interno di dir_A con una manciata di file fittizi.



$mkdir -vdir_B
$toccomanichino{1..10}

Ora, l'intera struttura della directory dir_A ha questo aspetto.

$alberodir_A

Comando Cp

Il cp Il comando è di gran lunga lo strumento più comune per copiare i file. È uno strumento che viene fornito di default con qualsiasi sistema Linux. La copia di file e directory è l'unico scopo di cp. Supporta una vasta gamma di funzionalità.

Questa è la struttura di base del cp comando.

$cp <opzioni> <fonte> <destinazione>

Ad esempio, facciamo una copia di manichino1 file con il nome dummy1_copy .

$cpdummy1 dummy1_copy

Ora, proviamo a copiare più file contemporaneamente. Per tale operazione, cp richiede che la destinazione sia una directory. Qui, userò l'espressione con caratteri jolly per afferrare tutti i manichino file e inserirli nel ~/Download directory.

$cpmanichino*~/Download

Che ne dici di copiare una directory?

$cp -vrdir_A dir_A_copy

Qui abbiamo usato due bandiere diverse. Diamo una rapida ripartizione di loro.

  • -r: sta per a ricorsivo copia (inclusi eventuali file nascosti). Flag obbligatorio se la copia coinvolge un'intera directory o più.
  • -v: sta per verboso . Lo strumento cp produrrà ogni singola azione che sta eseguendo.

Vuoi seguire i link simbolici? Aggiungi il flag -L.

$cp -Lvr <fonte> <destinazione>

Supponiamo che la directory di destinazione abbia già un file con lo stesso nome. Se vuoi evitare di sovrascrivere, usa il flag -n. Farà in modo che in caso di conflitto, cp non sovrascriverà il file.

$cp -nv <fonte> <destinazione>

Se stai eseguendo un'azione di copia/incolla sensibile, è meglio avere il controllo migliore su ciò che accade, giusto? In tal caso, usa il flag -i. Rappresenta una modalità interattiva in cui cp chiederà conferma ogni volta che si verifica un conflitto.

$cp -io <fonte> <destinazione>

Se sei più interessato, la pagina man è sempre una delle migliori documentazioni. Ulteriori informazioni su cp.

$uomo cp

comando mv

Lo strumento mv è simile allo strumento cp. Tuttavia, invece di copiare, mv sposta file e directory. Rispetto a cp, è più semplice.

La struttura dei comandi di mv è simile a cp.

$mv <opzione> <fonte> <destinazione>

Per spostare il contenuto di dir_A a dir_A_copy , esegui il seguente comando.

$mv -vdir_A/dir_A_copy

Qui, il flag -v è per verboso modalità. Se vuoi spostare solo il contenuto di dir_A, usa invece quello seguente. In questo caso, la directory di destinazione deve esistere in anticipo.

$mv -vdir_A/ *dir_A_copy

Lo strumento mv non ha molto con cui lavorare. Per tutte le opzioni disponibili, controlla la pagina man.

$uomo mv

Comando Rsync

Questo è uno degli strumenti più popolari e potenti per la copia dei file, utilizzato principalmente per il backup. Possiede la capacità di copiare file tramite una connessione remota. A differenza di cp e mv, include anche un sacco di opzioni avanzate di copia dei file che offrono la massima personalizzazione del suo comportamento.

Rsync è famoso soprattutto per il suo algoritmo di trasferimento delta che riduce drasticamente la quantità di dati che devono essere scambiati. Nel caso della sincronizzazione remota, questo consente di risparmiare molta larghezza di banda.

Rsync generalmente non viene preinstallato in nessuna distribuzione Linux. Tuttavia, a causa della sua popolarità, ora è disponibile su tutte le principali distribuzioni Linux. Utilizzo Pkgs.org per scoprire il pacchetto rsync per la tua distribuzione. Supponendo che tu abbia installato rsync, iniziamo.

Innanzitutto, la struttura di comando di base di rsync. È abbastanza simile a cp.

$rsync<opzioni> <fonte> <destinazione>

Prima di iniziare, ecco una manciata di argomenti popolari di rsync.

  • -v : Modalità dettagliata, emette qualsiasi azione eseguita sullo schermo della console.
  • -vv : Modalità dettagliata con maggiori dettagli
  • -R : Modalità ricorsiva, deve essere presente se si copiano le directory
  • -Insieme a : Comprimi dati
  • -a : Archivio dati
  • -n : Dry run, dovrebbe essere eseguito in combinazione con la modalità verbose. Emette semplicemente le azioni se il comando doveva essere eseguito per davvero
  • -Elimina : Elimina i file e le directory nella directory di destinazione se la directory di origine non li contiene più
  • -nessun-file-intero : Forza rsync a usare il suo algoritmo di trasmissione delta, qualunque cosa accada. Utile in scenari in cui è necessario garantire la minima quantità di dati in scrittura.
  • –rimuovi-file-sorgente : Elimina i file di origine dopo la copia.

Diamo un'occhiata in azione. Innanzitutto, la copia della directory. Esegui il seguente comando.

$rsync-vrdir_A/dir_A_copy

Per un output più dettagliato, usiamo il flag -vv.

$rsync-vv -Rdir_A/dir_A_copy

Ora, diamo un'occhiata alla parte interessante di rsync. Abbiamo discusso di come rsync copia in modo intelligente solo i file che vengono modificati, risparmiando larghezza di banda e scrittura su disco. È tempo di verificarlo in azione. In questo esempio, l'azione verrà eseguita all'interno del dir_A directory.

$rsync-vv --nessun-file-interomanichino*dir_B/

Nonostante la trasmissione delta sia abilitata, rsync potrebbe non applicarla quando esegui il trasferimento di dati locali.

Ora, diamo un'occhiata alla funzione di funzionamento a secco. Prima di eseguire qualsiasi comando rsync per davvero, è sempre importante testarlo in anticipo. È qui che entra in gioco il dry run. Rsync emetterà ciò che accadrà se il comando dovesse effettivamente essere eseguito.

$rsync-anvrdir_A/dir_A_copy

Rsync può funzionare anche con directory remote, nessun problema. Tutto ciò di cui ha bisogno è una connessione SSH adeguata con le chiavi SSH configurate.

$ sincronizzazione<opzione> <local_dir>
<nome utente> @<Host remoto>:<destinazione_dir>

Vuoi eseguire un'operazione di spostamento? Per metterlo nella prospettiva di rsync, rsync copierà il contenuto della directory di origine e quindi eliminerà il contenuto di origine.

$rsync-v --rimuovi-file-sorgente <fonte> <destinazione>

Controlla il risultato dell'operazione.

$alberodir_A

$alberodir_A_copy

Pensieri finali

Il cp e rsync sono gli strumenti più comuni che puoi usare per copiare i file in una cartella sul terminale Linux. Entrambi sono anche molto buoni per lo scripting. Assicurati solo di testare le funzioni prima dell'implementazione.

Divertiti!