Podemos mesclar arquivos binários sem qualquer operação de cópia manipulando o sistema de arquivos?

2

Eu gostaria de mesclar arquivos binários com eficiência usando um comando shell e rapidamente encontrei maneiras clássicas como esta:

cat file1 file2 > file3

Nada mal, mas:

  1. É lento. O acesso de IO é lento.
  2. Precisa de espaço extra. Eu não quero copiar os arquivos. Apenas concatene-os.

Os sistemas de arquivos são ótimos para lidar com a fragmentação de arquivos. Não podemos simplesmente mesclar arquivos usando esse mecanismo?

    
por zz64 19.02.2016 / 14:23

2 respostas

4

Você pode fazer isso:

cat file2 file3 [...] filen >> file1

Isso concatenará file2 , file3 , ..., filen ao final de file1 no local. O operador >> diz ao shell para gravar no final do arquivo .

Você quer aproveitar o sistema de arquivos para "manipular a fragmentação de arquivos". Infelizmente, não há nenhuma maneira geral de fazer isso. É porque os "sistemas de arquivos" são muito mais gerais do que os sistemas de arquivos nos discos - por exemplo, você tem NFS , FUSE , e muitos outros mecanismos que permitem expor qualquer tipo de recurso (não apenas bloqueia dispositivos como discos rígidos) como uma hierarquia de sistema de arquivos. Mesmo para sistemas de arquivos baseados em dispositivos de bloco, não há um mecanismo padrão para fazer isso, e eu também não conheço nenhum específico de implementação.

    
por 19.02.2016 / 14:48
-1
    dd if=firstfile.raw > completedfile.raw
    dd if=nfile.raw    >> completedfile.raw
    dd if=lastfile.raw >> completedfile.raw
    
por 20.03.2018 / 20:00