Rsnapshot --exclude-from não está funcionando para subdiretórios

1

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 estas linhas de fundo 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, estou ficando apenas cheio root & usr do diretório. Nenhum outro arquivo / diretório / diretórios + está sendo baixado.

Eu quero que os diretórios + sejam inclusos e - não seja incluído.

O que estou fazendo errado?

    
por Tuhin Bhuiyan 13.09.2015 / 22:10

2 respostas

1

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 a um em relação à raiz do diretório de trabalho rsync / rsnapshot:

diz 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 irá gerar uma correspondência, por incrível que pareça ....

No seu exemplo, o seu primeiro

+ /backups/mysqldb/latest

nunca criaria um jogo .. pela mesma razão!

    
por 23.01.2016 / 19:02
0

Parece que seu padrão de exclusão /* significa que todos os caminhos como /etc/something serão ser excluído, a menos que você inclua explicitamente /etc e, em seguida, exclua aqueles que não deseja com /etc/* .

Adicione + /etc e - /etc/* e, da mesma forma, /var e /backups e /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 no arquivo com um explícito '+' ou '-' substitui o padrão incluir ou excluir o aspecto. Então você pode colocar tudo em um arquivo, desde que você prefixar as linhas como você fez.

    
por 13.09.2015 / 22:35