entpacken Sie einen Teilordner der tar-Datei von der URL

0

Ich habe eine URL, die zu einer großen tar-Datei (ca. 200 GB) führt. Ich muss einen Ordner dieser Datei in meinem Linux-System extrahieren. Aufgrund der großen Dateigröße möchte ich nicht die gesamte Datei in mein Linux-System herunterladen. Ich habe auch keinen Zugriff auf das Quellsystem.

Gibt es eine Möglichkeit, nur einen kleinen Teil der tar.gz-Datei zu extrahieren?

Ebin Manuval
quelle

Antworten:

0

Um nur ein bestimmtes Verzeichnis zu extrahieren, müssen Sie die genauen Dateinamen kennen. Platzhalter funktionieren nicht mit Teer. und der Befehl wird aussehen

curl -s -o - <URL>|tar xz /path/file1 /path/file2  ...
Romeo Ninov
quelle
0

Das tar Format erlaubt nicht die direkte Adressierung einer Datei (oder eines Verzeichnisses) - dies liegt daran, dass t Affe ar Schnittlauch sollte sequenziell von einem Sicherungsmedium gelesen werden.

Was Sie natürlich tun können, ist den Prozess zu stoppen, nachdem die relevanten Teile extrahiert wurden. Sie würden etwas im Sinne von tun

curl -o - 'http://your/url' | tar -xvz your_filter

Dadurch wird die Datei von Anfang an heruntergeladen und die relevanten Teile extrahiert. Sobald Sie alles haben, was Sie benötigen, können Sie den Vorgang anhalten, um das Herunterladen der restlichen zu vermeiden.

Je nachdem, welche Art von Zugriff Sie auf den Quellserver haben, können Sie es sogar besser machen: Haben Sie PHP ohne Speichermodus? Wenn ja, kannst du über was extrahieren shell_exec und Freunde.

Eugen Rieck
quelle
IMO müssen Sie entfernen f von tar oder verwenden f - STDIN als Eingabedatei verwenden
Romeo Ninov
1
@RomeoNinov Danke, guter Fang - bearbeitete meine Antwort.
Eugen Rieck