LINUX.ORG.RU
ФорумAdmin

о стандартных потоках

 , ,


0

1

не работает команда
unxz -T4 -vdkc external_sd.tar.xz | cpio -pn --to-stdout -H tar | tar -czpv -f external_sd.tar.gz -
не разбираюсь в стандартных потоках

как из tar вытащить директорию и создать новый tar только с нужной директорией внутри
эта команда тоже не правильная
tar --numeric-owner -R --ignore-failed-read --ignore-command-error --ignore-zeros --read-full-records -xvpf external_sd.tar ./user -O | tar -czvpf external_sd-user.tar.gz

эта команда тоже не работает, здесь я пытаюсь ограничить нагрузку на смартфон 12MB/s
adb exec-in 'cd /external_sd/user/0/; tar -xpvf - "user/0/*" .' < pv -L 12m data2.tar


Так, давай я тебя научу читать маны и искать в них слова. Сперва набираешь

man tar
, потом вводишь
/xz
, нажимаешь Enter. И появятся строчки вверху:

       -J, --xz
              Filter the archive through xz(1).

Точно так же можно найти и команды для любых других форматов сжатия. А вообще:

   Compression options
       -a, --auto-compress
              Use archive suffix to determine the compression program.

       -I, --use-compress-program=COMMAND
              Filter data through COMMAND.  It must accept the -d option, for decompression.  The argument can contain command line options.

       -j, --bzip2
              Filter the archive through bzip2(1).

       -J, --xz
              Filter the archive through xz(1).

       --lzip Filter the archive through lzip(1).

       --lzma Filter the archive through lzma(1).

       --lzop Filter the archive through lzop(1).

       --no-auto-compress
              Do not use archive suffix to determine the compression program.

       -z, --gzip, --gunzip, --ungzip
              Filter the archive through gzip(1).

       -Z, --compress, --uncompress
              Filter the archive through compress(1).

       --zstd Filter the archive through zstd(1).

Vsevolod-linuxoid ★★★★★ ()
Последнее исправление: Vsevolod-linuxoid (всего исправлений: 3)
Ответ на: комментарий от doc0

Хм... попробуй выполнить вот эти две команды и покажи вывод:

file external_sd.tar.xz
xzcat external_sd.tar.xz > /dev/null

 — первая попробует определить тип файла, вторая команда попробует распаковать .tar.xz в просто .tar и перенаправит всё распакованное в никуда, но ошибки покажет.

Vsevolod-linuxoid ★★★★★ ()
Последнее исправление: Vsevolod-linuxoid (всего исправлений: 2)
Ответ на: комментарий от doc0

Слушай, ну это как бы очевидно. У тебя есть файл, который неправильный — он поврежден. Можешь вообразить это как книгу, из которой вырвали страницы.

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

Vsevolod-linuxoid ★★★★★ ()
Ответ на: комментарий от doc0

Зачем? У тебя уже есть .tar — можешь его запаковать в .tar.gz — но как на конечный результат (извлечь нужное из архива) повлияет то, в одну или в две команды ты его в .tar.gz превратишь?

Vsevolod-linuxoid ★★★★★ ()
Последнее исправление: Vsevolod-linuxoid (всего исправлений: 2)
Ответ на: комментарий от doc0

Не понял. Ты же уже извлекал из .tar только определенную директорию и уже создавал только .tar с только определенными директориями. То есть ты по идее знаешь, как именно это делать.

Vsevolod-linuxoid ★★★★★ ()
Ответ на: комментарий от doc0

Что у тебя за страсть к однострочникам, я не понимаю. Ты будто специально усложняешь задачу себе на ровном месте. Какой в этом смысл?

Это, к слову заметно по задаче в этой теме. У тебя команда напоминала машину Голдберга — при задаче «получить из одного другое» ты пошел по самому длинному пути преобразований.

У тебя что, места на диске нет, чтобы распаковать, а потом сжать? Ну попробуй archivemount.

Vsevolod-linuxoid ★★★★★ ()
Последнее исправление: Vsevolod-linuxoid (всего исправлений: 1)