В системе Linux, есть ли способ объединить ряд файлов в один открытый файл для чтения и записи, не занимая при этом еще N байтов дискового пространства? Я надеялся на что-то вроде монтирования этих файлов через loopback / devmapper для достижения этой цели.
У меня есть проблема, когда есть разделенные двоичные файлы, которые могут стать довольно большими. Я не хочу удваивать свои требования к пространству с помощью массивного дискового ввода-вывода, просто чтобы временно читать / записывать содержимое этих файлов, cat
объединяя их все в один огромный файл.
Я нашел этот проект здесь , но он, кажется, имеет очень специфический вариант использования и также зависит от Perl
Ответы:
Вы можете сделать это, комбинируя петлевые устройства и устройство отображения, благодаря «все является файлом». Но с одним ограничением: размер файла не может быть изменен (так как вы не можете увеличить количество блочных устройств, записывая их). Поэтому, если вы хотите добавить данные, вам нужно создать более крупное блочное устройство и перезаписать добавленные фиктивные данные.
Для расширения файла вы можете создать большой разреженный файл и использовать его как дополнительное устройство.
источник
Это можно сделать с помощью именованного канала в Linux.
Предположим, у вас есть файлы с именем
file0, file1, file2, file3, file4, file5
В С программно вы можете сделать
Затем используйте затем используйте mynewfile, как если бы вы читали из обычного файла.
mynewfile - это файл FIFO
источник
Для чтения, вы можете
less
несколько файлов , а затем использовать:n
и:p
варианты , чтобы пройти через них.Для записи без прямого доступа к файлам вы не сможете писать в них.
Вы также можете создать
vim
несколько файлов, и они будут проходить в том порядке, в котором они были вызваны (т.vim fileA fileB fileC
Е. - файл B открывается после закрытия файла A, файл C открывается после закрытия файла B).источник