Em sistemas operacionais baseados em Linux, isso pode ser feito com dispositivos de bloco de rede ou dispositivos de mapeamento de dispositivo. O arquivo que você obtém é um dispositivo de bloco.
com nbd
:
ln -s /path/to/first-file file.0
...
ln -s /path/to/last-file file.19
nbd-server -C /dev/null -m 127.0.0.1:12345 file
sudo nbd-client localhost 12345 /dev/nbd0
(a concatenação é /dev/nbd0
).
Com o mapeador de dispositivos (os tamanhos dos arquivos precisam ser múltiplos de 512):
sudo losetup /dev/loop0 file1
sudo losetup /dev/loop1 file2
s0=$(sudo blockdev --getsize /dev/loop0)
s1=$(sudo blockdev --getsize /dev/loop1)
printf '%s\n' "0 $s0 linear /dev/loop0 0" "$s0 $s1 linear /dev/loop1 0" |
sudo dmsetup create mybundle
(a concatenação é /dev/mapper/mybundle
).