Disk ARchive 2.7.14
Full featured and portable backup and archiving tool
Loading...
Searching...
No Matches
dar64-2.7.14-win64/include/dar/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 "//include/dar/libdar_my_config.h"
31
32#include <list>
33
34#include "//include/dar/archive.hpp"
35#include "//include/dar/database_options.hpp"
36#include "//include/dar/database_archives.hpp"
37#include "//include/dar/archive_num.hpp"
38#include "//include/dar/database_listing_callback.hpp"
39
40namespace libdar
41{
42
45
47
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
class archive_num stores the position of an archive inside a dar_manager database
the archive class realizes the most general operations on archives
the class i_database is the implementation of class database
the database class defines the dar_manager database
database(const std::shared_ptr< user_interaction > &dialog, const std::string &base, const database_open_options &opt)
this constructor reads database from a file
std::vector< std::string > get_options() const
return the options used with dar for restoration
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(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
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
database & operator=(const database &ref)=delete
disabling assignement operator
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'/'
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
std::deque< database_archives > database_archives_list
list of archives found in a database
compression
the different compression algorithm available
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, const std::string &filename, bool available_data, bool available_ea) database_listing_show_files_callback
called by the database::get_files() routine
libdar namespace encapsulate all libdar symbols