Eu uso o BTRFS. Eu posso confirmar e elaborar um pouco do que esta resposta diz; e eu posso adicionar algo mais.
Você pode montar qualquer instantâneo. Você pode modificá-lo a menos que tenha sido criado com a opção 'somente leitura'. O instantâneo é apenas um subvolume, ele não "lembra" de qual outro subvolume foi criado. Um subvolume de origem e seu instantâneo são inicialmente equivalentes. É melhor pensar em um instantâneo recém-criado como um "fork" em vez de um "snapshot", "copy", "estado congelado" literal ou qualquer outro nome que sugira seu status inferior em relação ao "original".
Quando você bifurca um subvolume (cria um snapshot) você pode pensar em um snapshot Point-in-Time se você escolher não modificar a "cópia" mais (seja explicitamente criando-o como subvolume somente leitura ou simplesmente fazendo nada, deixando-o sozinho), enquanto o "original" é possivelmente ainda em uso. Eu uso snapshots para fazer backup do meu sistema antes do 'apt-get upgrade', mas nunca me incomodo em criá-los como 'somente leitura'. Meu ponto é: seu status Point-In-Time não é por causa de alguns metadados no meu disco, mas por causa dos metadados na minha cabeça - eu apenas me abstenha de modificá-los.
Os instantâneos compartilham (inicialmente quase todos) blocos de dados com o subvolume "original". Se um conteúdo de um determinado bloco tornar um arquivo corrompido, o arquivo será corrompido em todos os snapshots que compartilharem o bloco. Sobrescrever (modificar) o arquivo em um dos subvolumes mapeia-o para bloco (s) contendo o novo conteúdo apenas no contexto deste subvolume; outros subvolumes permanecem como eram.
Se você tiver um arquivo corrompido compartilhado entre vários subvolumes e quiser substituí-lo pelo backup, você poderá:
- (método comum) sobrescrever todo o arquivo (ou desvincular e criar novamente), isso irá remapear todas as suas partes para outros blocos;
- (método incomum) aplica um patch binário ao arquivo, isso irá remapear algumas de suas partes para outros blocos (isso é possível se a corrupção estiver dentro do arquivo, não dentro do sistema de arquivos, por exemplo, PDF inválido mas de outra forma legível). / li>
Ao fazer isso independentemente em vários subvolumes causará o remapeamento independente, ele utilizará blocos não utilizados várias vezes, em vez de apenas uma vez.
Para evitar isso e fazer com que esses arquivos substituídos em vários subvolumes compartilhem todos os blocos, proceda da seguinte maneira:
- Se ainda não estiver montado, monte a raiz do sistema de arquivos BTRFS em algum lugar:
mount -o subvol=/ …
. Desta forma, todos os subvolumes possíveis estarão disponíveis sob um único ponto de montagem.
- Substitua o arquivo do backup em um único subvolume.
- Para todos os outros subvolumes onde o arquivo precisa ser substituído
- desvincular (remover) o arquivo,
- copie (
cp
) o arquivo já substituído de outro subvolume com --reflink=always
option; é importante fazer isso em um único ponto de montagem.
- Você pode agora
umount
da raiz do sistema de arquivos BTRFS.