Bonjour,
je suis à la recherche d'un code / librairie qui me permettrais de compresser un dossier en format tar.gz sous linux en C++.
J'ai essayer déjà Boost mais je me suis confronté à un problème que je n'ai pas résolut (voir code ci dessous)
La lib: zlib ne permet pas la compression de dossier mais uniquement de fichier unique.
Et quand a la lib: libtar, je n'ai quasiment trouvé aucun exemple fiable.
Merci à vous si vous avez une idée..
PS: mon code avec la lib: boost
Résultat:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 #include <cstddef> #include <string> #include "Zipclass.h" #include "zlib.h" #include <boost/iostreams/filtering_stream.hpp> #include <boost/iostreams/copy.hpp> #include <boost/iostreams/filter/zlib.hpp> #include <boost/iostreams/filter/gzip.hpp> #include <boost/iostreams/device/file.hpp> #include <boost/iostreams/device/array.hpp> #include <boost/iostreams/device/back_inserter.hpp> #include <boost/iostreams/filter/test.hpp> #include <boost/ref.hpp> #include <boost/range/iterator_range.hpp> #include <boost/test/test_tools.hpp> #include <boost/test/unit_test.hpp> #define TEMP_DIRECTORIE "/opt/appl/var/" #define compressionLevel 0 using namespace std; using namespace boost; //using namespace boost::iostreams; Zipclass::Zipclass(std::string input_directory, std::string output_file) { std::vector<char> temp, dest; std::string fileName = std::string(TEMP_DIRECTORIE) + std::string("tempfile.gz"); std::ofstream file; file.open(fileName.c_str(), std::ios_base::out | std::ios_base::binary); //filtering_stream<output> out; boost::iostreams::gzip_params params; params.file_name = fileName; params.level = boost::iostreams::zlib::best_compression; boost::iostreams::gzip_compressor out(params); }
./../src/Zipclass.cpp:52: undefined reference to `boost::iostreams::zlib::default_compression'
./../src/Zipclass.cpp:52: undefined reference to `boost::iostreams::zlib::deflated'
./../src/Zipclass.cpp:52: undefined reference to `boost::iostreams::zlib::default_strategy'
./../src/Zipclass.cpp:52: undefined reference to `boost::iostreams::zlib::best_compression'
ps je travail sous eclipse C++, avec ubuntu
Thx
Partager