symlink de arquivos concatenados?

1

Em um sistema Linux, eu tenho um conjunto de arquivos muito grandes, contendo uma longa lista de entradas, uma por linha, que são lidas uma por uma para criar certos arquivos de indexação para cada uma delas, que são usadas para outra processo mais tarde. Por exemplo:

indexprogram file1.txt
# creates file1.txt.idxA file1.txt.idxB file.txt.idxC file.txt.idxD
analysisprogram file1.txt
# reads file1.txt as well as the index files and produces some output

Eu gostaria de combinar os arquivos que tenho criando algo equivalente a um link simbólico de arquivos concatenados, para que eu possa reutilizar os arquivos e economizar espaço, e apenas produzir os arquivos de índice a partir da entrada combinada. Por exemplo:

create symlink of "cat file1.txt file2.txt file3.txt > file1.2.3.txt"
indexprogram file1.2.3.txt
# creates file1.2.3.txt.idxA file1.2.3.txt.idxB file1.2.3.txt.idxC file1.2.3.txt.idxD
analysisprogram file1.2.3.txt
# reads file1.2.3.txt as if it were a real file, reads index files, produces output

Existe uma maneira de criar essa concatenação simbólica de arquivos? Talvez usando pipes nomeados ou algum truque similar?

    
por 719016 06.09.2011 / 11:06

2 respostas

2

Não, não acho que isso seja possível.

Um arquivo é uma coleção de bytes em um disco, identificado por um ID único e alguns metadados, incluindo nome do arquivo, etc. Um link simbólico aponta para o ID único de um outro arquivo. Não sei de uma implementação em que um link aponta para vários destinos.

Para fazer isso, você pode querer usar um banco de dados, por exemplo sqlite ou algo semelhante.

Veja também este tópico relacionado link

    
por 06.09.2011 / 11:38
3

Tente isto (não testado)

mkfifo file1.2.3.txt
cat file1.txt file2.txt file3.txt > file1.2.3.txt
indexprogram file1.2.3.txt
cat file1.txt file2.txt file3.txt > file1.2.3.txt
analysisprogram file1.2.3.txt

Provavelmente, é mais limpo atualizar para indexprogram e analysisprogram para ler de stdin se nenhum nome de arquivo for dado na linha de comando.

cat file1.txt file2.txt file3.txt | indexprogram 
cat file1.txt file2.txt file3.txt | analysisprogram
    
por 06.09.2011 / 12:37

Tags