Disk ARchive  2.7.14
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"
36 #include "thread_cancellation.hpp"
37 #include "filesystem_ids.hpp"
38 
39 namespace 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.