GNU/Linux >> Tutoriales Linux >  >> Linux

6 ejemplos de rsync para excluir varios archivos y directorios utilizando excluir de

Rsync es una herramienta muy poderosa para realizar copias de seguridad o sincronizar archivos y directorios entre dos ubicaciones (o servidores) diferentes.

Ya lo sabe, ya que le presentamos ejemplos prácticos en rsync anteriormente.

En una situación típica de copia de seguridad, es posible que desee excluir uno o más archivos (o directorios) de la copia de seguridad. También es posible que desee excluir un tipo de archivo específico de rsync.

Este artículo explica cómo ignorar varios archivos y/o directorios durante rsync con ejemplos.

Primero, cree una estructura de directorio de muestra como se muestra a continuación (con algunos archivos vacíos) que se puede usar con fines de prueba.

$ cd ~
$ mkdir -p source/dir1/dir2
$ mkdir -p source/dir3
$ touch source/file1.txt
$ touch source/file2.txt
$ touch source/dir1/dir2/file3.txt
$ touch source/dir3/file4.txt

El comando anterior creará un directorio de origen (bajo su directorio de inicio) con la siguiente estructura.

source
- file1.txt
- file2.txt
- dir1
  - dir2
    - file3.txt
- dir3
  - file4.txt

1. Excluir un directorio específico

Si no desea sincronizar dir1 (incluidos todos sus subdirectorios) desde la fuente a la carpeta de destino, use la opción rsync –exclude como se muestra a continuación.

$ rm -rf destination

$ rsync -avz --exclude 'dir1' source/ destination/
building file list ... done
created directory dest
./
file1.txt
file2.txt
dir3/
dir3/file4.txt

Verifique que dir1 no se copie del directorio de origen al directorio de destino.

$ find destination
destination
destination/file2.txt
destination/file1.txt
destination/dir3
destination/dir3/file4.txt

2. Excluir varios directorios que coincidan con un patrón

El siguiente ejemplo excluirá cualquier directorio (o subdirectorios) bajo source/ que coincida con el patrón "dir*"

$ rm -rf destination

$ rsync -avz --exclude 'dir*' source/ destination/
building file list ... done
created directory destination
./
file1.txt
file2.txt

Verifique el directorio de destino para asegurarse de que no haya copiado ningún directorio que contenga la palabra clave "dir".

$ find destination
destination
destination/file2.txt
destination/file1.txt

3. Excluir un archivo específico

Para excluir un archivo específico, use la ruta relativa del archivo en la opción de exclusión como se muestra a continuación.

$ rm -rf destination

$ rsync -avz --exclude 'dir1/dir2/file3.txt' source/ destination/
building file list ... done
created directory destination
./
file1.txt
file2.txt
dir1/
dir1/dir2/
dir3/
dir3/file4.txt

Verifique el directorio de destino para asegurarse de que no copió el archivo específico (dir1/dir2/file3.txt en este ejemplo).

$ find destination
destination
destination/file2.txt
destination/file1.txt
destination/dir1
destination/dir1/dir2
destination/dir3
destination/dir3/file4.txt

4. La ruta de exclusión siempre es relativa

Si no tiene cuidado, podría cometer este error.

En el siguiente ejemplo, la opción de exclusión parece tener una ruta completa (es decir, /dir1/dir2/file3.txt). Pero, desde el punto de vista de rsync, la ruta de exclusión siempre es relativa y se tratará como dir1/dir2/file3.txt. En el siguiente ejemplo, rsync buscará dir1 en el directorio de origen (y no en el directorio raíz /).

$ rsync -avz --exclude '/dir1/dir2/file3.txt' source/ destination/

Entonces, el comando anterior es exactamente igual que el siguiente. Solo para evitar confusiones (y para que sea más fácil de leer), no proporcione / delante de la ruta de exclusión.

$ rsync -avz --exclude 'dir1/dir2/file3.txt' source/ destination/

5. Excluir un tipo de archivo específico

Para excluir un tipo de archivo específico que tiene una extensión específica, use el patrón apropiado. Por ejemplo, para excluir todos los archivos que contienen .txt como extensión, haga lo siguiente.

$ rsync -avz --exclude '*.txt' source/ destination/
building file list ... done
created directory destination
./
dir1/
dir1/dir2/
dir3/

Verifique el directorio de destino para asegurarse de que no haya copiado los archivos *.txt.

$ find destination
destination
destination/dir1
destination/dir1/dir2
destination/dir3

Nota: Lo anterior es muy útil cuando desea hacer una copia de seguridad de su directorio de inicio, pero excluye todos esos enormes archivos de imagen y video que tienen una extensión de archivo específica.

6. Excluir varios archivos y directorios al mismo tiempo

Cuando desee excluir varios archivos y directorios, siempre puede especificar varias opciones de exclusión de rsync en la línea de comandos, como se muestra a continuación.

$ rsync -avz --exclude file1.txt --exclude dir3/file4.txt source/ destination/

Esperar. ¿Qué pasa si tengo toneladas de archivos que quiero excluir de rsync?

No puedo seguir agregándolos en la línea de comando usando múltiples –exclude, que es difícil de leer y difícil de reutilizar el comando rsync para más adelante.

Entonces, la mejor manera es usar la opción rsync –exclude-from como se muestra a continuación, donde puede enumerar todos los archivos (y directorios) que desea excluir en un archivo.

Primero, cree un archivo de texto con una lista de todos los archivos y directorios que no desea respaldar. Esta es la lista de archivos y directorios que desea excluir del rsync.

$ vim exclude-list.txt
file1.txt
dir3/file4.txt

A continuación, ejecute rsync usando la opción –exclude-from con la lista de exclusión.txt como se muestra a continuación.

$ rm -rf destination

$ rsync -avz --exclude-from 'exclude-list.txt' source/ destination/
building file list ... done
created directory destination
./
file2.txt
dir1/
dir1/dir2/
dir1/dir2/file3.txt
dir3/

Verifique el directorio de destino para asegurarse de que los archivos y directorios enumerados en el archivo include-list.txt no estén respaldados.

$ find destination
destination
destination/file2.txt
destination/dir1
destination/dir1/dir2
destination/dir1/dir2/file3.txt
destination/dir3

Linux
  1. Cómo cifrar y descifrar archivos y directorios utilizando Tar y OpenSSL

  2. CloudCross:sincronice archivos y directorios con múltiples almacenamientos en la nube

  3. ¿Cómo copiar archivos en Linux y Unix? Ejemplos de comandos de 10 cp

  4. Cómo copiar directorios recursivamente usando rsync mientras se excluyen archivos específicos

  5. Uso de las opciones de inclusión y exclusión de Rsync para incluir el directorio y el archivo por patrón

Cómo usar el comando cp para copiar archivos y directorios

Cómo sincronizar archivos y directorios usando Zaloha.sh

Cómo hacer una copia de seguridad de archivos y directorios usando Rsync en Linux

Mantener los archivos y directorios de Linux sincronizados con rsync

Cómo eliminar archivos y directorios usando la terminal en Debian 10

Cómo eliminar archivos y directorios usando la línea de comandos de Linux