tar busybox или разделение большой файл в несколько меньших файлов

В то время как можно прервать X данных с помощью простого прокси, и перенаправление X-клиента к серверу, возможности прерывания текстовых данных являются довольно маленькими. В течение долгого времени приложения, т.е. инструментарии, использовали свой собственный рендеринг и только отправляют пиксельные карты на X-сервер для отображения.

2
27.04.2015, 12:54
2 ответа

Вы можете использовать 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 , вычислять конкретный размер вашего большого файла и делать все это в сценарии оболочки.

4
27.01.2020, 21:56

Я полагаю, что вы можете загрузить статически связанные Busybox Binary для вашего микроконтроллера на основе ARM: http://www.busybox.net/downloads/binaries/latest/

Насколько я знаю, все двоичные файлы при условии, что здесь есть все утилиты, которые здесь описаны: http://www.busybox.net/downloads/busybox.html

Итак, вы будете возможность использовать разделенную утилиту очень простой способ.

1
27.01.2020, 21:56

Теги

Похожие вопросы