Disk ARchive  2.7.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-2021 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  );
68 
69  extern void filtre_sauvegarde(const std::shared_ptr<user_interaction> & dialog,
70  const mask &filtre,
71  const mask &subtree,
72  const pile_descriptor & pdesc,
73  catalogue & cat,
74  const catalogue & ref,
75  const path & fs_racine,
76  bool info_details,
77  bool display_treated,
78  bool display_treated_only_dir,
79  bool display_skipped,
80  bool display_finished,
81  statistics & st,
82  bool make_empty_dir,
83  const mask & ea_mask,
84  const mask &compr_mask,
85  const infinint & min_compr_size,
86  bool nodump,
87  const infinint & hourshift,
88  bool alter_time,
89  bool furtive_read_mode,
90  const filesystem_ids & same_fs,
91  comparison_fields what_to_check,
92  bool snapshot,
93  bool cache_directory_tagging,
94  bool security_check,
95  const infinint & repeat_count,
96  const infinint & repeat_byte,
97  const infinint & fixed_date,
98  const infinint & sparse_file_min_size,
99  const std::string & backup_hook_file_execute,
100  const mask & backup_hook_file_mask,
101  bool ignore_unknown,
102  const fsa_scope & scope,
103  const std::string & exclude_by_ea,
104  bool delta_signature, // whether to compute delta sig file on the saved file
105  const infinint & delta_sig_min_size, // size below which to never calculate delta sig
106  const mask & delta_mask, // mask defining for which file to calculate delta sig
107  bool delta_diff, // whether to perform delta diff backup when delta sig is present
108  bool auto_zeroing_neg_dates,
109  const std::set<std::string> & ignored_symlinks,
110  modified_data_detection mod_data_detect,
111  const delta_sig_block_size & delta_sig_block_len);
112 
113  extern void filtre_difference(const std::shared_ptr<user_interaction> & dialog,
114  const mask &filtre,
115  const mask &subtree,
116  const catalogue & cat,
117  const path & fs_racine,
118  bool info_details,
119  bool display_treated,
120  bool display_treated_only_dir,
121  bool display_skipped,
122  statistics & st,
123  const mask & ea_mask,
124  bool alter_time,
125  bool furtive_read_mode,
126  comparison_fields what_to_check,
127  const infinint & hourshift,
128  bool compare_symlink_date,
129  const fsa_scope & scope,
130  bool isolated_mode);
131 
132  extern void filtre_test(const std::shared_ptr<user_interaction> & dialog,
133  const mask &filtre,
134  const mask &subtree,
135  const catalogue & cat,
136  bool info_details,
137  bool display_treated,
138  bool display_treated_only_dir,
139  bool display_skipped,
140  bool empty,
141  statistics & st);
142 
143  extern void filtre_merge(const std::shared_ptr<user_interaction> & dialog,
144  const mask & filtre,
145  const mask & subtree,
146  const pile_descriptor & pdesc,
147  catalogue & cat,
148  const catalogue * ref1,
149  const catalogue * ref2,
150  bool info_details,
151  bool display_treated,
152  bool display_treated_only_dir,
153  bool display_skipped,
154  statistics & st,
155  bool make_empty_dir,
156  const mask & ea_mask,
157  const mask & compr_mask,
158  const infinint & min_compr_size,
159  bool keep_compressed,
160  const crit_action & overwrite,
161  bool warn_overwrite,
162  bool decremental_mode,
163  const infinint & sparse_file_min_size,
164  const fsa_scope & scope,
165  bool delta_signature,
166  bool build_delta_sig,
167  const infinint & delta_sig_min_size,
168  const mask & delta_mask,
169  const delta_sig_block_size & signature_block_size);
170 
171 
173 
175  extern void filtre_merge_step0(const std::shared_ptr<user_interaction> & dialog,
176  const catalogue * ref1,
177  const catalogue * ref2,
178  statistics & st,
179  bool decremental_mode,
180  crit_action* & decr,
181  const crit_action* & overwrite,
182  bool & abort,
183  thread_cancellation & thr_cancel);
184 
186 
187  extern void filtre_merge_step1(const std::shared_ptr<user_interaction> & dialog,
188  const mask & filtre,
189  const mask & subtree,
190  catalogue & cat,
191  const catalogue * ref1,
192  const catalogue * ref2,
193  bool info_details,
194  bool display_treated,
195  bool display_skipped,
196  statistics & st,
197  bool make_empty_dir,
198  bool warn_overwrite,
199  bool decremental_mode,
200  crit_action* & decr,
201  const crit_action* & overwrite,
202  bool & abort,
203  thread_cancellation & thr_cancel);
204 
205 
207 
209  extern void filtre_merge_step2(const std::shared_ptr<user_interaction> & dialog,
210  const pile_descriptor & pdesc,
211  catalogue & cat,
212  bool info_details,
213  bool display_treated,
214  bool display_treated_only_dir,
215  const mask & compr_mask,
216  const infinint & min_compr_size,
217  bool keep_compressed,
218  const infinint & sparse_file_min_size,
219  bool delta_signature,
220  bool build_delta_sig,
221  const infinint & delta_sig_min_size,
222  const mask & delta_mask,
223  bool & abort,
224  thread_cancellation & thr_cancel,
225  bool repair_mode,
226  const delta_sig_block_size & signature_block_size);
227 
228 
229  void filtre_sequentially_read_all_catalogue(catalogue & cat,
230  const std::shared_ptr<user_interaction> & dialog,
231  bool lax_read_mode);
232 
233 
234 
236 
237 } // end of namespace
238 
239 #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:61
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_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)
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
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.