Estoy tratando de hacer una copia de seguridad de mi directorio de inicio usando rsync, y quiero excluir algunos de los directorios que contienen basura. Quiero excluir específicamente /home/ben/.ccache
y /home/ben/build
. Desafortunadamente, la documentación para rsync era sobrecarga de información y no respondió mi pregunta. Esto es lo que probé:
rsync -arv --exclude "/home/ben/.ccache:/home/ben/build" /home/ben /media/ben/thumbdrive/
¿Cuál es la forma correcta de hacer esto?
command-line
rsync
Freedom_Ben
fuente
fuente
a
implicar
:)-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
Respuestas:
OK, 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, solo usa múltiples
--exclude=path
interruptores. Entonces mi comando arriba escrito correctamente es el siguiente:fuente
-a
incluye-r
que-ar
es redundante.Cuando tenga varios directorios y / o archivos para excluir, cree un archivo de texto y use el
--exclude-from
interruptor. Haga un archivo llamadoexclude_me.txt
y en él enumere sus exclusiones. Ejemplo (/home/ben/exclude_me.txt
):Entonces su rsync se vería así:
Esta es información sobre las reglas de filtro que pueden ayudar:
/dir/
significa excluir la carpeta raíz/dir
/dir/*
significa obtener la carpeta raíz/dir
pero no el contenidodir/
significa excluir cualquier carpeta en cualquier lugar donde el nombre contengadir/
Ejemplos excluidos:
/dir/, /usr/share/directory/, /var/spool/dir/ /var/spool/lpd/cf
significa omitir archivos que comienzan concf
cualquier carpeta dentro de/var/spool/lpd
Consulte también la sección de reglas de filtro en la página del manual.
fuente
También puede excluir varias rutas dentro de llaves:
fuente
IFS=$'\n'; rsync -arv $(printf '.ccache\nbuild\n' | sed 's/^/--exclude=/g') /home/ben /media/ben/thumbdrive/
. O bien, podría usar varios--exclude
argumentos, que tendría que escribir manualmente.