Come posso copiare i file in una cartella in un'altra cartella su Linux Terminal

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

Copia del file nel terminale

Copiare il contenuto di una directory in un'altra è un compito 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 -v dir_a

Ora, creiamo i file fittizi usando il tocco.

$ touch dummy 1… 10

Crea un'altra cartella all'interno di Dir_a con una manciata di file fittizi.

$ mkdir -v dir_b
$ touch dummy 1… 10

Ora, l'intera struttura della directory dir_a sembra questo.

$ TREE DIR_A

Comando cp

IL cp Il comando è di gran lunga lo strumento più comune per la copia dei file. È uno strumento che viene per impostazione predefinita 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

Ad esempio, facciamo una copia del Dummy1 File con il nome Dummy1_Copy.

$ cp dummy1 dummy1_copy

Ora, proviamo a copiare più file contemporaneamente. Per tale operazione, CP richiede che la destinazione sia una directory. Qui, userò l'espressione jolly per afferrare tutto il manichino file e metterli nel file ~/Download directory.

$ cp dummy* ~/downloads

Che ne dici di copiare una directory?

$ cp -vr dir_a dir_a_copy

Qui, abbiamo usato due bandiere diverse. Facciamo una breve rottura di loro.

  • -R: sta per un ricorsivo Copia (inclusi tutti i file nascosti). Bandiera indispensabile se la copia comporta un'intera directory o più.
  • -V: sta per verboso. Lo strumento CP emetterà ogni singola azione che sta eseguendo.

Voglio seguire i collegamenti simbolici? Aggiungi il flag "-l".

$ cp -lvr

Diciamo che la directory di destinazione ha già un file con lo stesso nome. Se vuoi evitare il sovrascrittura, usa il flag "-n". Garantirà che in caso di conflitto, CP non sovrascriverà il file.

$ cp -nv

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

$ cp -i

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

$ MAN 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 di comando di MV è simile a CP.

$ MV

Per spostare il contenuto di dir_a A dir_a_copy, Esegui il seguente comando.

$ mv -v dir_a/ dir_a_copy

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

$ mv -v dir_a/* dir_a_copy

Lo strumento MV non ha molto con cui lavorare. Per tutte le opzioni disponibili, dai un'occhiata alla pagina Man.

$ Man MV

Comando rsync

Questo è uno degli strumenti più popolari e potenti per la copia dei file, utilizzato principalmente per il backup. Ha la possibilità di copiare i file su una connessione remota. A differenza di CP e MV, viene anche fornito con una tonnellata di opzioni di copia di file avanzate che offrono la massima personalizzazione del suo comportamento.

Rsync è per lo più famoso per il suo algoritmo del trasferimento delta che riduce drasticamente la quantità di dati che devono essere scambiati. Nel caso della sincronizzazione remota, questo risparmia molta larghezza di banda.

RSYNC non viene generalmente preinstallato in nessuna distribuzione di Linux. Tuttavia, a causa della sua popolarità, è ora disponibile su tutte le principali Distri Linux. Usa 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

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

  • -v: Modalità verbosa, emette qualsiasi azione eseguita nella schermata della console.
  • -vv: Modalità verbosa con maggiori dettagli
  • -R: Modalità ricorsiva, deve essere presente se la copia di directory
  • -z: Compress Data
  • -UN: Dati di archivio
  • -N: Corsa a secco, dovrebbe essere eseguito in combinazione con la modalità verbosa. Semplicemente emette le azioni se il comando doveva eseguire il vero
  • -eliminare: Elimina i file e le directory sulla directory di destinazione se la directory di origine non li contiene più
  • -NO-whole-file: Forza Rsync a utilizzare il suo algoritmo di trasmissione delta, non importa cosa. Utile negli scenari in cui è necessario garantire il minor numero di dati.
  • -Rimuovi il file di source: Elimina i file di origine dopo la copia.

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

$ rsync -vr dir_a/ dir_a_copy

Per ulteriori output dettagliati, usiamo il flag "-vv".

$ rsync -vv -r dir_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 modificati, salvando la larghezza di banda e il disco scrittura. È ora di verificarlo in azione. In questo esempio, l'azione verrà eseguita all'interno del dir_a directory.

$ rsync -vv --no-whole-file dummy* dir_b/

Nonostante la trasmissione Delta abilitata, RSYNC potrebbe non applicarlo quando si esegue il trasferimento di dati locali.

Ora, diamo un'occhiata alla funzione di corsa a secco. Prima di eseguire qualsiasi comando RSYNC, è sempre importante testarlo in anticipo. Qui è dove arriva la corsa a secco. Rsync emetterà cosa accadrà se il comando dovesse effettivamente eseguire.

$ rsync -anvr dir_a/ dir_a_copy

RSYNC può anche funzionare con le directory remote, nessun problema. Tutto ciò di cui ha bisogno è una connessione SSH corretta con i tasti SSH configurati.

$ rsync

Vuoi eseguire un'operazione di spostamento? Per dirla nel punto di.

$ rsync -v--rimproveri

Dai un'occhiata al risultato dell'operazione.

$ TREE DIR_A
$ TREE DIR_A_COPY

Pensieri finali

I CP e RSYNC sono gli strumenti più comuni che è possibile utilizzare per la copia di file in una cartella sul terminale Linux. Entrambi sono anche davvero buoni per gli script. Assicurati solo di testare le funzioni prima dell'implementazione.

Godere!