Hace un tiempo, discutimos cómo excluir la copia de archivos de cierto tamaño usando rsync en sistemas tipo Unix. Ese método nos ayudó a excluir los archivos de gran tamaño o los archivos menos importantes para completar el proceso de copia lo antes posible. Entonces, podemos copiar los archivos restantes más tarde cuando tengamos tiempo libre. Hoy, en esta breve guía, veremos cómo excluir directorios específicos de la copia usando Rsync y cp comandos en Linux.
Excluir directorios específicos de la copia en Linux
Podría haber muchas maneras de hacer esta tarea. Soy consciente de seguir dos métodos.
Método 1:usar rsync comando
Como ya sabrá, Rsync es una herramienta rápida y versátil para copiar archivos y carpetas localmente, o hacia/desde otro host a través de cualquier shell remoto, o hacia/desde un demonio rsync remoto. Rsync tiene muchas opciones útiles. Una de las opciones útiles es --exclude . Usar excluir opción, podemos excluir ciertos archivos/directorios de la copia. Veamos cómo hacerlo con un ejemplo.
Digamos que tiene una carpeta llamada ostechnix . Dentro del directorio ostechnix, hay tres subdirectorios, a saber, dir1 , dir2 y dir3 .
$ ls ostechnix/ dir1 dir2 dir3
Quiere copiar dir1 y dir3 a una ubicación diferente, pero no a dir2 . ¿Cómo? Aquí es donde rsync viene en ayuda.
Para excluir un directorio específico de la copia usando el comando rsync, simplemente ejecute:
$ rsync -av --progress ostechnix/ backup/ --exclude dir2
La salida de muestra sería:
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
El comando anterior copiará todo el contenido de la carpeta ostechnix a una carpeta llamada copia de seguridad , y excluirá el directorio dir2 de copiar.
Alternativamente, puede usar el mismo comando que se muestra a continuación.
$ rsync -av --progress --exclude="folder_to_exclude" source_dirctory dest_directory
Ejemplo:
$ rsync -av --progress --exclude="dir2" ostechnix/ backup/
En realidad, es una buena idea omitir o excluir algunos directorios grandes o menos importantes de la copia mientras realiza una copia de seguridad de su sistema usando rsync para ahorrar tiempo.
Para obtener más detalles, consulte las páginas man.
$ man rsync
Lea también:
- Cómo transferir rápidamente archivos grandes a través de la red en Linux y Unix
- Cómo encontrar el tamaño de un directorio en Linux desde la línea de comandos
Método 2:uso de cp comando
También podemos usar cp comando para copiar carpetas de una ubicación a otra excluyendo directorios específicos.
Vaya a su directorio de origen, es decir, ostechnix en nuestro caso.
$ cd ostechnix/
Y ejecuta el siguiente comando:
$ cp -r `ls -A | grep -v "dir2"` /home/sk/backup/
El comando anterior copiará todo el contenido de la carpeta actual ostechnix excepto el subdirectorio dir2 y los guarda en /home/sk/backup/ directorio.
Aún más simple, podemos hacer esto de la siguiente manera.
$ cp -r !(dir2) /home/sk/backup/
Para obtener más detalles, consulte las páginas man.
$ man cp