Tar.gz не работает (ошибка сегментации) на разделе ext4

У меня странная проблема со сжатием tar gz.

Раньше у меня была SD-карта, смонтированная как раздел FAT32. Однако теперь я изменил его так, чтобы внешняя sdcard монтировалась в /data/media/0 и форматировалась в ext4 (или f2fs - без разницы, потому что эта ошибка возникает на обоих).

В старой настройке я мог запустить

tar cvzf

в папке в этом разделе без проблем.

Однако в этой новой настройке, если я запущу ее, я получу

tar cvzf
Segmentation fault.

Я обнаружил, что если я удалю параметр z, все будет нормально. Но полученный tar-файл не сжат gz и, следовательно, не подходит для моих приложений.

Я подтвердил это поведение на двух разных ПЗУ: CarbonRom JB 4.3.1 и CarbonRom KK 4.4.4.

Кто-нибудь знает, что здесь может быть не так? Android не может использовать файлы tar.gz на разделах, отличных от FAT32, или это вызвано какой-то другой проблемой?

Откуда твой tarбинарник? Вероятно, библиотека zlib не была скомпилирована должным образом или отсутствует.
Из самого рома. Как я уже сказал, команда TAR отлично работает при использовании в папке на разделе FAT32, смонтированном в /storage/sdcard1. Тот же двоичный файл и система TAR демонстрируют эту проблему при попытке выполнить точно такую ​​же операцию с разделом ext4, смонтированным в /data/media/0.

Ответы (1)

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

Вместо прямого вызова gzip из tar следующим образом:

tar cvzf

Я передаю вывод tar в gzip следующим образом:

tar -cv directory/ | gzip > archive.tar.gz

и ошибки сегментации больше нет.