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 root
diretó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/something
serão excluídos, a menos que você inclua explicitamente /etc
e exclua aqueles que não deseja /etc/*
.
Então adicione + /etc
e - /etc/*
e da mesma forma para /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 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.