¿Cómo puedo excluir archivos de forma predeterminada con rsync?

12

¿Cómo puedo excluir archivos de forma predeterminada con rsync? Así es como comienza mi sintaxis rsync normal:

rsync --exclude ".ht*" --exclude "error_log" --exclude ".DS*" --exclude "old" ...

He visto mucha mención de la configuración del /etc/rsyncd.confarchivo, pero tal vez eso sea más para el demonio que para el comando rsync.

¿Es posible tener algunas exclusiones predeterminadas para rsync cuando se llama desde la línea de comandos como en mi sintaxis predeterminada anterior?

cwd
fuente

Respuestas:

10

Agregue sus exclusiones a un archivo, luego use --exclude-from = / path / to / exclude_file

p.ej

# cat rsync.excludes
.ht*
error_log
.DS*
old
...

# rsync --exclude-from=rsync.excludes
frogstarr78
fuente
1
Parece que la sintaxis es --exclude-fromy no, --exclude-filepero de lo contrario, este parece ser el boleto. ¡Gracias!
cwd
5

No, rsyncno tiene un archivo de configuración predeterminado que leerá al invocarlo. Lo mejor que puede hacer es lo que dice @ frogstarr78 y crear un archivo de texto con patrones, nombres de archivo y directorio para excluir, y luego señalarlo rsynccon --exclude-from=filename.

Kusalananda
fuente
2
rsync does not have a default configuration file- eso es decepcionante
cwd
3

Si bien rsync no le permite configurar las opciones predeterminadas, puede crear un script de envoltura y colocarlo más arriba en su $ PATH que el binario rsync.

Este es mi contenedor rsync que vive en ~/bin/rsync

#!/bin/sh

# Set path to the rsync binary
RSYNC=/usr/bin/rsync

# Look for these exclude files
IGNORE_FILES=(~/.rsyncignore ./.gitignore ./.rsyncignore)

EXCLUDE_FROM=""
for f in ${IGNORE_FILES[@]}; do
  if [[ -e $f ]]; then
    EXCLUDE_FROM="$EXCLUDE_FROM --exclude-from=$f "
  fi
done
$RSYNC $EXCLUDE_FROM "$@"

Se verá por ~/.rsyncignore, ./.gitignore, ./.rsyncignorearchivos y, si existe cualquiera de ellos, los utilizan como predeterminados --exclude-fromargumentos.

Simplemente cambie RSYNC e IGNORE_FILES para adaptarlo a su entorno y preferencias.

scottatron
fuente
0

--exclude "/ *" excluirá todo por defecto. Aquí hay un ejemplo:

rsync -av --include "bin /" --exclude "/ *" / source_dir / / dest_dir /
Xinbin Dai
fuente