#include <archive.hpp>
Public Types | |
enum | listformat |
defines the way archive listing is done: | |
Public Member Functions | |
archive (user_interaction &dialog, const path &chem, const std::string &basename, const std::string &extension, crypto_algo crypto, const std::string &pass, U_32 crypto_size, const std::string &input_pipe, const std::string &output_pipe, const std::string &execute, bool info_details) | |
this constructor opens an already existing archive (for reading) [this is the "read" constructor] | |
archive (user_interaction &dialog, const path &fs_root, const path &sauv_path, archive *ref_arch, const mask &selection, const mask &subtree, const std::string &filename, const std::string &extension, bool allow_over, bool warn_over, bool info_details, const infinint &pause, bool empty_dir, compression algo, U_I compression_level, const infinint &file_size, const infinint &first_file_size, const mask &ea_mask, const std::string &execute, crypto_algo crypto, const std::string &pass, U_32 crypto_size, const mask &compr_mask, const infinint &min_compr_size, bool nodump, inode::comparison_fields what_to_check, const infinint &hourshift, bool empty, bool alter_atime, bool same_fs, bool snapshot, bool cache_directory_tagging, bool display_skipped, const infinint &fixed_date, statistics *progressive_report) | |
this constuctor create an archive (full or differential) [this is the "create" constructor] | |
archive (user_interaction &dialog, const path &sauv_path, archive *ref_arch, const std::string &filename, const std::string &extension, bool allow_over, bool warn_over, bool info_details, const infinint &pause, compression algo, U_I compression_level, const infinint &file_size, const infinint &first_file_size, const std::string &execute, crypto_algo crypto, const std::string &pass, U_32 crypto_size, bool empty) | |
this constructor isolates a catalogue of a given archive [this is the "isolate" constructor] | |
archive (user_interaction &dialog, const path &sauv_path, archive *ref_arch1, archive *ref_arch2, const mask &selection, const mask &subtree, const std::string &filename, const std::string &extension, bool allow_over, bool warn_over, bool info_details, const infinint &pause, bool empty_dir, compression algo, U_I compression_level, const infinint &file_size, const infinint &first_file_size, const mask &ea_mask, const std::string &execute, crypto_algo crypto, const std::string &pass, U_32 crypto_size, const mask &compr_mask, const infinint &min_compr_size, bool empty, bool display_skipped, bool keep_compressed, statistics *progressive_report) | |
this constructor builds an archive from two given archive [this is the "merge" constructor] | |
~archive () | |
the destructor | |
statistics | op_extract (user_interaction &dialog, const path &fs_root, const mask &selection, const mask &subtree, bool allow_over, bool warn_over, bool info_details, bool detruire, bool only_more_recent, const mask &ea_mask, bool flat, inode::comparison_fields what_to_check, bool warn_remove_no_match, const infinint &hourshift, bool empty, bool ea_erase, bool display_skipped, statistics *progressive_report) |
extraction of data from an archive | |
void | op_listing (user_interaction &dialog, bool info_details, archive::listformat list_mode, const mask &selection, bool filter_unsaved) |
listing of the archive contents | |
statistics | op_diff (user_interaction &dialog, const path &fs_root, const mask &selection, const mask &subtree, bool info_details, const mask &ea_mask, inode::comparison_fields what_to_check, bool alter_atime, bool display_skipped, statistics *progressive_report) |
archive comparison with filesystem | |
statistics | op_test (user_interaction &dialog, const mask &selection, const mask &subtree, bool info_details, bool display_skipped, statistics *progressive_report) |
test the archive integrity | |
bool | get_children_of (user_interaction &dialog, const std::string &dir) |
getting information about a given directory | |
const catalogue & | get_catalogue () const |
gives access to internal catalogue (not to be used from the API) |
the operations corresponds to the one the final user expects, theses are the same abstraction level as the operation realized by the DAR command line tool.
Definition at line 50 of file archive.hpp.
libdar::archive::archive | ( | user_interaction & | dialog, | |
const path & | chem, | |||
const std::string & | basename, | |||
const std::string & | extension, | |||
crypto_algo | crypto, | |||
const std::string & | pass, | |||
U_32 | crypto_size, | |||
const std::string & | input_pipe, | |||
const std::string & | output_pipe, | |||
const std::string & | execute, | |||
bool | info_details | |||
) |
this constructor opens an already existing archive (for reading) [this is the "read" constructor]
[in,out] | dialog | for user interaction |
[in] | chem | the path where to look for slices |
[in] | basename | the slices basename of the archive to read ("-" means standard input, and activates the output_pipe and input_pipe arguments) |
[in] | extension | the slice extension (should always be "dar") |
[in] | crypto | the crypto cypher to use to read the archive |
[in] | pass | the password or passphrase to decrypt (unused if encryption is not set) if an empty string is given and encryption is set, the password will be asked through the user_interaction object |
[in] | crypto_size | the encryption block size to use to decrypt (unused if encrytion is not set) |
[in] | input_pipe | the name of the input pipe to read data from (when basename is set to "-") if input_pipe is set to "" the information from dar_slave are expected in standard input else the given string must be the path to the a named pipe which will relay the information from dar_slave |
[in] | output_pipe | the name of the output pipe to send orders to (when basenale is set to "-") if output_pipe is set to "" the orders sent to dar_slave will exit by the standard output else the given string must be the path to a named pipe which will relay the orders to dar_slave |
[in] | execute | the command to execute before reading each slice (empty string for no script) several macros are available:
|
[in] | info_details | whether the user needs detailed output of the operation |
libdar::archive::archive | ( | user_interaction & | dialog, | |
const path & | fs_root, | |||
const path & | sauv_path, | |||
archive * | ref_arch, | |||
const mask & | selection, | |||
const mask & | subtree, | |||
const std::string & | filename, | |||
const std::string & | extension, | |||
bool | allow_over, | |||
bool | warn_over, | |||
bool | info_details, | |||
const infinint & | pause, | |||
bool | empty_dir, | |||
compression | algo, | |||
U_I | compression_level, | |||
const infinint & | file_size, | |||
const infinint & | first_file_size, | |||
const mask & | ea_mask, | |||
const std::string & | execute, | |||
crypto_algo | crypto, | |||
const std::string & | pass, | |||
U_32 | crypto_size, | |||
const mask & | compr_mask, | |||
const infinint & | min_compr_size, | |||
bool | nodump, | |||
inode::comparison_fields | what_to_check, | |||
const infinint & | hourshift, | |||
bool | empty, | |||
bool | alter_atime, | |||
bool | same_fs, | |||
bool | snapshot, | |||
bool | cache_directory_tagging, | |||
bool | display_skipped, | |||
const infinint & | fixed_date, | |||
statistics * | progressive_report | |||
) |
this constuctor create an archive (full or differential) [this is the "create" constructor]
[in,out] | dialog | for user interaction |
[in] | fs_root | the filesystem to take as root for the backup |
[in] | sauv_path | the path where to create slices |
[in] | ref_arch | the archive to take as reference (NULL for a full backup) |
[in] | selection | to only save file (except directory) that match the given mask |
[in] | subtree | define the directory and files to consider (this mask will be applied to the absolute path of files being proceeded) |
[in] | filename | base name of the slices. If "-" is given the archive will be produced in standard output |
[in] | extension | slices extension ("dar") |
[in] | allow_over | whether overwritting is allowed |
[in] | warn_over | whether a warning shall be issued before overwriting |
[in] | info_details | whether the user needs detailed output of the operation |
[in] | pause | Pause beteween slices. Set to zero does not pause at all, set to 1 makes libdar pauses each slice, set to 2 makes libdar pause each 2 slices and so on. |
[in] | empty_dir | whether we need to store ignored directories as empty |
[in] | algo | the compression algorithm used |
[in] | compression_level | the compression level (from 1 to 9) |
[in] | file_size | the slice size in byte (0 for a single slice whatever its size is) |
[in] | first_file_size | the first file size (value 0 is forbidden unless file_size is also set to zero). |
[in] | ea_mask | defines which Extended Attributes to save |
[in] | execute | command to execute after each slice creation (see the "read" constructor for the available macros) |
[in] | crypto | cypher to use |
[in] | pass | the password / passphrase to encrypt the data with. Giving an empty string makes the password asked interactively through the dialog argument if encryption has been set. |
[in] | crypto_size | the size of the encryption by block to use |
[in] | compr_mask | files to compress |
[in] | min_compr_size | file size under which to never compress |
[in] | nodump | whether to ignore files with the nodump flag set |
[in] | what_to_check | fields to consider when comparing inodes with reference archive (see inode::comparison_fields enumeration in catalogue.hpp) |
[in] | hourshift | ignore differences of at most this integer number of hours while looking for changes in dates |
[in] | empty | whether to make a dry-run operation |
[in] | alter_atime | whether to alter atime or ctime in the filesystem when reading files to save |
[in] | same_fs | whether to limit the backup to files located on the same filesystem as the directory taken as root of the backup |
[in] | snapshot | whether to make an emtpy archive only referencing the current state of files in the filesystem |
[in] | cache_directory_tagging | whether to consider the Cache Directory Tagging Standard |
[in] | display_skipped | whether to display files that have been excluded by filters |
[in] | fixed_date | whether to ignore any archive of reference and only save file which modification is more recent that the given "fixed_date". To not use this feature set fixed_date to zero. |
[out] | progressive_report | statistics about the operation, considering the treated files (NULL can be given if you don't want to use this feature) |
libdar::archive::archive | ( | user_interaction & | dialog, | |
const path & | sauv_path, | |||
archive * | ref_arch, | |||
const std::string & | filename, | |||
const std::string & | extension, | |||
bool | allow_over, | |||
bool | warn_over, | |||
bool | info_details, | |||
const infinint & | pause, | |||
compression | algo, | |||
U_I | compression_level, | |||
const infinint & | file_size, | |||
const infinint & | first_file_size, | |||
const std::string & | execute, | |||
crypto_algo | crypto, | |||
const std::string & | pass, | |||
U_32 | crypto_size, | |||
bool | empty | |||
) |
this constructor isolates a catalogue of a given archive [this is the "isolate" constructor]
[in,out] | dialog | for user interaction |
[in] | sauv_path | the path where to create slices |
[in] | ref_arch | the archive to take as reference (NULL for a full backup) |
[in] | filename | base name of the slices ("-" for standard output) |
[in] | extension | slices extension ("dar") |
[in] | allow_over | whether overwritting is allowed |
[in] | warn_over | whether a warning shall be issued before overwriting |
[in] | info_details | whether the user needs detailed output of the operation |
[in] | pause | Pause beteween slices. Set to zero does not pause at all, set to 1 makes libdar pauses each slice, set to 2 makes libdar pause each 2 slices and so on. |
[in] | algo | the compression algorithm used |
[in] | compression_level | the compression level (from 1 to 9) |
[in] | file_size | the slice size in byte (0 for a single slice whatever its size is) |
[in] | first_file_size | the first file size (zero is allowed only if file_size is set to zero) |
[in] | execute | command to execute after each slice creation |
[in] | crypto | cypher to use |
[in] | pass | the password / passphrase to encrypt the data with (empty string for interactive question) |
[in] | crypto_size | the size of the encryption by block to use |
[in] | empty | whether to make a dry-run operation |
libdar::archive::archive | ( | user_interaction & | dialog, | |
const path & | sauv_path, | |||
archive * | ref_arch1, | |||
archive * | ref_arch2, | |||
const mask & | selection, | |||
const mask & | subtree, | |||
const std::string & | filename, | |||
const std::string & | extension, | |||
bool | allow_over, | |||
bool | warn_over, | |||
bool | info_details, | |||
const infinint & | pause, | |||
bool | empty_dir, | |||
compression | algo, | |||
U_I | compression_level, | |||
const infinint & | file_size, | |||
const infinint & | first_file_size, | |||
const mask & | ea_mask, | |||
const std::string & | execute, | |||
crypto_algo | crypto, | |||
const std::string & | pass, | |||
U_32 | crypto_size, | |||
const mask & | compr_mask, | |||
const infinint & | min_compr_size, | |||
bool | empty, | |||
bool | display_skipped, | |||
bool | keep_compressed, | |||
statistics * | progressive_report | |||
) |
this constructor builds an archive from two given archive [this is the "merge" constructor]
[in,out] | dialog | for user interaction |
[in] | sauv_path | the path where to create slices |
[in] | ref_arch1 | the first input archive (NULL if no archive to give, thus building a subset of ref_arch2) |
[in] | ref_arch2 | the first input archive (NULL if no archive to give, thus building a subset of ref_arch1) |
[in] | selection | to only consider files (except directory) that match the given mask |
[in] | subtree | define the directory and files to consider (this mask will be applied to the absolute path of files being proceeded, * assuming a "<ROOT>" is the root of all paths) |
[in] | filename | base name of the slices. If "-" is given the archive will be produced in standard output |
[in] | extension | slices extension ("dar") |
[in] | allow_over | whether to allow slice overwriting |
[in] | warn_over | whether to warn before overwriting a slice |
[in] | info_details | whether the user needs detailed output of the operation |
[in] | pause | Pause beteween slices. Set to zero does not pause at all, set to 1 makes libdar pauses each slice, set to 2 makes libdar pause each 2 slices and so on. |
[in] | empty_dir | whether we need to store ignored directories as empty |
[in] | algo | is the compression algorithm used |
[in] | compression_level | is the compression level (from 1 to 9) |
[in] | file_size | the slice size in byte (0 for a single slice whatever its size is) |
[in] | first_file_size | the first file size (value 0 is forbidden unless file_size is also set to zero). |
[in] | ea_mask | defines which Extended Attributes to save |
[in] | execute | command to execute after each slice creation (see the "read" constructor for the available macros) |
[in] | crypto | cypher to use |
[in] | pass | the password / passphrase to encrypt the data with. Giving an empty string makes the password asked interactively through the dialog argument if encryption has been set. |
[in] | crypto_size | the size of the encryption by block to use |
[in] | compr_mask | files to compress |
[in] | min_compr_size | file size under which to never compress |
[in] | empty | whether to make a dry-run operation |
[in] | display_skipped | whether to display files that have been excluded by filters |
[in] | keep_compressed | make dar ignore the 'algo' argument and do not uncompress / compress files that are selected for merging |
[out] | progressive_report | statistics about the operation, considering the treated files (NULL can be given if you don't want to use this feature) |
const catalogue& libdar::archive::get_catalogue | ( | ) | const [inline] |
gives access to internal catalogue (not to be used from the API)
Definition at line 448 of file archive.hpp.
References SRC_BUG.
bool libdar::archive::get_children_of | ( | user_interaction & | dialog, | |
const std::string & | dir | |||
) |
getting information about a given directory
[in,out] | dialog | for user interaction |
[in] | dir | relative path the directory to get information about |
statistics libdar::archive::op_diff | ( | user_interaction & | dialog, | |
const path & | fs_root, | |||
const mask & | selection, | |||
const mask & | subtree, | |||
bool | info_details, | |||
const mask & | ea_mask, | |||
inode::comparison_fields | what_to_check, | |||
bool | alter_atime, | |||
bool | display_skipped, | |||
statistics * | progressive_report | |||
) |
archive comparison with filesystem
[in,out] | dialog | for user interaction |
[in] | fs_root | the filesystem to take as root for the comparison |
[in] | selection | to only consider file (except directory) that match the given mask |
[in] | subtree | define the directory and files to consider (this mask will be applied to the absolute path of files being proceeded) |
[in] | info_details | whether the user needs detailed output of the operation |
[in] | ea_mask | is a mask that defines the Extended Attributes to compare |
[in] | what_to_check | fields to consider wien comparing inodes with those on filesystem (see inode::comparison_fields enumeration) |
[in] | alter_atime | whether to alter atime or ctime in the filesystem when reading files to compare |
[in] | display_skipped | whether to display files that have been excluded by filters |
[in,out] | progressive_report | points to an already existing statistics object that can be consulted at any time during the call (see the returned value to know the useful fields and their meining), NULL can be given in argument if you only need the result at the end of the operation through the returned value of this call this should speed up the operation by a little amount. |
statistics libdar::archive::op_extract | ( | user_interaction & | dialog, | |
const path & | fs_root, | |||
const mask & | selection, | |||
const mask & | subtree, | |||
bool | allow_over, | |||
bool | warn_over, | |||
bool | info_details, | |||
bool | detruire, | |||
bool | only_more_recent, | |||
const mask & | ea_mask, | |||
bool | flat, | |||
inode::comparison_fields | what_to_check, | |||
bool | warn_remove_no_match, | |||
const infinint & | hourshift, | |||
bool | empty, | |||
bool | ea_erase, | |||
bool | display_skipped, | |||
statistics * | progressive_report | |||
) |
extraction of data from an archive
[in,out] | dialog | for user interaction |
[in] | fs_root | the filesystem to take as root for the restoration |
[in] | selection | to only restore file (except directory) that match the given mask |
[in] | subtree | define the directory and files to consider (this mask will be applied to the absolute path of files being proceeded) |
[in] | allow_over | whether overwritting is allowed |
[in] | warn_over | whether a warning shall be issued before overwriting |
[in] | info_details | whether the user needs detailed output of the operation |
[in] | detruire | whether the files recorded as removed from the archive of reference shall be removed from filesystem |
[in] | only_more_recent | whether to restore only file more recent than those on filesystem |
[in] | ea_mask | mask which defines which EA to restore |
[in] | flat | whether to ignore directory structure and restore all files in the same directory |
[in] | what_to_check | fields to consider when comparing inodes with those on filesystem to determine if it is more recent (see inode::comparison_fields enumeration), also defines which if mtime has to be restored (cf_mtime) if permission have to be too (cf_ignore_owner) if ownership has to be restored too (cf_all) |
[in] | warn_remove_no_match | whether a warning must be issue if a file to remove does not match the expected type of file |
[in] | hourshift | ignore differences of at most this integer number of hours while looking for file to restore |
[in] | empty | whether to make a dry-run operation |
[in] | ea_erase | if set, all EA are first erased before being restored |
[in] | display_skipped | whether to display files that have been excluded by filters |
[in,out] | progressive_report | points to an already existing statistics object that can be consulted at any time during the call (see the returned value to know the useful fields and their meining), NULL can be given in argument if you only need the result at the end of the operation through the returned value of this call this should speed up the operation by a little amount. |
void libdar::archive::op_listing | ( | user_interaction & | dialog, | |
bool | info_details, | |||
archive::listformat | list_mode, | |||
const mask & | selection, | |||
bool | filter_unsaved | |||
) |
listing of the archive contents
[in,out] | dialog | for user interaction |
[in] | info_details | whether the user needs detailed output of the operation |
[in] | list_mode | whether to list ala tar or in a tree like view |
[in] | selection | to only view some files (directories will always be seen) |
[in] | filter_unsaved | whether to ignore unsaved files |
statistics libdar::archive::op_test | ( | user_interaction & | dialog, | |
const mask & | selection, | |||
const mask & | subtree, | |||
bool | info_details, | |||
bool | display_skipped, | |||
statistics * | progressive_report | |||
) |
test the archive integrity
[in,out] | dialog | for user interaction |
[in] | selection | to only test file (except directory) that match the given mask |
[in] | subtree | define the directory and files to consider (this mask will be applied to the string "<ROOT>/<relative filename>" of the files being proceeded, where "<ROOT>" is the litteral string "<ROOT>" without the quotes) |
[in] | info_details | whether the user needs detailed output of the operation |
[in] | display_skipped | whether to display files that have been excluded by filters |
[in,out] | progressive_report | points to an already existing statistics object that can be consulted at any time during the call (see the returned value to know the useful fields and their meining), NULL can be given in argument if you only need the result at the end of the operation through the returned value of this call this should speed up the operation by a little amount. |