В то время как можно прервать X данных с помощью простого прокси, и перенаправление X-клиента к серверу, возможности прерывания текстовых данных являются довольно маленькими. В течение долгого времени приложения, т.е. инструментарии, использовали свой собственный рендеринг и только отправляют пиксельные карты на X-сервер для отображения.
Вы можете использовать dd
busybox. апплет с его аргументами bs
, count
и skip
для разделения большого файла на части.
dd
часть справочной страницы из busybox
:
dd [if = FILE] [of = FILE] [ibs = N] [obs = N] [bs = N] [count = N] [skip = N]
[seek = N] [conv = notrunc | noerror | sync | fsync]Скопируйте файл с преобразованием и форматированием {{1} } if = FILE Читать из ФАЙЛА вместо стандартного ввода of = FILE Записывать в ФАЙЛ вместо стандартного вывода bs = N Чтение и запись N байтов за раз ibs = N Чтение N байтов за раз obs = N Записать N байтов за раз count = N Копировать только N входных блоков skip = N Пропустить N входных блоков seek = N Пропустить N блоков вывода conv = notrunc Не обрезать выходной файл conv = noerror Продолжить после ошибок чтения conv = sync Заполнить блоки нулями conv = fsync Физически записывать данные перед завершением
Итак, в основном вы должны сделать что-то вроде этого:
$ dd if=bigfile of=part.0 bs=1024 count=1024 skip=0
$ dd if=bigfile of=part.1 bs=1024 count=1024 skip=1024
$ dd if=bigfile of=part.2 bs=1024 count=1024 skip=2048
Для каждой части.X
файл dd
записывает count * bs bytes
, игнорируя первые пропустить
байтов из входного файла.
Самый простой однострочный апплет (объединение sed
, xargs
и dd
апплета из busybox) может выглядеть так:
seq 0 19 | xargs -n1 sh -c 'dd if=bigfile of=part.$0 bs=1024 count=1024 skip=$(expr $0 \* 1024)'
дает 20 ] part.X
файлы размером не более 1048576 байт
.
Пример splittig bigfile
:
$ ls -l
total 2940
-rw-rw-r-- 1 user user 3000000 Apr 27 13:21 bigfile
$ seq 0 20 | xargs -n1 sh -c 'dd if=bigfile of=part.$0 bs=1024 count=1024 skip=$(expr $0 \* 1024)'
1024+0 records in
1024+0 records out
1024+0 records in
1024+0 records out
881+1 records in
881+1 records out
0+0 records in
0+0 records out
[...]
$ ls -l
total 5968
-rw-rw-r-- 1 user user 3000000 Apr 27 13:21 bigfile
-rw-rw-r-- 1 user user 1048576 Apr 27 13:43 part.0
-rw-rw-r-- 1 user user 1048576 Apr 27 13:43 part.1
-rw-rw-r-- 1 user user 0 Apr 27 13:43 part.10
-rw-rw-r-- 1 user user 0 Apr 27 13:43 part.11
-rw-rw-r-- 1 user user 0 Apr 27 13:43 part.12
-rw-rw-r-- 1 user user 0 Apr 27 13:43 part.13
-rw-rw-r-- 1 user user 0 Apr 27 13:43 part.14
-rw-rw-r-- 1 user user 0 Apr 27 13:43 part.15
-rw-rw-r-- 1 user user 0 Apr 27 13:43 part.16
-rw-rw-r-- 1 user user 0 Apr 27 13:43 part.17
-rw-rw-r-- 1 user user 0 Apr 27 13:43 part.18
-rw-rw-r-- 1 user user 0 Apr 27 13:43 part.19
-rw-rw-r-- 1 user user 902848 Apr 27 13:43 part.2
-rw-rw-r-- 1 user user 0 Apr 27 13:43 part.3
-rw-rw-r-- 1 user user 0 Apr 27 13:43 part.4
-rw-rw-r-- 1 user user 0 Apr 27 13:43 part.5
-rw-rw-r-- 1 user user 0 Apr 27 13:43 part.6
-rw-rw-r-- 1 user user 0 Apr 27 13:43 part.7
-rw-rw-r-- 1 user user 0 Apr 27 13:43 part.8
-rw-rw-r-- 1 user user 0 Apr 27 13:43 part.9
Восстановление можно легко выполнить с помощью cat
(или dd
снова с параметром seek
) . Файлы с 0 байтами могут быть пропущены:
$ cat part.0 part.1 part.2 > bigfile.res
$ diff bigfile bigfile.res
В зависимости от ваших потребностей вы не должны использовать seq
, вычислять конкретный размер вашего большого файла и делать все это в сценарии оболочки.
Я полагаю, что вы можете загрузить статически связанные Busybox Binary для вашего микроконтроллера на основе ARM: http://www.busybox.net/downloads/binaries/latest/
Насколько я знаю, все двоичные файлы при условии, что здесь есть все утилиты, которые здесь описаны: http://www.busybox.net/downloads/busybox.html
Итак, вы будете возможность использовать разделенную утилиту очень простой способ.