it-swarm.com.de

tar: Entfernen des führenden `/ 'aus den Mitgliedsnamen

[email protected] # tar fcz bkup.tar.gz /home/foo/
tar: Removing leading `/' from member names

Wie kann ich dieses Problem lösen und die / auf Dateinamen?

149
superuser

Verwenden Sie die --absolute-names oder -P Option zum Deaktivieren dieser Funktion.

tar fczP bkup.tar.gz /home/foo/

tar fcz bkup.tar.gz --absolute-names /home/foo
80
Barmar

Das ist eigentlich eine Funktion, kein Problem. Archive mit absoluten Standorten sind ein Sicherheitsrisiko. Angreifer könnten solche Archive verwenden, um Benutzer dazu zu verleiten, Dateien an kritischen Systemstandorten zu installieren.

Ja, Sie könnten -P Verwenden. Aber was ist falsch daran, dass tar den Schrägstrich entfernen kann und der Benutzer des Archivs lediglich die Extraktion im Stammverzeichnis explizit durchführen muss? Dann wirken sie sich bewusst auf kritische Systemstandorte aus und können dies nicht versehentlich tun.

90
Mark Adler

Wenn Sie das in STDERR gedruckte "Entfernen von führenden"/"aus Mitgliedsnamen" entfernen möchten, diese führenden Schrägstriche jedoch standardmäßig weglassen möchten, habe ich eine hervorragende Lösung gefunden hier = von Kommentator Timsoft.

Die Lösung besteht darin, die Option -C zu verwenden, um das Verzeichnis in das Stammverzeichnis (/) zu ändern, und dann den zu archivierenden Dateibaum ohne einen führenden Schrägstrich anzugeben, da Sie jetzt brauche nur einen relativen Pfad. Dies macht dasselbe wie ein normaler Befehl zum Erstellen von Teer, es ist jedoch kein Strippen erforderlich:

tar fcz bkup.tar.gz -C / home/foo/
86
Marcus

Einen Monat zu spät, aber ich fand die am besten geeignete Lösung für meinen Fall (in einem Shell-Skript), in das übergeordnete Verzeichnis zu wechseln und dort den Befehl auszuführen.

cd /var/www/
tar -czf mysite.gz mysite

Anstatt:

tar -czf /var/www/mysite.gz /var/www/mysite
35
amd

So habe ich es mit der Brute-Force-Methode gemacht: 2>&1 | grep -v "Removing leading".

Zum Beispiel:

tar -cf "$BKUPDIR/${BKUPFILE}.tar" --overwrite --exclude '.*' --one-file-system "$SRCDIR" 2>&1 | grep -v  "Removing leading"
7
bjackfly

Versuchen zu benutzen -C nur für Pfad, der das Komprimieren mit vollständigen Pfaden verhindern würde:

[email protected] # tar fcz bkup.tar.gz -C /home/ foo/
3
Nick Tsai

Ich habe dieses Problem gelöst mit:

cd /home/foo && tar czf ~/backup.tar.gz .

auf diese Weise versuchen Sie nicht in erster Linie, absolute Pfade in das Teerarchiv einzufügen. Wenn Sie es im Stammverzeichnis des Dateisystems entpacken möchten, müssen Sie nur

cd / && tar xzf backupt.tar.gz nach der Übertragung.

2
James