¿Cómo excluir múltiples directorios con rsync?

136

Estoy intentando hacer una copia de seguridad de mi directorio personal usando rsync, y quiero excluir algunos de los directorios que contienen basura. Quiero excluir específicamente /home/ben/.ccache y /home/ben/build . Lamentablemente, la documentación para rsync era una sobrecarga de información y no respondía a mi pregunta. Esto es lo que intenté:

rsync -arv --exclude "/home/ben/.ccache:/home/ben/build" /home/ben /media/ben/thumbdrive/

¿Cuál es la forma correcta de hacer esto?

    
pregunta Freedom_Ben 16.07.2013 - 01:53

3 respuestas

178

Bien, me siento realmente tonto. Antes de publicar esta pregunta, mi amigo me mostró cómo hacerlo y es realmente simple. Para excluir múltiples directorios, simplemente usa múltiples --exclude=path switches. Entonces mi comando escrito correctamente es el siguiente:

rsync -arv --exclude=.ccache --exclude=build /home/ben /media/ben/thumbdrive/
    
respondido por el Freedom_Ben 16.07.2013 - 01:53
85

Cuando tenga varios directorios o archivos para excluir, cree un archivo de texto y use el modificador --exclude-from . Cree un archivo llamado exclude_me.txt y en él liste sus exclusiones. Ejemplo ( /home/ben/exclude_me.txt ):

.ccache
build
.java
.gvfs
.xsession-errors

Entonces tu rsync se vería como:

rsync -arv --exclude-from='/home/ben/exclude_me.txt' /home/ben /media/ben/thumbdrive/

Esta es una información sobre las reglas de filtrado que pueden ayudar:

  • /dir/ significa excluir la carpeta raíz /dir
  • /dir/* significa obtener la carpeta raíz /dir pero no los contenidos
  • dir/ significa excluir cualquier carpeta en cualquier lugar donde el nombre contenga dir/

  • Ejemplos excluidos: /dir/, /usr/share/directory/, /var/spool/dir/ /var/spool/lpd/cf significa omitir archivos que comienzan con cf dentro de cualquier carpeta dentro de /var/spool/lpd

Consulte también la sección de reglas de filtrado en la página de manual.

    
respondido por el user228759 19.05.2014 - 17:13
58

También puede excluir varias rutas dentro de las llaves:

rsync -arv --exclude={.ccache,build} /home/ben /media/ben/thumbdrive/
    
respondido por el György Ráth 18.09.2014 - 10:59

Lea otras preguntas en las etiquetas