Aqui está um caso de uso que foi testado com sucesso em um sistema (K) Ubuntu (Linux step3 3.13.0-63-genérico # 103-Ubuntu SMP x86_64 x86_64 x86_64 GNU / Linux).
Todos os comandos anotados foram executados com direitos de root. Por favor, reconheça que o seguinte é apenas uma espécie de prova de conceito, ajuste os argumentos aos comandos de acordo com suas necessidades individuais.
Para uma instalação padrão (K) do Ubuntu, certifique-se de que o pacote "unionfs-fuse" esteja instalado - ele pode ser instalado usando a linha de comando "sudo apt-get install unionfs-fuse".
Por exemplo, as seguintes instruções descrevem como sobrepor um diretório existente, não vazio (home do usuário) "consigo mesmo" para que todas as alterações sejam armazenadas como persistentes em um diretório (caso 1.) ou descartado de qualquer maneira (caso 2.).
O "truque" é primeiro "montar bind" o diretório para sobrepor a outro, então use um sistema de arquivos de união para combinar o original imutável com o diretório "changes".
Os arquivos criados ou modificados no diretório "original" estarão disponíveis apenas no diretório "changes". Os arquivos criados no diretório "relocated" ficarão disponíveis no diretório "original", mas não no diretório "changes".
- Torne (não vazio) o diretório (por exemplo, / home / user1) unwritable para que todas as alterações e todos os arquivos recém-criados permaneçam persistentes (em / tmp / home_user1_changes)
1.1 Criar diretórios auxiliares
1.1.1 mkdir / tmp / home_user1_changes
1.1.2 mkdir / tmp / home_user1_relocated
1.2 Use a opção mount bind para montar o diretório no diretório "overlay unwritable" (/ tmp / home_user1_relocated)
1.2.1 mount --bind / home / user1 / tmp / home_user1_relocated
1.3 Use o sistema de arquivos unionfs para combinar o conteúdo original realocado com o conteúdo do diretório "changes"
1.3.1 unionfs-fuse -o vaca -o allow_other -o use_ino -o não vazio / tmp / home_user1_changes = RW: / tmp / home_user1_relocated = RO / home / user1
[agora todas as alterações em / home / user1 são salvas em / tmp / home_user1_changes, mas não em "overlaid" / home / user1]
1.4 Reversão
1.4.1 umount / home / user1
1.4.2 umount / tmp / home_user1_relocated
1.4.3 inspecione arquivos opcionalmente em / tmp / home_user1_changes
1.4.4 opcionalmente rm -fR / tmp / home_user1_changes, rmdir / tmp / home_user1_relocated
[/ home / user1 no estado como antes 1., modificações desde então residem em / tmp / home_user1_changes]
- Torne (não vazio) dir (por exemplo, / home / user1) unwritable para que todas as alterações e todos os arquivos recém-criados persistam apenas temporariamente (em / tmp / home_user1_changes)
2.1 Crie diretórios auxiliares
2.1.1 mkdir / tmp / home_user1_changes
2.1.2 mkdir / tmp / home_user1_relocated
2.2 Use a opção mount bind para montar o diretório para o diretório "overlay unwritable" (/ tmp / home_user1_relocated)
2.2.1 mount --bind / home / user1 / tmp / home_user1_relocated
2.3 Força o diretório / tmp / home_user1_changes a ser temporário
2.3.1 mount -t tmpfs -o size = 20% nenhum / tmp / home_user1_changes
2.4 Use o sistema de arquivos unionfs para combinar o conteúdo original realocado com o conteúdo do diretório "changes"
2.4.1 unionfs-fuse -o vaca -o allow_other -o use_ino -o não vazio / tmp / home_user1_changes = RW: / tmp / home_user1_relocated = RO / home / user1
[agora todas as alterações em / home / user1 são salvas em / tmp / home_user1_changes, mas não em "overlaid" / home / user1]
2.5 Reversão
2.5.1 umount / home / user1
2.5.2 umount / tmp / home_user1_relocated
2.5.3.1 opcionalmente inspecione arquivos em / tmp / home_user1_changes
2.5.3.2 umount / tmp / home_user1_changes [fará as alterações desaparecerem]
2.5.4 opcionalmente rm -fR / tmp / home_user1_changes, rmdir / tmp / home_user1_relocated
[/ home / user1 está agora no estado anterior a 1., todas as modificações desapareceram]