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 auf mein Linux-System herunterladen. Außerdem habe ich keinen SHH-Zugriff auf das Quellsystem.
Gibt es eine Möglichkeit, nur einen kleinen Teil der Tar.gz-Datei zu extrahieren?
Antwort1
Um nur ein bestimmtes Verzeichnis zu extrahieren, müssen Sie die genauen Dateinamen kennen. Platzhalter funktionieren bei tar nicht. und der Befehl sieht so aus
curl -s -o - <URL>|tar xz /path/file1 /path/file2 ...
Antwort2
Das tar
Format erlaubt es nicht, eine Datei (oder ein Verzeichnis) direkt anzusprechen - dies liegt daran, dassTAffearSchnitte sollten 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 in der Art tun wie
curl -o - 'http://your/url' | tar -xvz your_filter
Dadurch wird die Datei von Anfang an heruntergeladen und die relevanten Teile werden extrahiert. Wenn Sie alles haben, was Sie benötigen, können Sie den Vorgang abbrechen, um das Herunterladen des Rests zu vermeiden.
Je nachdem, welchen Zugriff Sie auf den Quellserver haben, könnten Sie sogar noch bessere Ergebnisse erzielen: Haben Sie PHP ohne Speichermodus? Wenn ja, können Sie das, was Sie brauchen, über shell_exec
und Freunde extrahieren.