private void unpackData() {
        File tmp = new File(backup);

        if(!tmp.exists()) {
            error("It seems you don't have a '" + backup + "' yet. Stopping.");
            return;
        }

        try {
            BufferedInputStream input = new BufferedInputStream(new FileInputStream(tmp));

            new File(filePrefix).mkdirs();
            new File(filePrefix).delete();
            BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(filePrefix));

            byte header[] = new byte[24];
            Util.readBlocking(header, input);

            // System.out.println("Read header 24 bytes once");

            TarExtractor tar = new TarExtractor(new InflaterStream(input));
            TarHeader theader = null;

            while((theader = tar.readNextFileHeader()) != null) {

                byte[] content = tar.readNextFile();

                System.out.println("Found file " +
                                theader.getFileName());
                if(theader.getFileName().endsWith(file)) {
                    System.out.println("Found file " +
                    theader.getFileName());

                    out.close();
                    new File(fileHeader).mkdirs();
                    new File(fileHeader).delete();
                    out = new BufferedOutputStream(new FileOutputStream(fileHeader));
                    out.write(header); // As good a place as anywhere else
                    out.write(theader.getBytes());
                    out.close();

                    new File(fileSave).mkdirs();
                    new File(fileSave).delete();
                    out = new BufferedOutputStream(new FileOutputStream(fileSave));
                    out.write(content);
                    out.close();

                    new File(filePostfix).mkdirs();
                    new File(filePostfix).delete();
                    out = new BufferedOutputStream(new FileOutputStream(filePostfix));
                    continue;
                }
                // System.out.println("Skipping file " + theader.getFileName());

                out.write(theader.getBytes());
                if(content.length > 0) {
                    out.write(content);
                    if(content.length % 512 != 0) {
                        out.write(new byte[512 - content.length % 512]);
                    }
                }
            }

            out.close();
            input.close();
        } catch(Exception e) {
            error("It seems something went wrong: " + e.getMessage());
            e.printStackTrace();
            return;
        }

        info("Your file '" + fileSave + "' is now ready.");
    }