Disk ARchive  2.7.15
Full featured and portable backup and archiving tool
database.hpp
Go to the documentation of this file.
1 /*********************************************************************/
2 // dar - disk archive - a backup/restoration program
3 // Copyright (C) 2002-2024 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, see the AUTHOR file
20 /*********************************************************************/
21 
25 
26 
27 #ifndef DATABASE_HPP
28 #define DATABASE_HPP
29 
30 #include "../my_config.h"
31 
32 #include <list>
33 
34 #include "archive.hpp"
35 #include "database_options.hpp"
36 #include "database_archives.hpp"
37 #include "archive_num.hpp"
39 
40 namespace libdar
41 {
42 
45 
47 
51  class database
52  {
53  public:
55  database(const std::shared_ptr<user_interaction> & dialog);
56 
58 
62  database(const std::shared_ptr<user_interaction> & dialog,
63  const std::string & base,
64  const database_open_options & opt);
65 
67  database(const database & ref) = delete;
68 
70  database(database && ref) noexcept = delete;
71 
73  database & operator = (const database & ref) = delete;
74 
76  database & operator = (database && ref) noexcept = delete;
77 
80 
82 
86  void dump(const std::string & filename,
87  const database_dump_options & opt) const;
88 
89  // SETTINGS
90 
92 
98  void add_archive(const archive & arch,
99  const std::string & chemin,
100  const std::string & basename,
101  const database_add_options & opt);
102 
104 
112  archive_num max,
113  const database_remove_options & opt);
114 
116 
121 
123 
129  const std::string & basename,
131 
133 
139  const std::string & chemin,
140  const database_change_path_options & opt);
141 
143 
149  void set_options(const std::vector<std::string> &opt);
150 
152 
156  void set_dar_path(const std::string & chemin);
157 
159  void set_compression(compression algozip) const;
160 
162  void set_compression_level(U_I compr_level) const;
163 
164  // "GETTINGS"
165 
168 
170  std::vector<std::string> get_options() const;
171 
173 
176  std::string get_dar_path() const;
177 
180 
183 
185  std::string get_database_version() const;
186 
188 
196  void *context,
197  archive_num num,
198  const database_used_options & opt) const;
199 
201 
207  void *context,
208  path chemin) const;
209 
211 
216  void *context) const;
217 
218  // "ACTIONS" (not available with partially extracted databases)
219 
221 
225  void restore(const std::vector<std::string> & filename,
226  const database_restore_options & opt);
227 
229 
232  bool check_order() const;
233 
234  private:
235  class i_database;
236  std::unique_ptr<i_database> pimpl;
237 
238  };
239 
241 
242 } // end of namespace
243 
244 #endif
the archive class is defined in this module
class storing the position of an archive inside a database
class archive_num stores the position of an archive inside a dar_manager database
Definition: archive_num.hpp:47
the archive class realizes the most general operations on archives
Definition: archive.hpp:65
the class i_database is the implementation of class database
Definition: i_database.hpp:53
options to add an archive to base
options for changing a given archive's basename
options for changing a given archive's path
options to write a database to file
options to open a database
options to remove an archive from the base
options for restoration from database
options for file "used" in archive
the database class defines the dar_manager database
Definition: database.hpp:52
database(const std::shared_ptr< user_interaction > &dialog, const std::string &base, const database_open_options &opt)
this constructor reads database from a file
void set_path(archive_num num, const std::string &chemin, const database_change_path_options &opt)
change one's archive path recorded in the database
void set_dar_path(const std::string &chemin)
change the path to dar command
compression get_compression() const
returns the compression algorithm used on filesystem
bool check_order() const
check that all files's Data and EA are more recent when archive number grows within the database,...
void show_most_recent_stats(database_listing_statistics_callback callback, void *context) const
compute some statistics about the location of most recent file versions
U_I get_compression_level() const
returns the compression level used on file
database(const std::shared_ptr< user_interaction > &dialog)
this constructor build an empty database
~database()
database destructor (no implicit file saving)
void get_version(database_listing_get_version_callback callback, void *context, path chemin) const
list the archive where a give file is present
database_archives_list get_contents() const
provides the list of archive used to build the database
void set_compression_level(U_I compr_level) const
change the compression level to use when storing base in file
std::string get_dar_path() const
returns the path for dar
void dump(const std::string &filename, const database_dump_options &opt) const
write the database to a file (see database_header first)
database & operator=(const database &ref)=delete
disabling assignement operator
database(database &&ref) noexcept=delete
disabling move constructor
void restore(const std::vector< std::string > &filename, const database_restore_options &opt)
restore files calling dar on the appropriated archive
void remove_archive(archive_num min, archive_num max, const database_remove_options &opt)
remove an archive from a database
void set_options(const std::vector< std::string > &opt)
change the default options given to dar when performing restoration
void set_permutation(archive_num src, archive_num dst)
change order of archive within the database
std::vector< std::string > get_options() const
return the options used with dar for restoration
void get_files(database_listing_show_files_callback callback, void *context, archive_num num, const database_used_options &opt) const
list files which are present in a given archive
void set_compression(compression algozip) const
change compression to use when storing base in file
database(const database &ref)=delete
disabling copy constructor
void add_archive(const archive &arch, const std::string &chemin, const std::string &basename, const database_add_options &opt)
add an archive to the database
std::string get_database_version() const
return the database format version
void change_name(archive_num num, const std::string &basename, const database_change_basename_options &opt)
change one's archive basename recorded in the database
the class path is here to manipulate paths in the Unix notation: using'/'
Definition: path.hpp:51
this file stores the list of archives a database has been built from. it is part of the database head...
definition of the user defined callback function used for database listing
this file holds the options for database operations
std::deque< database_archives > database_archives_list
list of archives found in a database
void(*)(void *context, const std::string &filename, bool available_data, bool available_ea) database_listing_show_files_callback
called by the database::get_files() routine
void(*)(void *context, U_I number, const infinint &data_count, const infinint &total_data, const infinint &ea_count, const infinint &total_ea) database_listing_statistics_callback
called with teh information of statistics for each archive in turn
void(*)(void *context, archive_num num, db_etat data_presence, bool has_data_date, datetime data, db_etat ea_presence, bool has_ea_date, datetime ea) database_listing_get_version_callback
called with the information of presence for an entry in archive number num
compression
the different compression algorithm available
Definition: compression.hpp:46
libdar namespace encapsulate all libdar symbols
Definition: archive.hpp:47