Por que não montar simplesmente o sistema de arquivos como somente leitura?
Se a escrita é escassa, você pode remontá-la como leitura / gravação ao salvar as imagens e depois remontá-las como somente leitura depois.
Estou tentando criar um método para armazenar arquivos de imagem a longo prazo de uma maneira em que eles possam ser acessados, mas não alterados (Write Once Read Many)
Eu olhei algumas opções diferentes e não encontrei nada que funcione ainda. A coisa mais próxima que encontrei foi usar chattr
para definir o bit imutável no ext4. A desvantagem disso é que somente o root pode definir o bit, mesmo que eu possua o arquivo. Eu prefiro não seguir esse caminho, se possível.
Por que não montar simplesmente o sistema de arquivos como somente leitura?
Se a escrita é escassa, você pode remontá-la como leitura / gravação ao salvar as imagens e depois remontá-las como somente leitura depois.
Se você definir essas ACLs padrão no diretório:
setfacl -dm u::rx,g::rx,o::rx the-directory
Os arquivos e diretórios criados nele serão somente de leitura (para todos).
No entanto, não impede que os usuários alterem as permissões dos arquivos criados posteriormente.
Observe também que ele substitui o umask
(ele tornará os arquivos legíveis para o mundo, mesmo que o umask
tenha restringido esse acesso de leitura).
Você poderia usar o controle de versão, possivelmente com o servidor VCS em um computador remoto. Você pode configurar vários usuários (um com privilégios de gravação, um sem) ou simplesmente confiar na capacidade de reverter alterações se cometer erros em sua verificação local.
Você ganha algumas coisas "de graça", como a capacidade de ver se fez alguma alteração (intencional ou acidentalmente) na sua compra local e o histórico de alterações (por exemplo, quando você adicionou cada arquivo). Também é fácil manter vários clientes em sincronia (digamos que você tenha um desktop e um laptop ou deseja compartilhar o repositório com um amigo), se todos puderem obter do mesmo repositório mestre.
Você ainda precisa manter a integridade do sistema de arquivos do VCS, é claro.
Acabei de medir meu repositório SVN local para binários: ele tem 21.000 arquivos (cerca de 98% de binários), com média de 1.2 MiB cada. Checkouts frescos por WiFi podem demorar um pouco:)
Tags archive filesystems