Eu tenho um NAS rodando em OpenSolaris/illumos/OmniOS com vários sistemas de arquivos ZFS compartilhados onde os autosnaps estão ativos para preservar um histórico (mantenha 4 snaps de 15 minutos, snaps de 24 horas, 7 snaps diários e assim por diante). Posso acessar os instantâneos com a janela Versões anteriores do Windows Explorer e restaurar versões mais antigas de arquivos ou arquivos excluídos, o que funciona bem.
Os problemas que tenho aparecem ao renomear ou mover arquivos:
- Se eu criá
Draft1.txt
-lo e modificá-lo ao longo de um dia, o histórico será preservado. Quando termino o rascunho e o renomeio para qualquer outra coisa, digamosLetter.txt
ou mesmoDraft2.txt
, as versões desaparecem (elas só podem ser acessadas via diretório ao saber o nome do arquivo antigo ou ao renomear o arquivo para o nome antigo). - Se eu criar e modificar
Draft1.txt
e depois salvar outra cópia da versão finalizadaLetter.txt
(agora com dois arquivos), o primeiro tem o histórico e o segundo não (tudo bem). Se eu deletarDraft1.txt
e depois quiser restaurá-lo, posso encontrá-lo no diretório, mas a versão restaurada agora perdeu seu histórico. - Se eu mover um arquivo para outro subdiretório, o histórico será perdido.
- Se eu (acidentalmente) renomear um arquivo, o histórico é perdido.
Portanto, se eu quiser preservar todo o poder das versões anteriores, tenho que pensar em várias coisas ao trabalhar com o compartilhamento:
- Nunca renomeie arquivos, o primeiro nome escolhido deve permanecer para sempre
- Nunca mova ou reorganize arquivos, exceto no primeiro dia (caso contrário, as alterações perdidas seriam muito grandes)
- Nunca salve um arquivo com um novo nome após as alterações terem sido feitas (salvar primeiro é OK)
- Nunca mescle ou divida diretórios, porque todo o conteúdo perde todo o seu histórico, mesmo que os blocos físicos não mudem.
Há algo que eu possa fazer sobre isso, exceto viver com isso? Parece estranho que o ZFS funcione em blocos na maioria das coisas (copiar na gravação, enviar/receber, zvols, instantâneos), mas funciona em arquivos neste caso. Ou isso é uma limitação do subsistema SMB/CIFS em vez do sistema de arquivos?
Acho que isso pode ser apenas uma limitação da maneira como funciona. Para mim, parece apenas verificar os instantâneos em busca de diferentes versões do arquivo atual, portanto, não mostrará nenhuma versão se o arquivo tiver sido renomeado.
No entanto, não tenho certeza do que você quer dizer com histórico perdido se mover um arquivo para outro diretório. No meu sistema FreeBSD/Samba, posso visualizar as versões anteriores no próprio compartilhamento. Isso me dá uma lista completa de todos os instantâneos e posso navegar por qualquer instantâneo, mostrando todo o conteúdo do compartilhamento como estava naquele momento.