rsnapshot: o backup inicial será mantido para sempre?

4

Ao fazer um backup com o rsnapshot, " [ ...] primeiro replicamos o backup anterior em uma estrutura de diretórios paralela, criando todos os diretórios e criando links físicos para todos os arquivos. ". Tudo isso é bom.

Suponho que isso implica que o backup inicial será mantido para sempre? Os backups "mais recentes" só apontarão (através de hardlinks) para o backup mais antigo, então estou assumindo que o arquivo real para o qual qualquer hardlink aponta precisa ser retido para sempre para não quebrar as coisas?

Esta suposição é correta?

    
por sbrattla 26.02.2013 / 16:26

2 respostas

11

Não, isso não está correto. Se você tiver vários hardlinks para um arquivo, não importa qual originalmente criou o arquivo, o arquivo só será excluído se o último link para o arquivo for excluído (veja a diferença entre um link difícil usado pelo rsnapshot e por um link simbólico ) No caso do rsnapshot, isso significa que cada diretório de backup é autônomo e você pode excluir todos os outros diretórios de backup (incluindo o inicial) e ainda ter um conjunto completo de dados.

Dependendo de como você configura o rsnapshot, ele eventualmente excluirá o conjunto de backup original.

    
por 26.02.2013 / 16:33
5

TL; DR: não.

Depende do que você define como "backup inicial".

Primeiro, você cria um backup ( hourly.0 ), que tem todos os arquivos de hoje.

Na próxima iteração, ele "copia" os arquivos ( cp -L , apenas copia os links para os dados) na pasta hourly.1 .

Se todos os arquivos forem os mesmos de antes, o rsync não escreverá nada, então você tem um bloco de dados para um arquivo (vamos usar myfile.jpg ) e dois links ( hourly.0/myfile.jpg e hourly.1/myfile.jpg ) apontando para o mesmo arquivo na unidade.

Na próxima iteração sem alterações, você ainda tem os mesmos dados, apenas outro ponteiro ( hourly.2/myfile.jpg ) apontando para esses dados. Se você configurou para manter três backups, ele excluirá hourly.2 , movde hourly.1 para hourly.2 , moverá hourly.0 para hourly.1 , "copiará" (criará hardlinks) de hourly.1 para criar hourly.0 e, em seguida, execute novamente o rsync.

Se o arquivo for alterado, o rsync irá "remover" o arquivo (apenas o link, na verdade) hourly.0/myfile.jpg (os dados permanecem na unidade, pois ainda existem dois links apontando para ele). O Rsync criará um novo arquivo (link + dados) com o novo myfile.jpg .

Então agora você tem um bloco de dados com um link para o novo arquivo, um bloco com dois links para ele para a versão antiga do arquivo.

Na próxima iteração, ele exclui o hourly.2 (um link a menos para os dados do arquivo antigo), "copia" (links) o novo arquivo (novo link para o novo arquivo. Existem dois ponteiros para os novos dados do arquivo e um para os dados das versões antigas.

Na próxima iteração, ele exclui o último link da versão antiga (dados sem links que apontam para ele, é considerado livre pelo sistema de arquivos e será sobrescrito quando necessário) e três links para os novos dados do arquivo.

Se houver um link apontando para os dados (não importa de qual diretório), esses dados permanecerão na unidade. Somente depois de excluir todos os links, os dados podem ser substituídos.

    
por 26.02.2013 / 16:39

Tags