Problema rsync estranho - duplicando e descompactando arquivos

1

Eu tenho dois servidores: nosso servidor web de produção (freebsd) e um servidor de backup (centos). O servidor de produção faz o mysql database dumps a cada 3 horas e comprime o arquivo de despejo usando o bzip2. Portanto, temos uma pasta em / backups / dumps / e os arquivos são como database_dump-20120119_152100.bz2.

Em nosso servidor de backup, temos um / BackupRaid / webserver / folder. Neste servidor, um script rsync é executado a cada 3 horas, sincronizando a pasta / backups / dumps no servidor de produção para a pasta / BackupRaid / webserver no servidor de backup. Um desses arquivos de backup é de cerca de 500MB. Se você descompactar, são 3,2 GB.

Este processo funcionou bem durante anos. Mas recentemente verifiquei o servidor de backup e vi que na última semana, há um arquivo de 500MB bz2 para cada período de 3 horas, como esperado, mas há também uma versão descompactada de 3.2GB de cada um desses arquivos. Portanto, agora há o dobro dos arquivos, um não compactado e um compactado para cada período de tempo.

Eu descubro quando a próxima sincronização vai ser e eu sento e monitora. No servidor de backup, vejo um arquivo ".database_dump-201201119_182100.tlv1d4", o que significa que o rsync está em andamento. Eu assisto o arquivo e ele cresce e cresce passando os 500MB que deveria ser. Ele prossegue para baixar um arquivo de despejo de descompressão de 3,2 GB. Eu faço o login no servidor web e verifico a pasta que está sendo sincronizada e existem apenas 500MB de arquivos bz2 na pasta. Uma vez terminado o arquivo de 3,2 GB, ele faz o download do arquivo de 500MB bz2.

Então, de onde vem esse arquivo de despejo não compactado de 3.2GB? Ele está agindo como se o servidor remoto estivesse descompactando o arquivo antes de transferir, transferindo o arquivo de despejo de 3.2GB para o servidor de backup e, em seguida, o servidor de backup o comprimiria novamente para o tamanho de 500MB.

Eu usei lsof, grepped para o nome do arquivo, encontrei o PID do processo de rsync. Verifiquei o PID de ps aux e com certeza ele estava vindo do meu script. Meu script é um comando muito simples:

#Rsync files, timeout set to 5 seconds
until rsync -avv --progress --partial --timeout=5 "${SOURCE_USER}"@"${SOURCE_SERVER}":"${SOURCE_PATH}" "${TARGET_PATH}";
do echo "Didn't quite get the whole file before an error/timeout occurred. Restarting where it left off..." >&2;
sleep 1;
done

O que está acontecendo ??

    
por Safado 19.01.2012 / 17:02

2 respostas

1

Parece que você está usando a opção -a com rsync, que equivale a -rlptgoD , o que inclui recursivas, links, tempos de arquivo, etc.

Além disso, no comando que você postou, parece que você está chamando um caminho no lado da fonte.

Portanto, ao usar um caminho, com a opção -a ou -r , o rsync sincronizará todos os arquivos no caminho. Eu suponho que o arquivo grande também exista no caminho de origem, assim ele também está sendo copiado.

    
por 19.01.2012 / 20:10
0

Parece-me que o bzip2 não terminou antes de rsync começar. BTW - você já apagou esses lixões dos dois lados?

    
por 19.01.2012 / 20:43