Disk ARchive 2.8.0
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-2025 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 bool never_resave_uncompressed,
114 bool ref_read_in_seq_mode);
115
116 extern void filtre_difference(const std::shared_ptr<user_interaction> & dialog,
117 const mask &filtre,
118 const mask &subtree,
119 const catalogue & cat,
120 const path & fs_racine,
121 bool info_details,
122 bool display_treated,
123 bool display_treated_only_dir,
124 bool display_skipped,
125 statistics & st,
126 const mask & ea_mask,
127 bool alter_time,
128 bool furtive_read_mode,
129 comparison_fields what_to_check,
130 const infinint & hourshift,
131 bool compare_symlink_date,
132 const fsa_scope & scope,
133 bool isolated_mode,
134 bool seq_read_mode,
135 bool auto_zeroing_neg_dates);
136
137 extern void filtre_test(const std::shared_ptr<user_interaction> & dialog,
138 const mask &filtre,
139 const mask &subtree,
140 const catalogue & cat,
141 bool info_details,
142 bool display_treated,
143 bool display_treated_only_dir,
144 bool display_skipped,
145 bool empty,
146 bool repairing,
147 statistics & st);
148
149 extern void filtre_merge(const std::shared_ptr<user_interaction> & dialog,
150 const mask & filtre,
151 const mask & subtree,
152 const pile_descriptor & pdesc,
153 catalogue & cat,
154 const catalogue * ref1,
155 const catalogue * ref2,
156 bool info_details,
157 bool display_treated,
158 bool display_treated_only_dir,
159 bool display_skipped,
160 statistics & st,
161 bool make_empty_dir,
162 const mask & ea_mask,
163 const mask & compr_mask,
164 const infinint & min_compr_size,
165 bool keep_compressed,
166 const crit_action & overwrite,
167 bool warn_overwrite,
168 bool decremental_mode,
169 const infinint & sparse_file_min_size,
170 const fsa_scope & scope,
171 bool delta_signature,
172 bool build_delta_sig,
173 const infinint & delta_sig_min_size,
174 const mask & delta_mask,
175 const delta_sig_block_size & signature_block_size,
176 bool never_resave_uncompressed);
177
178
180
182 extern void filtre_merge_step0(const std::shared_ptr<user_interaction> & dialog,
183 const catalogue * ref1,
184 const catalogue * ref2,
185 statistics & st,
186 bool decremental_mode,
187 crit_action* & decr,
188 const crit_action* & overwrite,
189 bool & abort,
190 thread_cancellation & thr_cancel);
191
193
194 extern void filtre_merge_step1(const std::shared_ptr<user_interaction> & dialog,
195 const mask & filtre,
196 const mask & subtree,
197 catalogue & cat,
198 const catalogue * ref1,
199 const catalogue * ref2,
200 bool info_details,
201 bool display_treated,
202 bool display_skipped,
203 statistics & st,
204 bool make_empty_dir,
205 bool warn_overwrite,
206 bool decremental_mode,
207 crit_action* & decr,
208 const crit_action* & overwrite,
209 bool & abort,
210 thread_cancellation & thr_cancel);
211
212
214
216 extern void filtre_merge_step2(const std::shared_ptr<user_interaction> & dialog,
217 const pile_descriptor & pdesc,
218 catalogue & cat,
219 bool info_details,
220 bool display_treated,
221 bool display_treated_only_dir,
222 const mask & compr_mask,
223 const infinint & min_compr_size,
224 bool keep_compressed,
225 const infinint & sparse_file_min_size,
226 bool delta_signature,
227 bool build_delta_sig,
228 const infinint & delta_sig_min_size,
229 const mask & delta_mask,
230 bool & abort,
231 thread_cancellation & thr_cancel,
232 bool repair_mode,
233 const delta_sig_block_size & signature_block_size,
234 bool never_resave_uncompressed);
235
236
237 void filtre_sequentially_read_all_catalogue(catalogue & cat,
238 const std::shared_ptr<user_interaction> & dialog,
239 bool lax_read_mode);
240
241
242
244
245} // end of namespace
246
247#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_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)
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, bool never_resave_uncompressed)
copies data of "cat" catalogue to the pdesc of a brand-new archive
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.