Você pode obter algumas informações canalizando-as para zstreamdump -d
, mas isso não fornecerá informações sobre nomes de arquivos diretamente, porque não há arquivos no fluxo. O fluxo é uma grande diferença entre duas árvores descritas em blocos. No entanto, o código é público, portanto, se você conseguir adicionar a detecção e a análise da estrutura do ZFS, poderá obter mais resultados.
A estrutura interna do ZFS é uma árvore internamente e todas as operações são feitas sobre essa árvore. Arquivos, diretórios, nomes de arquivos, atributos e tudo mais são apenas dados dessa árvore. Instantâneos, volumes e FS são as raízes das árvores, e quando você tira outro instantâneo você está apenas armazenando a raiz atual em algum lugar. Os sistemas vivos estão gerando novas raízes para cada transação, constantemente se afastando das raízes mais antigas, enquanto mantêm muitos dados "deixados" da árvore anterior intactos. O fluxo representa uma lista de operações que devem ser executadas na árvore A para se tornarem B.
Só estou tentando dizer que você pode não ver os dados que está procurando no fluxo porque eles não precisam estar lá. Quando o arquivo é descartado, os blocos correspondentes são liberados para que você não saiba qual era o nome ou o conteúdo do arquivo. Quando o arquivo é alterado, ele é referenciado pelo id do objeto para que você não obtenha nada do fluxo, mesmo que o arquivo tenha sido reescrito a partir do zero, mas a entrada de diretório não tenha sido atualizada.
Você terá sorte se o fluxo não for um fluxo diferencial ou se você tiver alguns dados acima do estado anterior. Mas isso é apenas porque um fluxo completo transforma a raiz vazia na árvore de destino, contendo todos os dados necessários. Portanto, você pode adicionar o código de análise de bloco ao zstreamdump
para detectar e processar dados internos do ZFS.