Есть ли один лайнер, который преобразует двоичный файл из прямого порядка байтов в обратный порядок байтов?

Корневой VG? Вы имеете в виду свой корневой LV?

Если так, это невозможно уменьшить, в то время как корень онлайн, (Вы могли отступить к ramfs, если у Вас есть физический доступ).

Единственный способ сделать это, начальная загрузка от внешние медиа (или раздел), и измените размер корневого раздела с resize2fs с lvresize

14
29.10.2015, 18:22
4 ответа

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

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

Другими словами, для преобразования порядка байтов необходимо описание типа данных.

34
27.01.2020, 19:50

Если вас не волнует содержимое файла и вы просто хотите поменять байты местами, попробуйте endconv . Это просто оболочка для стандартных функций преобразования байтов, поэтому она поддерживает преобразование в целые числа длиной 2, 4 и 8 байтов. Но это не один лайнер, потому что это отдельная программа.

2
27.01.2020, 19:50

Вы можете менять байты с помощью dd . Этого достаточно? Если нет, обновите свой вопрос, приведя пример входного файла и ожидаемого файла выходного файла.

echo hello >infile
dd conv=swab <infile >outfile

hex infile
   0000 68 65 6c 6c 6f 0a                                 hello.
hex outfile
   0000 65 68 6c 6c 0a 6f                                 ehll.o
32
27.01.2020, 19:50

Чтобы изменить порядок байтов файла, предполагая размер слова (32 -бит ), этот 1 лайнер должен работать для вас:

hexdump -v -e '1/4 "%08x"' -e '"\n"' input_file | xxd -r -p > output_file
5
27.01.2020, 19:50

Теги

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