Script Bash rsync --incluir-de falla

Script Bash rsync --incluir-de falla

Escribí un script bash para hacer copias de seguridad de carpetas y archivos desde una máquina a nuestro servidor de respaldo. Mi objetivo es excluir todos los archivos de más de 6 meses de esta copia de seguridad semanal. Para hacer eso, utilicé un comando de búsqueda para crear un archivo txt que contiene la ruta de estos archivos.

find . -type f -mtime -200 -fprintf $SCRIPT_DIR/Exclusions.txt "%P\n"

Y luego usé la opción "--include-from" de rsync.

rsync . -e ssh -qrtl --exclude-from=$SCRIPT_DIR/Exclusions.txt $USER@$DEST_SRV:$DEST_DIR

El resultado fue que la copia de seguridad funcionó pero no la inclusión. Entonces se hizo una copia de seguridad de todos los archivos, incluso aquellos que tenían más de 6 meses.

¿Cómo puedo hacer por esto?

gracias de antemano

Respuesta1

Según las páginas de manual,

--exclude=PATTERN       exclude files matching PATTERN
--exclude-from=FILE     read exclude patterns from FILE
--include=PATTERN       don't exclude files matching PATTERN
--include-from=FILE     read include patterns from FILE

La exclusión se realiza según el patrón de lectura de los archivos y no según los nombres de los archivos en sí.

Estoy de acuerdo en que incluir/excluir archivos según los nombres también podría ser complicado, pero no es así como funciona.

Podrías probar algo como esto para incluir archivos más recientes que hace 1 semana:

--files-from=<(find . -mtime -7 -print0)

Respuesta2

¡Ok, resolví mi problema! La línea "buscar" permanece igual:

find . -type f -mtime -200 -fprintf $SCRIPT_DIR/includes.txt "%P\n"

Y uso la opción "--files-from" en lugar de "--exclude-from"

rsync . -e ssh -qrtl --files-from=$SCRIPT_DIR/includes.txt $USER@$DEST_SRV:$DEST_DIR

información relacionada