Rsnapshot --exclude-from arquivo não funciona para subdiretórios

Rsnapshot --exclude-from arquivo não funciona para subdiretórios

Estou fazendo um backup remoto. Esta é a minha configuração do 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/

Eu adicionei estes resultados em exclude_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
- /*

Mas depois de fazer um rsync, só estou obtendo rootdiretórios completos usr. Nenhum outro +arquivo/subdiretório de caminho mencionado está sendo baixado.

Quero que +os diretórios sejam incluídos e -não incluídos.

O que estou fazendo errado?.

Responder1

a sintaxe é difícil, mas não impossível quando você pega o jeito, o truque é perceber que você deve listar os diretórios para corresponder um por um em relação à raiz do diretório de trabalho rsync/rsnapshot:

digamos que você deseja incluir o diretório /var/log e nada mais

+ /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 você veja, primeiro temos uma correspondência em /var, depois em /var/log, depois em /var/* e depois em /*.

Isso não funcionaria

+ /var/log
- /*

porque /var/log não gerará uma correspondência, por incrível que pareça....

No seu exemplo, seu primeiro

+ /backups/mysqldb/latest

nunca criaria uma partida.. pelo mesmo motivo!

Responder2

Parece que seu padrão de exclusão /*significa que quaisquer caminhos como /etc/somethingserão excluídos, a menos que você inclua explicitamente /etce exclua aqueles que não deseja /etc/*.

Então adicione + /etce - /etc/*e da mesma forma para /vare /backupse /backups/mysqldb.

A propósito, eu disse anteriormente que você precisava de 2 arquivos, um include_file e um exclude_file separados. Você pode fazer isso, mas na verdade, se você iniciar cada linha do arquivo com um '+' ou '-' explícito, ele substituirá opadrãoincluir ou excluir aspecto. Assim, você pode colocar tudo em um arquivo, desde que prefixe as linhas como fez.

informação relacionada