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 usr
mencionados .+
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/something
se excluirá a menos que incluya explícitamente /etc
y luego excluya aquellas que no desea /etc/*
.
Entonces agregue + /etc
y - /etc/*
, y de manera similar para /var
y /backups
y /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.