1 import java.io.BufferedOutputStream;
3 import java.io.FileInputStream;
4 import java.io.FileOutputStream;
5 import java.io.IOException;
7 import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
8 import org.apache.commons.compress.archivers.tar.TarArchiveOutputStream;
9 import org.apache.commons.compress.compressors.gzip.GzipCompressorOutputStream;
10 import org.apache.commons.compress.utils.IOUtils;
12 public class CompressionTest {
14 final static String KARAFLOG_FOLDER="/home/herbert/odl/distribution-karaf-0.6.1-Carbon/data/log/";
15 public static void main(String[] args)
17 createLogDownload("log.tar.gz");
19 private static void createLogDownload(String tarFilename) {
20 System.out.println("start creating tar file "+tarFilename);
21 File f = new File(tarFilename);
24 FileOutputStream fOut = null;
25 BufferedOutputStream bOut = null;
26 GzipCompressorOutputStream gzOut = null;
27 TarArchiveOutputStream tOut = null;
29 System.out.println(new File(".").getAbsolutePath());
30 fOut = new FileOutputStream(new File(tarFilename));
31 bOut = new BufferedOutputStream(fOut);
32 gzOut = new GzipCompressorOutputStream(bOut);
33 tOut = new TarArchiveOutputStream(gzOut);
34 addFileToTarGz(tOut, KARAFLOG_FOLDER, "", ".log");
35 } catch (IOException e) {
36 System.out.println("problem creating tar:" + e.getMessage());
49 System.out.println("finished creating tar file");
50 } catch (IOException e) {
51 System.out.println("problem closing streams:" + e.getMessage());
57 private static void addFileToTarGz(TarArchiveOutputStream tOut, String path, String base, final String filter)
59 File f = new File(path);
60 String entryName = base + f.getName();
61 TarArchiveEntry tarEntry = new TarArchiveEntry(f, entryName);
62 tOut.putArchiveEntry(tarEntry);
66 if( f.getName().contains(filter)) {
67 System.out.println("adding to tar:"+f.getName());
68 IOUtils.copy(new FileInputStream(f), tOut);
69 tOut.closeArchiveEntry();
72 System.out.println("file "+f.getName()+" filtered out, filter="+filter);
74 tOut.closeArchiveEntry();
75 File[] children = f.listFiles();
76 if (children != null) {
77 for (File child : children) {
78 System.out.println(child.getName());
79 addFileToTarGz(tOut, child.getAbsolutePath(), entryName + "/", filter);