Qualche tempo fa abbiamo discusso su come escludere dalla copia file di determinate dimensioni utilizzando rsync nei sistemi simili a Unix. Questo metodo ci ha aiutato a escludere i file di grandi dimensioni o meno importanti per completare il processo di copia il prima possibile. Quindi, possiamo copiare i file rimanenti in un secondo momento quando abbiamo tempo libero. Oggi, in questa breve guida, vedremo come escludere directory specifiche dalla copia utilizzando Rsync e cp comandi in Linux.
Escludi directory specifiche dalla copia in Linux
Potrebbero esserci molti modi per svolgere questo compito. Sono consapevole di seguire due metodi.
Metodo 1:utilizzo di rsync comando
Come forse già saprai, Rsync è uno strumento veloce e versatile per copiare file e cartelle in locale o su/da un altro host su qualsiasi shell remota o da/verso un demone rsync remoto. Rsync ha molte opzioni utili. Una delle opzioni utili è --exclude . Usando escludi opzione, possiamo escludere determinati file/directory dalla copia. Vediamo come farlo con un esempio.
Supponiamo che tu abbia una cartella chiamata otechnix . All'interno della directory ostechnix, ci sono tre sottodirectory:dir1 , dir2 e dir3 .
$ ls ostechnix/ dir1 dir2 dir3
Vuoi copiare dir1 e dir3 in una posizione diversa, ma non in dir2 . Come? Qui è dove rsync viene in aiuto.
Per escludere una directory specifica dalla copia utilizzando il comando rsync, esegui semplicemente:
$ rsync -av --progress ostechnix/ backup/ --exclude dir2
L'output di esempio sarebbe:
sending incremental file list ./ dir1/ dir1/file1.pdf 6,152,611 100% 58.36MB/s 0:00:00 (xfr#1, to-chk=7/11) dir1/file2 2,597,261 100% 14.83MB/s 0:00:00 (xfr#2, to-chk=6/11) dir1/file3.doc 88,143 100% 470.37kB/s 0:00:00 (xfr#3, to-chk=5/11) dir1/file4.txt 66,374 100% 330.71kB/s 0:00:00 (xfr#4, to-chk=4/11) dir3/ dir3/file1.pdf 6,152,611 100% 18.39MB/s 0:00:00 (xfr#5, to-chk=3/11) dir3/file2 2,597,261 100% 6.68MB/s 0:00:00 (xfr#6, to-chk=2/11) dir3/file3.doc 88,143 100% 224.16kB/s 0:00:00 (xfr#7, to-chk=1/11) dir3/file4.txt 66,374 100% 164.10kB/s 0:00:00 (xfr#8, to-chk=0/11) sent 17,813,759 bytes received 187 bytes 11,875,964.00 bytes/sec total size is 17,808,778 speedup is 1.00
Il comando precedente copierà tutti i contenuti della cartella otechnix in una cartella denominata backup , ed escluderà la directory dir2 dalla copia.
In alternativa, puoi utilizzare lo stesso comando di seguito.
$ rsync -av --progress --exclude="folder_to_exclude" source_dirctory dest_directory
Esempio:
$ rsync -av --progress --exclude="dir2" ostechnix/ backup/
In realtà è una buona idea omettere o escludere dalla copia alcune directory grandi o meno importanti durante il backup del sistema utilizzando rsync per risparmiare tempo.
Per maggiori dettagli, controlla le pagine man.
$ man rsync
Leggi anche:
- Come trasferire rapidamente file di grandi dimensioni in rete in Linux e Unix
- Come trovare la dimensione di una directory in Linux dalla riga di comando
Metodo 2:utilizzo di cp comando
Possiamo anche usare cp comando per copiare cartelle da una posizione all'altra escludendo directory specifiche.
Vai alla tua directory di origine, ad esempio ostechnix nel nostro caso.
$ cd ostechnix/
E, esegui il seguente comando:
$ cp -r `ls -A | grep -v "dir2"` /home/sk/backup/
Il comando precedente copierà tutti i contenuti della cartella corrente otechnix tranne la sottodirectory dir2 e li salva in /home/sk/backup/ directory.
Ancora più semplice, possiamo farlo come segue.
$ cp -r !(dir2) /home/sk/backup/
Per maggiori dettagli, controlla le pagine man.
$ man cp