Я хотел бы проверить, находится ли файл в архиве tar с gzip. Например, я хочу проверить, присутствует ли / etc / passwd в архиве backup_2010-09-27.tar.gz
Глупым решением может быть:
tar -tzf backup_2010-09-27.tar.gz | grep '/etc/passwd'
Но на это нужно время. Есть ли лучшее решение?
Попробуйте это (опустите начальную косую черту):
tar -tzf backup_2010-09-27.tar.gz etc/passwd
его процесс архивирования, который отнимает время, и нет возможности связаться с участниками архива tar до его архивирования. Я не знаю, насколько поможет явное указание смещения члена при перечислении tar, но если процесс поиска члена быстрее, чем полный листинг, тогда:
tar -K etc/passwd -tzf backup_2010-09-27.tar.gz| head -1
Я сомневаюсь в этом.
вы также можете попробовать извлечь файл и проверить код возврата, чтобы избавиться от полного перечисления архива и последующего поиска.
echo etc/passwd | tar -T - -K etc/passwd -Oxzf backup_2010-09-27.tar.gz >/dev/null
$? должно быть ноль
все же, распаковка ....