Disk ARchive 2.7.16
Full featured and portable backup and archiving tool
filtre.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#ifndef FILTRE_HPP
27#define FILTRE_HPP
28
29#include "../my_config.h"
30#include "mask.hpp"
31#include "pile.hpp"
32#include "catalogue.hpp"
33#include "path.hpp"
34#include "statistics.hpp"
35#include "archive_options.hpp"
37#include "filesystem_ids.hpp"
38
39namespace libdar
40{
41
44
45 extern void filtre_restore(const std::shared_ptr<user_interaction> & dialog,
46 const mask &filtre,
47 const mask & subtree,
48 const catalogue & cat,
49 const path & fs_racine,
50 bool fs_warn_overwrite,
51 bool info_details,
52 bool display_treated,
53 bool display_treated_only_dir,
54 bool display_skipped,
55 statistics & st,
56 const mask & ea_mask,
57 bool flat,
58 comparison_fields what_to_check,
59 bool warn_remove_no_match,
60 bool empty,
61 bool empty_dir,
62 const crit_action & x_overwrite,
63 archive_options_extract::t_dirty dirty,
64 bool only_deleted,
65 bool not_deleted,
66 const fsa_scope & scope,
67 bool ignore_unix_sockets
68 );
69
70 extern void filtre_sauvegarde(const std::shared_ptr<user_interaction> & dialog,
71 const mask &filtre,
72 const mask &subtree,
73 const pile_descriptor & pdesc,
74 catalogue & cat,
75 const catalogue & ref,
76 const path & fs_racine,
77 bool info_details,
78 bool display_treated,
79 bool display_treated_only_dir,
80 bool display_skipped,
81 bool display_finished,
82 statistics & st,
83 bool make_empty_dir,
84 const mask & ea_mask,
85 const mask &compr_mask,
86 const infinint & min_compr_size,
87 bool nodump,
88 const infinint & hourshift,
89 bool alter_time,
90 bool furtive_read_mode,
91 const filesystem_ids & same_fs,
92 comparison_fields what_to_check,
93 bool snapshot,
94 bool cache_directory_tagging,
95 bool security_check,
96 const infinint & repeat_count,
97 const infinint & repeat_byte,
98 const infinint & fixed_date,
99 const infinint & sparse_file_min_size,
100 const std::string & backup_hook_file_execute,
101 const mask & backup_hook_file_mask,
102 bool ignore_unknown,
103 const fsa_scope & scope,
104 const std::string & exclude_by_ea,
105 bool delta_signature, // whether to compute delta sig file on the saved file
106 const infinint & delta_sig_min_size, // size below which to never calculate delta sig
107 const mask & delta_mask, // mask defining for which file to calculate delta sig
108 bool delta_diff, // whether to perform delta diff backup when delta sig is present
109 bool auto_zeroing_neg_dates,
110 const std::set<std::string> & ignored_symlinks,
111 modified_data_detection mod_data_detect,
112 const delta_sig_block_size & delta_sig_block_len);
113
114 extern void filtre_difference(const std::shared_ptr<user_interaction> & dialog,
115 const mask &filtre,
116 const mask &subtree,
117 const catalogue & cat,
118 const path & fs_racine,
119 bool info_details,
120 bool display_treated,
121 bool display_treated_only_dir,
122 bool display_skipped,
123 statistics & st,
124 const mask & ea_mask,
125 bool alter_time,
126 bool furtive_read_mode,
127 comparison_fields what_to_check,
128 const infinint & hourshift,
129 bool compare_symlink_date,
130 const fsa_scope & scope,
131 bool isolated_mode);
132
133 extern void filtre_test(const std::shared_ptr<user_interaction> & dialog,
134 const mask &filtre,
135 const mask &subtree,
136 const catalogue & cat,
137 bool info_details,
138 bool display_treated,
139 bool display_treated_only_dir,
140 bool display_skipped,
141 bool empty,
142 statistics & st);
143
144 extern void filtre_merge(const std::shared_ptr<user_interaction> & dialog,
145 const mask & filtre,
146 const mask & subtree,
147 const pile_descriptor & pdesc,
148 catalogue & cat,
149 const catalogue * ref1,
150 const catalogue * ref2,
151 bool info_details,
152 bool display_treated,
153 bool display_treated_only_dir,
154 bool display_skipped,
155 statistics & st,
156 bool make_empty_dir,
157 const mask & ea_mask,
158 const mask & compr_mask,
159 const infinint & min_compr_size,
160 bool keep_compressed,
161 const crit_action & overwrite,
162 bool warn_overwrite,
163 bool decremental_mode,
164 const infinint & sparse_file_min_size,
165 const fsa_scope & scope,
166 bool delta_signature,
167 bool build_delta_sig,
168 const infinint & delta_sig_min_size,
169 const mask & delta_mask,
170 const delta_sig_block_size & signature_block_size);
171
172
174
176 extern void filtre_merge_step0(const std::shared_ptr<user_interaction> & dialog,
177 const catalogue * ref1,
178 const catalogue * ref2,
179 statistics & st,
180 bool decremental_mode,
181 crit_action* & decr,
182 const crit_action* & overwrite,
183 bool & abort,
184 thread_cancellation & thr_cancel);
185
187
188 extern void filtre_merge_step1(const std::shared_ptr<user_interaction> & dialog,
189 const mask & filtre,
190 const mask & subtree,
191 catalogue & cat,
192 const catalogue * ref1,
193 const catalogue * ref2,
194 bool info_details,
195 bool display_treated,
196 bool display_skipped,
197 statistics & st,
198 bool make_empty_dir,
199 bool warn_overwrite,
200 bool decremental_mode,
201 crit_action* & decr,
202 const crit_action* & overwrite,
203 bool & abort,
204 thread_cancellation & thr_cancel);
205
206
208
210 extern void filtre_merge_step2(const std::shared_ptr<user_interaction> & dialog,
211 const pile_descriptor & pdesc,
212 catalogue & cat,
213 bool info_details,
214 bool display_treated,
215 bool display_treated_only_dir,
216 const mask & compr_mask,
217 const infinint & min_compr_size,
218 bool keep_compressed,
219 const infinint & sparse_file_min_size,
220 bool delta_signature,
221 bool build_delta_sig,
222 const infinint & delta_sig_min_size,
223 const mask & delta_mask,
224 bool & abort,
225 thread_cancellation & thr_cancel,
226 bool repair_mode,
227 const delta_sig_block_size & signature_block_size);
228
229
230 void filtre_sequentially_read_all_catalogue(catalogue & cat,
231 const std::shared_ptr<user_interaction> & dialog,
232 bool lax_read_mode);
233
234
235
237
238} // end of namespace
239
240#endif
this file contains a set of classes used to transmit options to archive operation
here is defined the classe used to manage catalogue of archives
the catalogue class which gather all objects contained in a give archive
Definition: catalogue.hpp:60
the global action for overwriting
Definition: crit_action.hpp:81
the arbitrary large positive integer class
the generic class, parent of all masks
Definition: mask.hpp:62
the class path is here to manipulate paths in the Unix notation: using'/'
Definition: path.hpp:51
class used by libdar::archive class to give a summary of treated file during and after an operation
Definition: statistics.hpp:70
class to be used as parent to provide checkpoints to inherited classes
gather the ids of different filesystem to provide a filter based on filesystem
modified_data_detection
how to detect data has changed when some fields
Definition: archive_aux.hpp:44
comparison_fields
how to consider file change during comparison and incremental backup
Definition: archive_aux.hpp:53
std::set< fsa_family > fsa_scope
set of fsa families
Definition: fsa_family.hpp:70
void filtre_merge_step0(const std::shared_ptr< user_interaction > &dialog, const catalogue *ref1, const catalogue *ref2, statistics &st, bool decremental_mode, crit_action *&decr, const crit_action *&overwrite, bool &abort, thread_cancellation &thr_cancel)
initialize variables used for merging in step1 and step2
void filtre_merge_step2(const std::shared_ptr< user_interaction > &dialog, const pile_descriptor &pdesc, catalogue &cat, bool info_details, bool display_treated, bool display_treated_only_dir, const mask &compr_mask, const infinint &min_compr_size, bool keep_compressed, const infinint &sparse_file_min_size, bool delta_signature, bool build_delta_sig, const infinint &delta_sig_min_size, const mask &delta_mask, bool &abort, thread_cancellation &thr_cancel, bool repair_mode, const delta_sig_block_size &signature_block_size)
copies data of "cat" catalogue to the pdesc of a brand new archive
void filtre_merge_step1(const std::shared_ptr< user_interaction > &dialog, const mask &filtre, const mask &subtree, catalogue &cat, const catalogue *ref1, const catalogue *ref2, bool info_details, bool display_treated, bool display_skipped, statistics &st, bool make_empty_dir, bool warn_overwrite, bool decremental_mode, crit_action *&decr, const crit_action *&overwrite, bool &abort, thread_cancellation &thr_cancel)
builds a catalogue from two refs with the given policy and filters
void filtre_restore(const std::shared_ptr< user_interaction > &dialog, const mask &filtre, const mask &subtree, const catalogue &cat, const path &fs_racine, bool fs_warn_overwrite, bool info_details, bool display_treated, bool display_treated_only_dir, bool display_skipped, statistics &st, const mask &ea_mask, bool flat, comparison_fields what_to_check, bool warn_remove_no_match, bool empty, bool empty_dir, const crit_action &x_overwrite, archive_options_extract::t_dirty dirty, bool only_deleted, bool not_deleted, const fsa_scope &scope, bool ignore_unix_sockets)
here lies a collection of mask classes
bool nodump() noexcept
returns whether nodump flag support has been activated at compilation time
libdar namespace encapsulate all libdar symbols
Definition: archive.hpp:47
here is the definition of the path class
class pile definition. Used to manage a stack of generic_file objects
class handling access to the data summary of treated files after and during each operation
defines how to calculate delta signature block size based of file size to delta sign
to be able to cancel libdar operation while running in a given thread.