Disk ARchive  2.6.8
Full featured and portable backup and archiving tool
archive.hpp
Go to the documentation of this file.
1 /*********************************************************************/
2 // dar - disk archive - a backup/restoration program
3 // Copyright (C) 2002-2020 Denis Corbin
4 //
5 // This program is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU General Public License
7 // as published by the Free Software Foundation; either version 2
8 // of the License, or (at your option) any later version.
9 //
10 // This program is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU General Public License for more details.
14 //
15 // You should have received a copy of the GNU General Public License
16 // along with this program; if not, write to the Free Software
17 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 //
19 // to contact the author : http://dar.linux.free.fr/email.html
20 /*********************************************************************/
21 
25 
26 
27 #ifndef ARCHIVE_HPP
28 #define ARCHIVE_HPP
29 
30 #include "../my_config.h"
31 #include <vector>
32 #include <string>
33 #include <memory>
34 
35 #include "erreurs.hpp"
36 #include "path.hpp"
37 #include "statistics.hpp"
38 #include "archive_options.hpp"
39 #include "list_entry.hpp"
40 #include "crypto.hpp"
41 #include "archive_summary.hpp"
43 #include "user_interaction.hpp"
44 
45 
46 namespace libdar
47 {
48  // need to declare class database friend of class archive.
49  // class database need to access the archive table of content
50  // though exposing it by mean of a public method of class
51  // archive would let it visibile to the API, thing we do not
52  // want
53  class database;
54 
57 
59 
63 
64  class archive
65  {
66  public:
67 
69 
76  archive(const std::shared_ptr<user_interaction> & dialog,
77  const path & chem,
78  const std::string & basename,
79  const std::string & extension,
80  const archive_options_read & options);
81 
82 
84 
103  archive(const std::shared_ptr<user_interaction> & dialog,
104  const path & fs_root,
105  const path & sauv_path,
106  const std::string & filename,
107  const std::string & extension,
108  const archive_options_create & options,
109  statistics * progressive_report);
110 
112 
127 
128  archive(const std::shared_ptr<user_interaction> & dialog,
129  const path & sauv_path,
130  std::shared_ptr<archive> ref_arch1,
131  const std::string & filename,
132  const std::string & extension,
133  const archive_options_merge & options,
134  statistics * progressive_report);
135 
137 
147 
148  archive(const std::shared_ptr<user_interaction> & dialog,
149  const path & chem_src,
150  const std::string & basename_src,
151  const std::string & extension_src,
152  const archive_options_read & options_read,
153  const path & chem_dst,
154  const std::string & basename_dst,
155  const std::string & extension_dst,
156  const archive_options_repair & options_repair);
157 
158 
160 
165 
166  archive(const archive & ref) = delete;
167  archive(archive && ref) = delete;
168  archive & operator = (const archive & ref) = delete;
169  archive & operator = (archive && ref) = delete;
170 
172  ~archive();
173 
174 
176 
194  statistics op_extract(const path &fs_root,
195  const archive_options_extract & options,
196  statistics *progressive_report);
197 
199 
201  void summary();
202 
205 
206 
208 
216  void op_listing(archive_listing_callback callback,
217  void *context,
218  const archive_options_listing & options) const;
219 
221 
234  statistics op_diff(const path & fs_root,
235  const archive_options_diff & options,
236  statistics * progressive_report);
237 
238 
240 
259  statistics op_test(const archive_options_test & options,
260  statistics * progressive_report);
261 
262 
264 
273  void op_isolate(const path &sauv_path,
274  const std::string & filename,
275  const std::string & extension,
276  const archive_options_isolate & options);
277 
278 
280 
287  void *context,
288  const std::string & dir,
289  bool fetch_ea = false);
290 
292 
301  const std::vector<list_entry> get_children_in_table(const std::string & dir, bool fetch_ea = false) const;
302 
304  bool has_subdirectory(const std::string & dir) const;
305 
307  const entree_stats get_stats() const;
308 
310  const std::list<signator> & get_signatories() const;
311 
314  void init_catalogue() const;
315 
317 
321 
324 
326 
334  U_64 get_first_slice_header_size() const;
335 
337 
339  U_64 get_non_first_slice_header_size() const;
340 
341 
342  private:
343  class i_archive;
344  std::shared_ptr<i_archive> pimpl;
345 
346  // see the comment near the forward declaration
347  // of class database above for explanations
348  friend class database;
349  };
350 
351 } // end of namespace
352 
353 #endif
libdar::archive::get_children_in_table
const std::vector< list_entry > get_children_in_table(const std::string &dir, bool fetch_ea=false) const
getting information about the given directory (alternative to get_children_of)
libdar::archive::op_isolate
void op_isolate(const path &sauv_path, const std::string &filename, const std::string &extension, const archive_options_isolate &options)
this methodes isolates the catalogue of a the current archive into a separated archive
libdar::archive::op_extract
statistics op_extract(const path &fs_root, const archive_options_extract &options, statistics *progressive_report)
extraction of data from an archive
libdar::archive::get_first_slice_header_size
U_64 get_first_slice_header_size() const
get the first slice header
user_interaction.hpp
defines the interaction interface between libdar and users.
libdar::archive_listing_callback
void(*)(const std::string &the_path, const list_entry &entry, void *context) archive_listing_callback
callback function type expected for archive::op_listing and archive::get_children_of()
Definition: archive_listing_callback.hpp:42
list_entry.hpp
class of objects describing an entry in the archive, used by archive::get_children_in_table
libdar::archive::init_catalogue
void init_catalogue() const
libdar::database
the database class defines the dar_manager database
Definition: database.hpp:51
libdar::archive::get_non_first_slice_header_size
U_64 get_non_first_slice_header_size() const
get the non first slice header
libdar::entree_stats
holds the statistics contents of a catalogue
Definition: entree_stats.hpp:48
libdar::archive::drop_all_filedescriptors
void drop_all_filedescriptors()
closes all filedescriptors and associated even when in sequential read mode
libdar::archive::get_children_of
bool get_children_of(archive_listing_callback callback, void *context, const std::string &dir, bool fetch_ea=false)
getting information about a given directory
libdar::archive::has_subdirectory
bool has_subdirectory(const std::string &dir) const
returns true if the pointed directory has one or more subdirectories
libdar::archive::op_listing
void op_listing(archive_listing_callback callback, void *context, const archive_options_listing &options) const
listing of the archive contents
libdar::archive::op_test
statistics op_test(const archive_options_test &options, statistics *progressive_report)
test the archive integrity
libdar::archive::summary
void summary()
display a summary of the archive
libdar::archive::op_diff
statistics op_diff(const path &fs_root, const archive_options_diff &options, statistics *progressive_report)
archive comparison with filesystem
libdar::archive_options_extract
class holding optional parameters used to extract files from an existing archive
Definition: archive_options.hpp:1193
erreurs.hpp
contains all the excetion class thrown by libdar
libdar::archive_options_listing
class holding optional parameters used to list the contents of an existing archive
Definition: archive_options.hpp:1336
libdar::archive::~archive
~archive()
the destructor
libdar::archive_options_repair
class holding optional parameters used to create an archive
Definition: archive_options.hpp:1604
libdar::archive::summary_data
archive_summary summary_data()
same information as summary() but as broken out data
archive_options.hpp
this file contains a set of classes used to transmit options to archive operation
libdar::path
the class path is here to manipulate paths in the Unix notation: using'/'
Definition: path.hpp:50
libdar::statistics
class used by libdar::archive class to give a summary of treated file during and after an operation
Definition: statistics.hpp:69
libdar::archive_options_read
class holding optional parameters used to read an existing archive
Definition: archive_options.hpp:63
libdar::archive_summary
the archive_summary class provides information about a given archive
Definition: archive_summary.hpp:44
statistics.hpp
class handling access to the data summary of treated files after and during each operation
libdar::archive_options_test
class holding optional parameters used to test the structure coherence of an existing archive
Definition: archive_options.hpp:1531
libdar::archive_options_merge
class holding optional parameters used to proceed to the merge operation
Definition: archive_options.hpp:900
libdar::archive::i_archive
the archive::i_archive class implements the most general operations on archives
Definition: i_archive.hpp:58
libdar::archive::get_signatories
const std::list< signator > & get_signatories() const
retrieving signature information about the archive
libdar::archive
the archive class realizes the most general operations on archives
Definition: archive.hpp:64
libdar::archive_options_create
class holding optional parameters used to create an archive
Definition: archive_options.hpp:275
libdar::archive::set_to_unsaved_data_and_FSA
void set_to_unsaved_data_and_FSA()
change all inode as unsaved (equal to differential backup with no change met)
archive_summary.hpp
datastructure returned by archive::summary_data
libdar::archive::archive
archive(const std::shared_ptr< user_interaction > &dialog, const path &chem, const std::string &basename, const std::string &extension, const archive_options_read &options)
this constructor opens an already existing archive (for reading) [this is the "read" constructor]
libdar::archive_options_isolate
class holding optional parameters used to isolate an existing archive
Definition: archive_options.hpp:691
libdar::archive::get_stats
const entree_stats get_stats() const
retrieving statistics about archive contents
crypto.hpp
the crypto algoritm definition
path.hpp
here is the definition of the path class
archive_listing_callback.hpp
definition of the user defined callback function used for archive listing
libdar
libdar namespace encapsulate all libdar symbols
Definition: archive.hpp:46