I want to create a tar archive in a different directory rather than the current directory.
I tried this command:
tar czf file.tar.gz file1 -C /var/www/
but it creates the archive in the current directory. Why?
The easy way, if you don't particularly need to use -C
to tell tar
to change to some other directory, is to simply specify the full path to the archive on the command line. Then you can be in whatever directory you prefer to create the directory structure that you want inside the archive.
The following will create the archive /var/www/file.tar.gz
and put file1
from the current directory (whatever that happens to be) in it, with no in-archive path information.
tar czf /var/www/file.tar.gz file1
The path (to either the archive, the constituent files, or both) can of course also be relative. If file1
is in /tmp
, you are in /var/spool
and want to create the archive in /var/www
, you could use something like:
tar czf ../www/file1.tar.gz /tmp/file1
There's a million variations on the theme, but this should get you started. Add the v
flag if you want to see what tar
actually does.
$PWD
is, it seemed safest to use an absolute path in the example.
– user
Feb 15 '13 at 18:49
file1
in the tar archive will be /tmp
. This may or may not be what you expect.
– mouviciel
Dec 13 '13 at 08:50
I think, it should be:
tar czf file.tar.gz -C /var/www/ file1
Which works for me. It tells to change directory and then choose file.
file.tar.gz
in the current directory. -C
affects only what follows it. And supposedly doesn't affect -f
. tar (GNU tar) 1.34
– x-yuri
Jun 29 '21 at 18:58
tar.gz
in the current directory and adding file1
from /var/www
without /var/www
as prefix. It's worth mentioning that this is the opposite the OP wants, but is also quite useful. Also mind that glob *
does not work here!!
– netzego
Aug 09 '22 at 20:30
I turn the compressed data into a stream (-
) and easily rename and locate (>
) wherever I choose (I also always tar
the relative path (./
) so it's easier to deal with when uncompressing)
tar -cvf - ./dir-to-compress/* > /location-of-new-file/filename.tar
-C
is much more idiomatic (and shorter).
– Mahmoud Al-Qudsi
Aug 22 '17 at 19:46
-C
(which is not strange as its documented vaguely). For details see http://serverfault.com/q/416002/86283. – N.N. Feb 15 '13 at 18:48*
) does not work as indented when one uses the-C
flag. Because the globing will take place beforetar
change the directory. But for your purpose you don't need this flag as shown by the accepted answer. – netzego Aug 09 '22 at 20:35