< HomePage | Снимки
<- Сряда, 29 Септември 2010 | Начална страница | Вторник, 5 Октомври 2010 ->
Понеделник, 4 Октомври 2010

Имам следния случай - програма записва видео (mpeg ts) като в началото на всяка минута започва нов файл. Ако всички файлове се слепят, ще имам един голям файл, който мога да си гледам. Разделението на по една минута ми позволява с много прости действия да вземам каквито ми трябват отрязъци от време. Проблемът е, че събирането на файловете отнема доста време и място. Чудех дали няма по-умен начин "виртуално" да събера файловете, като всъщност те си стоят разделени, а файлова система или нещо друго ги представя като един файл.

Тук влиза в употреба fuse. FUSE е модул в Linux, който позволява да се пишат файлови системи като обикновени програми. Примери за такива файлови системи има много, а писането им не е голяма философия.

Резултатът от целодневното писане в петък е файловата система с неоригиналното име filejoinfs. Използвайки я, можете да направите списък от файлове, след което всички файлове ще ги виждате като един.

Кодът на нещото е напълно свободен, ползвайте както намерите за добре.

[ Коментари: 8 ]
Коментари

Супер! Това е полезно. Може да го сложиш в github или нещо подобно, ще е още по-супер :)

Написа Христо на 04-Oct-2010 11:49


Не ми се занимава. Ако някой иска да го прави с удоволствие бих пращал от време на време по някоя добавка, но ако почна да го правя аз, ще се чувствам длъжен да го поддържам, което в момента не ми е в TODO списъка за съжаление.

Написа Георги Чорбаджийски (www) на 04-Oct-2010 12:06


Аз може да се пробвам, ще се обадя. А иначе интересен е и обратният вариант - програмата да съхранява един файл, а FUSE да го представя от множество по-малки, т.е. filesplitfs. За пълнота :)

Написа Христо на 05-Oct-2010 10:56


За обратният случай може да се ползва: http://vi-server.org/vi/fusefile/

Написа Георги Чорбаджийски (www) на 05-Oct-2010 11:06


/ - Offtopic - /
Г-н Чорбаджийски,
искам да попитам възможно ли е със SlackCheck да ъпдейтвам
различни версии на slackware ?

Пример:
server1 - slackware 12.2
server2 - slackware 13.1
workstation - slackware current

Написа T. Geroff на 06-Oct-2010 16:36


Държа си отделни директории за отделните машини. Примерно имам една за 64 битовите и една за 32 битовите. Същата схема може да се приложи и за различни версии. Копирай цялото slackcheck, промени update_hosts и config.sh и си готов.

Написа Георги Чорбаджийски (www) на 07-Oct-2010 06:49


Здрасти,

Позволих си да взема сорса, да го набухам в https://gitorious.org/filejoinfs и да направя няколко дребни корекцийки. Надявам се с това да не ти създам грижи по поддръжката :)

Само че... хм... В твоя код файловата система се закача с опция allow_user; в Debian-ската реализация на FUSE не можах да намеря такава опция нито в текущата версия 2.8.4, нито в предишните 2.8.1 и 2.7.4. По-забавното е, че и Google не можа да намери кажи-речи нищо при търсене на FUSE allow_user - при теб работи ли действително? С коя версия на FUSE?

Написа Петър Пенчев (www) на 31-Mar-2011 08:26


При мен е fuse-2.8.5-i486-1, allow_user е грешка, би трябвало да е allow_other. Имам няколко допълнения, ще го клонирам при мен и като ги направя ще ти пратя пачове.

Написа Георги Чорбаджийски (www) на 31-Mar-2011 10:34