Pada sistem Linux, apakah ada cara untuk menggabungkan serangkaian file menjadi satu file terbuka untuk membaca dan menulis sementara tidak benar-benar mengambil N byte lain dari ruang disk? Saya berharap sesuatu seperti memasang file-file ini melalui loopback / devmapper untuk mencapai ini.
Saya memiliki masalah di mana ada file biner terpecah yang bisa menjadi cukup besar. Saya tidak ingin menggandakan persyaratan ruang saya dengan IO disk besar hanya untuk sementara membaca / menulis konten dari file-file ini dengan cat
menggabungkan semuanya menjadi satu file besar.
Saya menemukan proyek ini di sini , tetapi tampaknya memiliki use case yang sangat spesifik dan juga tergantung perl
Jawaban:
Anda dapat melakukannya dengan menggabungkan perangkat loop dan perangkat mapper, berkat "semuanya adalah file". Tetapi dengan satu batasan: Ukuran file tidak dapat diubah (karena Anda tidak dapat menambah perangkat blok dengan menulisnya). Jadi jika Anda ingin menambahkan data maka Anda harus membuat perangkat blok yang lebih besar dan menimpa data dummy yang ditambahkan.
Untuk memperluas file Anda dapat membuat file jarang besar dan menggunakannya sebagai perangkat tambahan.
sumber
Ini bisa dilakukan dengan menggunakan pipa bernama di Linux.
Asumsikan Anda memiliki file yang bernama
file0, file1, file2, file3, file4, file5
Di C secara programatik bisa Anda lakukan
Kemudian gunakan kemudian gunakan mynewfile seperti kami, Anda akan membaca dari file normal.
mynewfile adalah file FIFO
sumber
Untuk membaca, Anda dapat
less
beberapa file dan kemudian menggunakan:n
dan:p
pilihan untuk pergi melalui mereka.Untuk menulis, tanpa mengakses file secara langsung Anda tidak akan dapat menulis kepada mereka.
Anda dapat
vim
beberapa file juga, dan itu hanya akan pergi melalui urutan mereka dipanggil (mis.vim fileA fileB fileC
- fileB dibuka setelah fileA ditutup, fileC dibuka setelah fileB ditutup).sumber