Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

add a directory when creating tar archive

I want to tar some files (and directories) but want to create an additional directory those files should reside in.

So for example for the following directory structure:

myproject
  + file1
  + file2
  + subdir1
    + file3

I cd into the myproject directory and want to create the tar archive

tar czf myproject.tgz --place-into-dir myproject-1.0 file2 subdir1

to receive a tar archive with the following content:

myproject-1.0
  + file2
  + subdir1
    + file3

I am searching for an option like my fictional "--place-into-dir" above. So the files should not be placed directly into the archive, but instead into an additional directory that is only created in the tar archive.

I want to avoid first creating that directory, copying all the files to that directory and then deleting them again only to create the tar archive.

like image 561
radlan Avatar asked Dec 06 '16 07:12

radlan


2 Answers

You can create a directory on the fly inside the archive using --transform:

tar czf myproject.tgz --transform 's,^,myproject-1.0/,' file2 subdir1
like image 63
kalj Avatar answered Sep 28 '22 13:09

kalj


GNU tar has --transform option:

--transform=EXPRESSION, --xform=EXPRESSION

use sed replace EXPRESSION to transform file names

This should help you:

tar --transform 's/^myproject$/\0-1.0/' -czf myproject.tgz myproject
like image 33
Anton N. Petrov Avatar answered Sep 28 '22 13:09

Anton N. Petrov