Rsnapshot: el archivo excluido de no funciona para subdirectorios

Rsnapshot: el archivo excluido de no funciona para subdirectorios

Estoy haciendo una copia de seguridad remota. Esta es mi configuración de rsnapshot.

config_version  1.2
snapshot_root   /data/sbackup/
cmd_cp  /bin/cp
cmd_rm  /bin/rm
cmd_rsync       /usr/bin/rsync
cmd_ssh /usr/bin/ssh
cmd_logger      /usr/bin/logger
interval        alpha   2
interval        beta    2
interval        gamma   2
interval        delta   1
ssh_args    -p xxxx
verbose         3
loglevel        4
logfile /var/log/rsnapshot/
exclude_file    /data/xxxxx.exclude
rsync_long_args --stats --delete --numeric-ids --relative   --delete-excluded
lockfile        /var/run/rsnapshot.pid
backup  [email protected]:/ xxxxx-server/

He agregado estas líneas finales en excluir_file

+ /root
+ /backups/mysqldb/latest
+ /etc/automysqlbackup
+ /etc/imscp
+ /etc/postfix
+ /etc/fail2ban
+ /etc/dovecot
+ /etc/apache2
+ /etc/ssh
+ /etc/ssl
+ /etc/php5
+ /etc/cron.d
+ /usr
+ /var/mail
+ /var/www
+ /var/log
- /var/cache
- /boot
- /home
- /opt
- /etc
- /*

Pero después de hacer un rsync solo obtengo el directorio root& completo. No se descargan otros archivos/subdirectorios de ruta usrmencionados .+

Quiero +que los directorios se incluyan y -no se incluyan.

¿Que estoy haciendo mal?.

Respuesta1

la sintaxis es difícil, pero no imposible una vez que la dominas, el truco es darte cuenta de que debes enumerar los directorios para que coincidan uno por uno en relación con la raíz del directorio de trabajo rsync/rsnapshot:

digamos que desea incluir el directorio /var/log y nada más

+ /var  # we want the var directory
+ /var/log # we want the var/log directory
- /var/* # we dont want anything else in the var directory
- /* # we don't want anything else at all

Espero que lo veas, primero tenemos una coincidencia en /var, luego en /var/log, luego en /var/* y luego en /*.

esto no funcionaria

+ /var/log
- /*

porque /var/log no generará una coincidencia, por extraño que parezca....

En tu ejemplo tu primera

+ /backups/mysqldb/latest

Nunca crearía una coincidencia... ¡por la misma razón!

Respuesta2

Parece que su patrón de exclusión /*significa que cualquier ruta como /etc/somethingse excluirá a menos que incluya explícitamente /etcy luego excluya aquellas que no desea /etc/*.

Entonces agregue + /etcy - /etc/*, y de manera similar para /vary /backupsy /backups/mysqldb.

Por cierto, dije antes que necesitabas 2 archivos, un archivo de inclusión y un archivo de exclusión separados. Puede hacer esto, pero de hecho, si comienza cada línea del archivo con un '+' o '-' explícito, anula elpor defectoincluir o excluir aspectos. Por lo tanto, puede poner todo en un solo archivo, siempre que anteponga las líneas como lo ha hecho.

información relacionada