Оболочка Linux: перепакуйте архив bz2 в xz

3179
osgx

Как мне упаковать архив .bz2 в формат .xz, если я хочу сохранить метку даты файла и его настройки chmod-chown?

Я могу использовать любые стандартные инструменты и xz, lzma, p7zip

4

2 ответа на вопрос

4
billc.cn

Вы можете просто использовать, bzcatчтобы удалить сжатие bzip2, но сохранить формат tar и затем передать результаты в xz:

bzcat file.tar.bz | xz > file.tar.xz 

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

и как "сохранить метку даты файла и его настройки chmod-chown?" osgx 13 лет назад 0
Метаданные файла хранятся в файле tar и не обрабатываются алгоритмом сжатия. Если не трогать смолу, ничего не изменится. Если вы сжали файл без tar, вы все равно уже потеряли всю метаинформацию. billc.cn 13 лет назад 0
извините, я спрашивал не о "tar.bz2", а о "bz2". Тар был добавлен в ваш ответ вами. Я хочу сохранить штамп файла File.bz2 (файл File.xz должен иметь такую ​​же печать). osgx 13 лет назад 0
In which case the question has nothing to do with bzip or xz because these formats do NOT store timestamps in the archive file. When you decompress, the timestamp of the compressed file will be used for the output. To set the timestamp of a file, you can use `touch`. `ls` has extra options to display the complete times of your original file. billc.cn 13 лет назад 0
Не внутри файла, а самого архива. Я хочу перепаковать много резервных копий bzip2 с помощью xz, а временная метка архива - важная информация в моем случае. osgx 13 лет назад 0
Then you can use `ls` (or `stat`)to get the dates from the bzip2's and use `touch` to set them on the new xz's. You'll probably have to write a shell script for this. billc.cn 13 лет назад 0
трудно разобрать вывод ls, потому что он в другом формате. У меня действительно много файлов, и я не могу конвертировать вручную; самые старые файлы 4+ года назад, новые - несколько недель. osgx 13 лет назад 0
В этом случае используйте `stat -c% X`, чтобы получить необработанные значения. Измените X на Y и Z, чтобы получить модификацию и изменить время. Смотрите man-страницу для `stat`. billc.cn 13 лет назад 1
2
brightlancer

Вы должны разбить это на две части

1) Конвертировать из bz2 в xz, на который ответил billc.cn

2) Исправьте владение, разрешения и временную метку файла xz в соответствии с bz2.

chown "`stat --printf '%u:%g' file.bz2`" file.xz chmod "`stat -c '%a' file.bz2`" file.xz touch -a -d "`stat -c '%x' file.bz2`" file.xz touch -m -d "`stat -c '%y' file.bz2`" file.xz