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