Разархивируйте частичную папку tar-файла из URL
У меня есть URL, который приводит к большому размеру tar-файла, около 200 ГБ, мне нужно извлечь одну папку этого файла в моей системе Linux. Из-за большого размера файла я не хочу загружать весь файл в мою систему Linux. Также у меня нет доступа к исходной системе.
Есть ли способ извлечь только небольшую часть файла tar.gz?
2 ответа
Чтобы извлечь только определенный каталог, вам нужно знать точные имена файлов. Подстановочные знаки не работают с tar. и команда будет выглядеть
curl -s -o - <URL>|tar xz /path/file1 /path/file2 ...
tar
Формат не позволяет напрямую обращаться к файлу (или каталогу) - это связано с тем, что файлы архива были последовательно считаны с носителя резервной копии.
Что вы, конечно, можете сделать, это остановить процесс после извлечения соответствующих частей. Вы бы сделали что-то вроде
curl -o - 'http://your/url' | tar -xvz your_filter
Это загрузит файл с самого начала и извлечет соответствующие части, как только у вас будет все, что вам нужно, вы можете остановить процесс, чтобы избежать загрузки остальных.
В зависимости от того, какой у вас доступ к исходному серверу, вы можете сделать лучше: у вас есть PHP без режима сохранения? Если да, вы можете извлечь то, что вам нужно, с помощью shell_exec
и друзья.