I'm trying to create a tar archive with a couple files, but rename those files in the archive. Right now I have something like this:
tar -czvf file1 /some/path/to/file2 file3 etc
But I'd like to do something like:
tar -czvf file1=file1 /some/path/to/file2=file2 file3=path/to/renamedFile3 etc=etc
Where, when extracted into directory testDir, you would see the files:
How can I do this?
You can modify filenames (among other things) with --transform
. For example, to create a tape archive /tmp/foo.tar
, putting files /etc/profile
and /etc/bash.bashrc
into it while also renaming profile
to foo
, you can do the following:
tar --transform='flags=r;s|bar|foo|' -cf file.tar file1 file2 bar fubar /dir/*
Results of the above is that bar
is added to file.tar
as foo
.
The r
flag means transformations are applied to regular files only. For more information see GNU tar documentation.
You can use --transform
multiple times, for example:
tar --transform='flags=r;s|foo|bar|' --transform='flags=r;s|baz|woz|' -cf file.tar /some/dir/where/foo/is /some/dir/where/baz/is /other/stuff/* /dir/too