42

How can I use the 7-Zip CLI (7za.exe) on Windows to create .tgz archives, as I use tar zcvf archive.tgz source_files on Linux?

0

3 Answers 3

18

Now Windows supports a native tar command:

tar -cvzf output.tar.gz input_dir

https://techcommunity.microsoft.com/t5/containers/tar-and-curl-come-to-windows/ba-p/382409

Found it here.

39

If you'd like to do it in a one-liner:

7za.exe a -ttar -so -an source_files | 7za.exe a -si archive.tgz

The -an switch tells 7-Zip not to parse the archive_name command line parameter that's normally required.

5
  • note: if you have no 7za.exe in your 7zip-folder you can also use 7zg.exe if available
    – anion
    Mar 1, 2018 at 16:16
  • 2
    In my case, neither 7za.exe nor 7zg.exe was there, but 7z.exe was.
    – JoL
    Nov 1, 2018 at 16:16
  • tar is required becausa a tgz or tar.gz is a tar file which has been gzipped. 7zip just don't have the ability to do all of it in just one step, so you have to pipe the output of the command which tars your files into the one that gzips your tar ^^. This is why when yopu open a tar.gz in 7zip you see a tar file inside.
    – DGoiko
    Oct 15, 2019 at 16:09
  • @DGoiko I know that part -- I just didn't understand why the archive.tar filename is required when the data is being streamed to stdout.
    – afrazier
    Oct 17, 2019 at 14:43
  • Oh, I see. I thought that gz needed the internal filename in order to be properly displayed, but maybe I was wrong.
    – DGoiko
    Oct 17, 2019 at 20:17
7

If you're just compressing 1 file into the tarball then 7za a archive.tgz source_file will work.

If you want to add lots of files to the tar then you need to do it in two steps: Create the tar 7za a archive.tar source_files Then compress it 7za a archive.tgz archive.tar

And, optionally, delete the 'temporary' tar del archive.tar

1
  • I wish the one-liner worked for file-collections instead of just individual files! Thx for the heads up. Jan 16, 2020 at 22:40

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .