How to Compress and Split Files in Ubuntu

In Ubuntu, the Archive Manager (or file-roller) has make it easy for anyone to compress and zip up a file or folder, but if you have a large file, say 20Gb, and you want to back it up to the CD/DVD, you will find that no amount of compression can you reduce the file size to fit into 1 CD/DVD. In such case, it is a better solution to compress and split the large file into several smaller files and store them separately. This also applies if you want to share a large file on a file-sharing site. Splitting the compressed file into several smaller files will make it easier for others to download.

Let’s say that the large file is a movie file found in /home/username/movie/large-file.avi and you want to compress, split and store the smaller files at the folder /home/username/movie/split-flies/, this is what you type in the terminal:

cd movie/split-files (change the filepath to where you want to keep the split files)
tar -cvj /home/username/movie/large-files.avi | split -b 650m -d – “large-files.tar.bz.”

You will now see several files appearing at the split-files folder, each with file size of 650MB and with filenames large-files.tar.bz.00, large-files.tar.bz.01, large-files.tar.bz.02, etc.

To recover and extract the split files, type

cat large-files.tar.bz.* > large-files.tar.bz
tar -xvj large-file.tar.bz

and you can get the original file back.

Do you know of any other ways to compress and split files in Ubuntu?

  • Pingback: 8 Ways to Maintain a Clean, Lean Ubuntu Machine - Make Tech Easier

  • Pingback: How to Split Files in Ubuntu « TTC Shelbyville - Technical Blog

  • qiet72

    You wrote “tar -xvf large-file.tar.bz”
    It should read “tar -xvjf large-file.tar.bz” because the tar file was compress with bzip2 and needs to be uncompressed with the same program.

    Another more optimal way would be:
    “cat large-file.tar.gz.* | tar -xvj”

  • qiet72

    You wrote “tar -xvf large-file.tar.bz”
    It should read “tar -xvjf large-file.tar.bz” because the tar file was compress with bzip2 and needs to be uncompressed with the same program.

    Another more optimal way would be:
    “cat large-file.tar.gz.* | tar -xvj”

  • http://maketecheasier.com/ Damien

    @qiet72: Yes. You are correct. Thanks for spotting and pointing out the error.

  • http://maketecheasier.com Damien

    @qiet72: Yes. You are correct. Thanks for spotting and pointing out the error.

  • Pingback: Mel The Geek and More… » 8 Ways to Maintain a Clean, Lean Ubuntu Machine

  • Joel

    From looking around this also will work:

    split -d –bytes=104857600 file.rar

    and

    cat < file.rar.*

  • Joel

    From looking around this also will work:

    split -d –bytes=104857600 file.rar

    and

    cat < file.rar.*

  • Joel

    Oops, I just noticed that in my comment it’s doing the same thing as what this tutorial says. I should pay better attention to the whole command next time. Thanks for this guide :D

  • Joel

    Oops, I just noticed that in my comment it’s doing the same thing as what this tutorial says. I should pay better attention to the whole command next time. Thanks for this guide :D

  • lance

    Is their a way to do this with 7zip using deflate64

    7z a -t=zip -mm=deflate64 archive.zip file

    is how you just zip a file. but how do you split it?

  • lance

    Is their a way to do this with 7zip using deflate64

    7z a -t=zip -mm=deflate64 archive.zip file

    is how you just zip a file. but how do you split it?

  • lance

    Is their a way to do this with 7zip using deflate64

    7z a -t=zip -mm=deflate64 archive.zip file

    is how you just zip a file. but how do you split it?

  • Florian Urban

    Hi!
    I´m i newbie, who just installed ubuntu as my las chanche to recover my shit from my laptop to my external hdd.
    io don´t look tru these command.
    My File is an iso. and its in the directory: /media/Data/movies
    filename: HD12.iso
    How do i have to enter these command in the Terminal?
    Should it looks like this: (from the example above)
    cd movie/split-files tar -cvj /home/username/movie/large-files.avi | split -b 650m -d – “large-files.tar.bz.”
    Can somebody help me, and post the correct command.
    That would be very helpful!
    Thanx!

  • Florian Urban

    Hi!
    I´m i newbie, who just installed ubuntu as my las chanche to recover my shit from my laptop to my external hdd.
    io don´t look tru these command.
    My File is an iso. and its in the directory: /media/Data/movies
    filename: HD12.iso
    How do i have to enter these command in the Terminal?
    Should it looks like this: (from the example above)
    cd movie/split-files tar -cvj /home/username/movie/large-files.avi | split -b 650m -d – “large-files.tar.bz.”
    Can somebody help me, and post the correct command.
    That would be very helpful!
    Thanx!

    • http://maketecheasier.com/ Damien

      First, create a folder call “spilt-files” in the Movies folder.

      Enter the following command in the terminal:

      cd ~/Movies/spilt-files
      tar -cvj /media/Data/movies/HD12.iso | split -b 650m -d – “large-files.tar.bz.”

      • Florian Urban

        THX !!!

    • http://maketecheasier.com/ Damien

      First, create a folder call “spilt-files” in the Movies folder.

      Enter the following command in the terminal:

      cd ~/Movies/spilt-files
      tar -cvj /media/Data/movies/HD12.iso | split -b 650m -d – “large-files.tar.bz.”

  • Florian Urban

    Hi!
    I´m i newbie, who just installed ubuntu as my las chanche to recover my shit from my laptop to my external hdd.
    io don´t look tru these command.
    My File is an iso. and its in the directory: /media/Data/movies
    filename: HD12.iso
    How do i have to enter these command in the Terminal?
    Should it looks like this: (from the example above)
    cd movie/split-files tar -cvj /home/username/movie/large-files.avi | split -b 650m -d – “large-files.tar.bz.”
    Can somebody help me, and post the correct command.
    That would be very helpful!
    Thanx!

    • http://maketecheasier.com Damien

      First, create a folder call “spilt-files” in the Movies folder.

      Enter the following command in the terminal:

      cd ~/Movies/spilt-files
      tar -cvj /media/Data/movies/HD12.iso | split -b 650m -d – “large-files.tar.bz.”

      • Florian Urban

        THX !!!

Use left/right keys to browse stories.