Um cronjob do rsync é executado, mas não copia arquivos

1

Então, minha intenção é fazer backup de algum diretório-chave com meus documentos e meu arquivo de dados MySQL, etc. Eu tenho um conjunto de tarefas e ele parece funcionar para todos os comandos lá. Os arquivos são copiados diariamente em uma unidade de backup.

É só que o que é suposto copiar o conteúdo da pasta MySQL, é apenas copiar a pasta, mas sem conteúdo.

Eu deixei a barra "/" desligada no final de todos os diretórios porque eu li isso significa copiar todas as informações no diretório.

Alguma idéia de porque o comando cria e copia o diretório MYSQL para meu local de backup, mas nenhum arquivo. É uma coisa de permissões que apenas o usuário root pode fazer isso? se sim, como faço isso?

Meu arquivo crontab contém:

44 4 * * * /usr/bin/rsync -av --delete /var/www/html /media/stan/Seagate\ Expansion\ Drive/backups/
33 3 * * * /usr/bin/rsync -av --delete /home/stan/documents /media/stan/Seagate\ Expansion\ Drive/backups/
03 3 * * * /usr/bin/rsync -av /var/lib/mysql /media/stan/Seagate\ Expansion\ Drive/backups/
02 2 * * * /usr/bin/rsync -av --delete /var/backups /media/stan/Seagate\ Expansion\ Drive/backups/

ATUALIZAÇÃO: Eu corri o comando em particular a partir da linha de comando e recebi os erros abaixo:

stan@corsair:~$ /usr/bin/rsync -av /var/lib/mysql /media/stan/Seagate\ Expansion\ Drive/backups/
sending incremental file list
rsync: opendir "/var/lib/mysql" failed: Permission denied (13)
mysql/

sent 73 bytes  received 20 bytes  186.00 bytes/sec
total size is 0  speedup is 0.00
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1183) [sender=3.1.0]

EDIT. Solução que usei Eu decidi que o rsync não é a melhor ferramenta para isso, já que tenho que parar o servidor MySQL. Eu fui com a sugestão mysqldump do @ AB.

O comando final adicionou muita compactação necessária, que economiza 75% de espaço em cada backup:

mysqldump -u root -pmypass --all-databases | gzip >  /media/stan/Seagate\ Expansion\ Drive/backups/mysql/mysqlbak-$(date  "+\%Y-\%m-\%d_\%H:\%M:\%S").sql.gz
    
por Norman Bird 12.06.2015 / 16:21

1 resposta

1

Pare o servidor MySQL antes de iniciar o backup

sudo service mysql stop

E você tem um problema de permissão

  

rsync: opendir "/ var / lib / mysql" falhou: Permissão negada (13)

use o crontab da sua raiz:

sudo crontab -e

Eu preferiria um backup com mysqldump . Assim, o serviço não deve ser parado nem reiniciado.

mysqldump -u root -p --all-databases > /media/stan/Seagate\ Expansion\ Drive/backups/

Ou retirado dos comentários ( @NormanBird ) abaixo, com gzip

mysqldump -u root -pmypass --all-databases | gzip > /media/stan/Seagate\ Expansion\ Drive/backups/mysql/mysqlbak-$(date "+\%Y-\%m-\%d_\%H:\%M:\%S").sql.gz
    
por A.B. 12.06.2015 / 16:43