Linux tar: Nur - einige Dateien umwandeln

970
Bradley Odell

Ich schreibe ein Bash-Skript, das meine Anwendung in eine TAR-Datei packt. Die Dateien sind nicht auf der Festplatte so angeordnet, wie sie in der TAR-Datei angeordnet werden müssen. Daher entschied ich mich für die Option --transform.

Es scheint jedoch, dass der Befehl --transform global und nicht auf die Dateien angewendet wird, die danach eingefügt werden.

Beispiel:

tar \ --exclude='webmanager/bin/dev' \ --exclude='webmanager/.config.ini' \ --show-transformed-names \ --create --gzip --verbose \ --file 'output.tgz' \ -C '../../../' \ 'include' \ 'resources' \ 'webmanager' \ 'rootconfig.php' \ -C 'webmanager/bin/dev' \ 'index.php' \ 'README.md' \ --transform='s|^|webmanager/|r' \ '.config.ini' 

Im Grunde genommen nimmt dieser Code eine Datei von webmanager/bin/dev/.config.iniund platziert sie webmanager/.config.iniin der TAR-Datei. Ich möchte jedoch nur, dass die Datei .config.ini umgewandelt wird. Derzeit wird der gesamte Inhalt umgewandelt und mit dem Präfix versehen webmanager/. Ich hatte gehofft, dass sich dieser Befehl wie -C(aktuelles Verzeichnis ändern) verhält - wo er nur die Eingaben danach betrifft.

Ich habe die TAR-Manpages durchgesehen und kann nicht richtig herausfinden. Bitte helfen

1
Fühlen Sie sich frei, um einen Patch zu schreiben. Ipor Sircer vor 7 Jahren 0

1 Antwort auf die Frage

1
Alessandro Dotti Contra

Es scheint, dass die --transformOption in der Tat bei allen Dateien funktioniert. By the way, habe ich diese gefundene Seite über tardas könnten Ihnen irgendwie helfen.

Wenn ich kann, würde ich Ihnen einen anderen Ansatz vorschlagen: Legen Sie die Dateien nach Bedarf in einem temporären Verzeichnis ab ( cpBefehl wird es tun), ändern Sie Ihre .config.in mit sedund verwenden Sie dann, tarum alles zu packen. Sie können sogar ein Skript eines Makefiles erstellen, wenn Sie damit vertraut sind make.

Ich empfehle, Hardlinks (`cp -l`) zu erstellen, anstatt zu kopieren, um Zeit und Speicherplatz zu sparen. Kamil Maciorowski vor 7 Jahren 2
Ja das ist besser. Danke, dass du darauf hingewiesen hast. Alessandro Dotti Contra vor 7 Jahren 0