Existe uma maneira de criar uma cópia de cópia em gravação de um diretório?

14

Estou pensando em uma situação em que eu teria algo que cria uma cópia de um diretório, ajusta alguns arquivos e, em seguida, processa o resultado. Isso é feito com bastante frequência, talvez algumas dezenas de vezes ao dia. (O caso de uso exato é testar envios de patches; enganar o código, corrigi-lo, criar / testar / relatório / etc.)

O que estou procurando pode ser feito criando uma nova estrutura de diretórios e preenchendo-a com links físicos do original. No entanto, isso só funciona se todas as ferramentas usadas excluir e recriar arquivos, em vez de editá-los no local.

Existe uma maneira de o sistema de arquivos copiar na gravação de um arquivo?


Nota: Estou ciente de que muitos FSs usam COW em um nível de bloco (todas as atualizações são feitas por meio de gravações em novos blocos), mas não é isso que eu quero.

BCS
fonte
Não parece mantido, mas talvez boklm.eu/copyfs
Zoredache
Então, você deseja copiar na gravação através do sistema de arquivos, mas não deseja um sistema de arquivos que use a cópia na gravação? Estou confuso.
Kamil Kisiel
1
@ Kamil Kisiel: Eu quero COW em nível de arquivo e não em nível de bloco. A COW em nível de arquivo resulta cpe lnfaz quase exatamente a mesma coisa. COW em nível de bloco é um truque para minimizar o intervalo em que os metadados do FS estão incorretos: en.wikipedia.org/wiki/ZFS#Copy-on-write_transactional_model
BCS
Em que tipo de sistema isso deve ser usado?
John Gardeniers
É especulativo o suficiente que, a menos que você saiba como fazê-lo para alguma configuração (nesse caso, basta publicá-lo), eu não gostaria que as pessoas gastassem tempo descobrindo como fazê-lo (a menos que estejam fazendo isso por diversão :)
BCS

Respostas:

7

Se você tem a plataforma de sua escolha para o seu servidor de arquivos, eu usaria uma versão recente do OpenSolaris e usaria o recurso de deduplicação do ZFS. Dessa forma, as cópias dos arquivos não ocupariam espaço adicional e nem mesmo os segmentos comuns entre os arquivos seriam replicados.

Você pode ler tudo sobre a desduplicação do ZFS nesta postagem no Blog de Jeff Bonwick .

Kamil Kisiel
fonte
1
O ZFS é incrível; ele vai mudar a maneira de pensar sobre o armazenamento
tegbains
Legal, a menos que haja um lado ruim em tê-lo ligado durante toda a unidade.
BCS
Adicionei um link a uma postagem do blog que possui mais detalhes técnicos. Você pode ver se é o que você precisa lá.
Kamil Kisiel
Nova url para cargo de Jeff Bonwick: blogs.oracle.com/bonwick/zfs-deduplication-v2
Mathieu
0

A maioria das soluções de virtualização Linux oferece COW em nível de arquivo entre sistemas operacionais virtualizados (copiados do WP):

  • SIM:
    • Docker, Linux-VServer, lmctfy, LXC, Singularidade, Virtuozzo, Sandboxie, systemd-nspawn, Solaris Containers (ZFS), cadeia FreeBSD (ZFS), OpenVZ
  • NÃO:
    • chroot, sysjail, WPARs, contas virtuais iCore, Turbo
ankostis
fonte
Embora esse link possa responder à pergunta, é melhor incluir aqui as partes essenciais da resposta e fornecer o link para referência. Respostas só-Link pode se tornar inválido se a página ligada muda
Romeo Ninov
-2

Pode ser SVN ou outra ferramenta de controle de versão (git, cvs)?

Dmitry Trukhanov
fonte
Pior ainda, porque cria duas cópias de cada arquivo e as suga em um soquete.
BCS