LINUX.ORG.RU

Скопировать файлы из одного архива tar в другой

 ,


0

1

Как бы это сделать? Гугл не помог.

Мне нужно при этом сохранить все атрибуты, в том числе владельца и группу файлов. Просто распаковать не вариант: если делать не из-под рута, tar не сможет выставить нужного владельца для распакованных файлов. Владелец и группа у всех файлов в архиве разные.

Уточнение. Мне надо только некоторые файлы извлечь, не все. А то бы, конечно, задача сводилась к cp old.tar new.tar

★★★★★

Последнее исправление: proud_anon (всего исправлений: 1)

Ответ на: комментарий от Black_Roland

Зачем такая задача?

Я сделал бэкап файлов с андроида при помощи adb, потом взял Android Backup Extractor, который преобразует .ab в .tar, теперь хочу вынуть только данные некоторых приложений.

tar -x -p -f /path/to/old.tar | tar -c -p -f /path/to/new.tar
А это точно сработает? Как же tar отличит, какие файлы в потоке где заканчиваются?

proud_anon ★★★★★
() автор топика
Последнее исправление: proud_anon (всего исправлений: 1)
Ответ на: комментарий от zolden

cp file1.tar file2.tar

Не, мне надо только некоторые, не все.

proud_anon ★★★★★
() автор топика
Ответ на: комментарий от proud_anon

Если не все файлы, то добавь параметр --exclude. Синтаксис точно не помню, глянь в манах, но примерно так:

tar -x -p -f --exclude={"file1", "file2"} /path/to/old.tar | tar -c -p -f /path/to/new.tar
или
tar -x -p -f --exclude="file1" --exclude="file2" /path/to/old.tar | tar -c -p -f /path/to/new.tar

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

Не работает чего-то.

$ tar -tf backup_modified.tar --wildcards '*/com.android.browser/*'
<выдаётся список файлов>

$  tar -xpf backup_modified.tar --wildcards '*/com.android.browser/*' | tar -cvpf new.tar
tar: Cowardly refusing to create an empty archive
Try 'tar --help' or 'tar --usage' for more information.

#Попытался ещё
$ tar -xpf backup_modified.tar --wildcards '*/com.android.browser/*' | tar -cvpf new.tar -
tar: -: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors

Почему-то tar не хочет читать stdin. Да и как бы он там файлы-то различил?

proud_anon ★★★★★
() автор топика
Ответ на: комментарий от proud_anon

Да и как бы он там файлы-то различил?

Да, что-то я наверное тупанул :) Не работает.

Black_Roland ★★★★
()

Просто распаковать не вариант: если делать не из-под рута, tar не сможет выставить нужного владельца для распакованных файлов. Владелец и группа у всех файлов в архиве разные.

Посмотри fakeroot. Это конечно костыль, но если другого варианта нет - вполне рабочий.

Deleted
()
Ответ на: комментарий от Deleted

Это конечно костыль, но если другого варианта нет - вполне рабочий.

Ых. А жаль. Я думал, есть какой-нибудь альтернативный тар, который это умеет.

Ограничился тем, что сделал бэкап с помощью приложения Slight Backup и забил и на adb, и на tar.

proud_anon ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.