ACC SHELL
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<head>
<title>
Backup module
</title>
<style type="text/css">body { background-color: #c8c8c8 }
h1 { color: #e00000 }
table { width: 100%/ border: none }
img { border: 0px }
.sigbox { background-color: #ffc080; border: solid thin #f96500 }
.sig { font: larger monospace }
.padtbl { background-color: #ffc080; padding: 10px; margin: 10px }
/* arrow */
.a { color: #606060 }
/* type, parameter */
.t, .p { color: #c05000 }
.pbox { width: 20% }
.descbox { }
.right { align: right }
.header {}
.footer { clear: both}
.menu { width: 10%; float: left }
.main { width: 90%; float: left }
</style>
</head>
<body>
<div class="header">
<i>YaST2 Developers Documentation:</i>
<a href="index.html">
<b>
Backup module
</b>
</a>
<img class="right" alt="" src="/usr/share/doc/packages/yast2-devtools/images/yast2-mini.png" />
<hr />
</div>
<div class="menu">
<img alt="YaST" src="/usr/share/doc/packages/yast2-devtools/images/yast2-half.png" />
<br />
<br />
<a href="index.html">functions</a>
<br />
<a href="files.html">files</a>
<br />
<a href="intro.html">intro</a>
</div>
<div class="main">
<div class="sigbox">
<table class="padtbl">
<tr>
<td>
<h1>
Backup module
</h1>
</td>
<td class="filecell">
Backup.ycp
</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td>
<ul>
<li> Ladislav Slezak <lslezak@suse.cz></li>
</ul>
</td>
</tr>
<tr>
<td>
<p>This module has an unstable interface.</p>
<p>This module is for internal use only.</p>
</td>
</tr>
</table>
<table class="padtbl">
<tr>
<td>
Main file for backup module
<h1>Imports</h1>
<ul>
<li>FileUtils</li>
<li>Nfs</li>
<li>Popup</li>
<li>Progress</li>
<li>Report</li>
<li>Service</li>
<li>String</li>
</ul>
<h1>Includes</h1>
<ul>
<li>backup/functions.ycp</li>
</ul>
<h1>Global Functions</h1>
<ul>
<li>
<a href="#BackupProfileDescriptions">BackupProfileDescriptions ()</a>
</li>
<li>
<a href="#BackupProfileNames">BackupProfileNames ()</a>
</li>
<li>
<a href="#CreateCronDescription">CreateCronDescription (string profilename)</a>
</li>
<li>
<a href="#CreateCronSetting">CreateCronSetting (string profilename)</a>
</li>
<li>
<a href="#DetectedMountPoints">DetectedMountPoints ()</a>
</li>
<li>
<a href="#ExcludeNodevFS">ExcludeNodevFS ()</a>
</li>
<li>
<a href="#GetCapacity">GetCapacity (list<map<string,any> > media, symbol m)</a>
</li>
<li>
<a href="#GetLocalArchiveName">GetLocalArchiveName ()</a>
</li>
<li>
<a href="#MapFilesToString">MapFilesToString ()</a>
</li>
<li>
<a href="#PostBackup">PostBackup ()</a>
</li>
<li>
<a href="#PrepareBackup">PrepareBackup ()</a>
</li>
<li>
<a href="#ReadBackupProfiles">ReadBackupProfiles ()</a>
</li>
<li>
<a href="#ReadCronSetting">ReadCronSetting (string filename)</a>
</li>
<li>
<a href="#ReadCronSettings">ReadCronSettings ()</a>
</li>
<li>
<a href="#ReadInstallablePackages">ReadInstallablePackages ()</a>
</li>
<li>
<a href="#RemovableDevices">RemovableDevices (boolean only_writable)</a>
</li>
<li>
<a href="#RemoveBackupProfile">RemoveBackupProfile (string profile_name, boolean remove_cronfile)</a>
</li>
<li>
<a href="#RemoveOldArchives">RemoveOldArchives (string name, integer max, boolean multivolume)</a>
</li>
<li>
<a href="#RemoveOldMultiArchives">RemoveOldMultiArchives (string name, integer max)</a>
</li>
<li>
<a href="#RemoveOldSingleArchives">RemoveOldSingleArchives (string name, integer max)</a>
</li>
<li>
<a href="#RestoreDefaultSettings">RestoreDefaultSettings ()</a>
</li>
<li>
<a href="#RestoreSettingsFromBackupProfile">RestoreSettingsFromBackupProfile (string profile_name)</a>
</li>
<li>
<a href="#StoreSettingsToBackupProfile">StoreSettingsToBackupProfile (string profile_name)</a>
</li>
<li>
<a href="#WriteBackupProfiles">WriteBackupProfiles ()</a>
</li>
<li>
<a href="#WriteCronSettings">WriteCronSettings ()</a>
</li>
<li>
<a href="#WriteProfile">WriteProfile (list<string> volumes)</a>
</li>
<li>
<a href="#get_archive_script_parameters">get_archive_script_parameters (string file_list, string file_comment)</a>
</li>
<li>
<a href="#get_search_script_parameters">get_search_script_parameters ()</a>
</li>
</ul>
</td>
</tr>
</table>
</div>
<p />
<div class="sigbox">
<span class="sig" id="GetCapacity">global
<b>GetCapacity (list<map<string,any> > media, symbol m)
<span class="a"> -> </span>
<span class="t">integer</span>
</b>
</span>
</div>
<p>
Return capacity of required medium</p>
<dl>
<dt>
<b>Parameters:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="p">media</span>
</td>
<td class="descbox">Medium descriptions</td>
</tr>
<tr>
<td class="pbox">
<span class="p">m</span>
</td>
<td class="descbox">Identification of required medium</td>
</tr>
</table>
</dd>
</dl>
<dl>
<dt>
<b>Return value:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="t" />
</td>
<td class="descbox">Size of medium in bytes</td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="get_search_script_parameters">global
<b>get_search_script_parameters ()
<span class="a"> -> </span>
<span class="t">string</span>
</b>
</span>
</div>
<p>
Return backup_search.pl script parameters according to state of variables</p>
<dl>
<dt>
<b>Return value:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="t" />
</td>
<td class="descbox">String with command line parameters</td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="PrepareBackup">global
<b>PrepareBackup ()
<span class="a"> -> </span>
<span class="t">boolean</span>
</b>
</span>
</div>
<p>
Pre-backup function - mount NFS share if required</p>
<dl>
<dt>
<b>Return value:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="t" />
</td>
<td class="descbox">true on success</td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="PostBackup">global
<b>PostBackup ()
<span class="a"> -> </span>
<span class="t">boolean</span>
</b>
</span>
</div>
<p>
Post-backup function - unmount mounted NFS share</p>
<dl>
<dt>
<b>Return value:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="t" />
</td>
<td class="descbox">true on success</td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="get_archive_script_parameters">global
<b>get_archive_script_parameters (string file_list, string file_comment)
<span class="a"> -> </span>
<span class="t">string</span>
</b>
</span>
</div>
<p>
Return backup_search.pl script parameters according to state of variables</p>
<dl>
<dt>
<b>Parameters:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="p">file_list</span>
</td>
<td class="descbox">Where is list of files to backup stored</td>
</tr>
<tr>
<td class="pbox">
<span class="p">file_comment</span>
</td>
<td class="descbox">Where is comment stored</td>
</tr>
</table>
</dd>
</dl>
<dl>
<dt>
<b>Return value:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="t" />
</td>
<td class="descbox">String with command line parameters</td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="ExcludeNodevFS">global
<b>ExcludeNodevFS ()
<span class="a"> -> </span>
<span class="t">void</span>
</b>
</span>
</div>
<p>
Exclude file systems without device</p>
<div class="sigbox">
<span class="sig" id="WriteProfile">global
<b>WriteProfile (list<string> volumes)
<span class="a"> -> </span>
<span class="t">map</span>
</b>
</span>
</div>
<p>
Write autoinstallation profile to file autoinst.xml to the same directory as archive</p>
<dl>
<dt>
<b>Parameters:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="p">volumes</span>
</td>
<td class="descbox">list of created archives (it is written to the XML profile as restoration source)</td>
</tr>
</table>
</dd>
</dl>
<dl>
<dt>
<b>Return value:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="t" />
</td>
<td class="descbox">map $[ "result" : boolean (true on success), "profile" : string (profile file name) ]</td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="ReadCronSetting">global
<b>ReadCronSetting (string filename)
<span class="a"> -> </span>
<span class="t">map</span>
</b>
</span>
</div>
<p>
Parse cron file</p>
<dl>
<dt>
<b>Parameters:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="p">filename</span>
</td>
<td class="descbox">File to parse</td>
</tr>
</table>
</dd>
</dl>
<dl>
<dt>
<b>Return value:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="t" />
</td>
<td class="descbox">parsed values: $["auto":boolean, "day":integer, "hour":integer,
"minute":integer, "weekday":integer, "every":symbol] or empty map if
parse error occured</td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="ReadCronSettings">global
<b>ReadCronSettings ()
<span class="a"> -> </span>
<span class="t">void</span>
</b>
</span>
</div>
<p>
Parse all /etc/cron.d/yast2-backup-* files and update profiles</p>
<div class="sigbox">
<span class="sig" id="ReadBackupProfiles">global
<b>ReadBackupProfiles ()
<span class="a"> -> </span>
<span class="t">boolean</span>
</b>
</span>
</div>
<p>
Read backup profiles from file, do not set any global settings, just</p>
<dl>
<dt>
<b>Return value:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="t" />
</td>
<td class="descbox">true if there are some profiles available</td>
</tr>
</table>
</dd>
</dl>
<dl>
<dt>
<b>See</b>
</dt>
<dd>
<table>
<tr>
<td align="left" valign="top"><a href="#backup_profiles. The profiles are stored in hardcoded place (configuration_filename variable).">backup_profiles. The profiles are stored in hardcoded place (configuration_filename variable).</a></td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="CreateCronSetting">global
<b>CreateCronSetting (string profilename)
<span class="a"> -> </span>
<span class="t">string</span>
</b>
</span>
</div>
<p>
Create cron file content for selected profile.</p>
<dl>
<dt>
<b>Parameters:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="p">profilename</span>
</td>
<td class="descbox">Name of the profile</td>
</tr>
</table>
</dd>
</dl>
<dl>
<dt>
<b>Return value:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="t" />
</td>
<td class="descbox">Cron content or empty string if profile has
disabled automatic start</td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="WriteCronSettings">global
<b>WriteCronSettings ()
<span class="a"> -> </span>
<span class="t">void</span>
</b>
</span>
</div>
<p>
Write cron settings from profiles to /etc/cron.d/yast2-backup-* files</p>
<div class="sigbox">
<span class="sig" id="WriteBackupProfiles">global
<b>WriteBackupProfiles ()
<span class="a"> -> </span>
<span class="t">boolean</span>
</b>
</span>
</div>
<p>
Write the backup profiles to a file - hardcoded configuration_filename.</p>
<dl>
<dt>
<b>Return value:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="t" />
</td>
<td class="descbox">true if the write operation was successful.</td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="StoreSettingsToBackupProfile">global
<b>StoreSettingsToBackupProfile (string profile_name)
<span class="a"> -> </span>
<span class="t">void</span>
</b>
</span>
</div>
<p>
Take the current profile information and store it into a given profile.
If the profile already exists, it will be overwritten.</p>
<dl>
<dt>
<b>Parameters:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="p">profile_name</span>
</td>
<td class="descbox">name of a profile to be stored into</td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="RestoreSettingsFromBackupProfile">global
<b>RestoreSettingsFromBackupProfile (string profile_name)
<span class="a"> -> </span>
<span class="t">boolean</span>
</b>
</span>
</div>
<p>
Restore the global settings from a given backup profile.</p>
<dl>
<dt>
<b>Parameters:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="p">profile_name</span>
</td>
<td class="descbox">name of a profile to be used</td>
</tr>
</table>
</dd>
</dl>
<dl>
<dt>
<b>Return value:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="t" />
</td>
<td class="descbox">If the name of the profile cannot be found, return false, otherwise return true.</td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="RestoreDefaultSettings">global
<b>RestoreDefaultSettings ()
<span class="a"> -> </span>
<span class="t">void</span>
</b>
</span>
</div>
<p>
Restore the default global settings.</p>
<div class="sigbox">
<span class="sig" id="BackupProfileNames">global
<b>BackupProfileNames ()
<span class="a"> -> </span>
<span class="t">list<string></span>
</b>
</span>
</div>
<p>
Get a sorted list of profile names currently available.</p>
<dl>
<dt>
<b>Return value:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="t" />
</td>
<td class="descbox">the list of strings (possibly empty).</td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="CreateCronDescription">global
<b>CreateCronDescription (string profilename)
<span class="a"> -> </span>
<span class="t">string</span>
</b>
</span>
</div>
<p>
Create description of automatic backup.</p>
<dl>
<dt>
<b>Parameters:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="p">profilename</span>
</td>
<td class="descbox">Name of the profile</td>
</tr>
</table>
</dd>
</dl>
<dl>
<dt>
<b>Return value:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="t" />
</td>
<td class="descbox">description string or empty string if profile has
disabled automatic start</td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="BackupProfileDescriptions">global
<b>BackupProfileDescriptions ()
<span class="a"> -> </span>
<span class="t">list<term></span>
</b>
</span>
</div>
<p>
Helper function to extract the list of currently available profiles</p>
<dl>
<dt>
<b>Return value:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="t" />
</td>
<td class="descbox">List of item used in the table widget</td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="RemoveBackupProfile">global
<b>RemoveBackupProfile (string profile_name, boolean remove_cronfile)
<span class="a"> -> </span>
<span class="t">boolean</span>
</b>
</span>
</div>
<p>
Remove given profile.</p>
<dl>
<dt>
<b>Parameters:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="p">profile_name</span>
</td>
<td class="descbox">name of a profile to be removed</td>
</tr>
<tr>
<td class="pbox">
<span class="p">remove_cronfile</span>
</td>
<td class="descbox"></td>
</tr>
</table>
</dd>
</dl>
<dl>
<dt>
<b>Return value:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="t" />
</td>
<td class="descbox">If the name of the profile cannot be found, return false, otherwise return true.</td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="RemovableDevices">global
<b>RemovableDevices (boolean only_writable)
<span class="a"> -> </span>
<span class="t">map</span>
</b>
</span>
</div>
<p>
Try to detect all removable devices present in the system</p>
<dl>
<dt>
<b>Parameters:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="p">only_writable</span>
</td>
<td class="descbox">return only writable devices (e.g. exclude CD-ROMs)</td>
</tr>
</table>
</dd>
</dl>
<dl>
<dt>
<b>Return value:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="t" />
</td>
<td class="descbox">Removable devices info</td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="ReadInstallablePackages">global
<b>ReadInstallablePackages ()
<span class="a"> -> </span>
<span class="t">void</span>
</b>
</span>
</div>
<p>
Read all packages available on the installation sources</p>
<div class="sigbox">
<span class="sig" id="DetectedMountPoints">global
<b>DetectedMountPoints ()
<span class="a"> -> </span>
<span class="t">map</span>
</b>
</span>
</div>
<p>
Returns detected mount points</p>
<dl>
<dt>
<b>Return value:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="t" />
</td>
<td class="descbox">detected mount points</td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="GetLocalArchiveName">global
<b>GetLocalArchiveName ()
<span class="a"> -> </span>
<span class="t">string</span>
</b>
</span>
</div>
<p>
Returns local archive name (required if NFS target is used)</p>
<dl>
<dt>
<b>Return value:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="t" />
</td>
<td class="descbox">local archive name</td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="MapFilesToString">global
<b>MapFilesToString ()
<span class="a"> -> </span>
<span class="t">map</span>
</b>
</span>
</div>
<p>
Writes file using the .backup.file_append SCR agent. This file
is accepted by backup_archive.pl script. Used global variables:
selected_files, backup_files.</p>
<dl>
<dt>
<b>Return value:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="t" />
</td>
<td class="descbox">with keys
"sel_files" (integer - number of selected files),
"sel_packages" (integer: number of selected packages),
"ret_file_list_stored" (boolean: whether the filelist has been completely stored)</td>
</tr>
</table>
</dd>
</dl>
<dl>
<dt>
<b>See</b>
</dt>
<dd>
<table>
<tr>
<td align="left" valign="top"><a href="../backup_specification.html">Backup module specification</a></td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="RemoveOldSingleArchives">global
<b>RemoveOldSingleArchives (string name, integer max)
<span class="a"> -> </span>
<span class="t">map</span>
</b>
</span>
</div>
<p>
Remove and/or rename old existing single archives</p>
<dl>
<dt>
<b>Parameters:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="p">name</span>
</td>
<td class="descbox">Archive name</td>
</tr>
<tr>
<td class="pbox">
<span class="p">max</span>
</td>
<td class="descbox">Maximum count of existing archives</td>
</tr>
</table>
</dd>
</dl>
<dl>
<dt>
<b>Return value:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="t" />
</td>
<td class="descbox">result</td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="RemoveOldMultiArchives">global
<b>RemoveOldMultiArchives (string name, integer max)
<span class="a"> -> </span>
<span class="t">map</span>
</b>
</span>
</div>
<p>
Remove and/or rename old existing multivolume archives</p>
<dl>
<dt>
<b>Parameters:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="p">name</span>
</td>
<td class="descbox">Archive name</td>
</tr>
<tr>
<td class="pbox">
<span class="p">max</span>
</td>
<td class="descbox">Maximum count of existing archives</td>
</tr>
</table>
</dd>
</dl>
<dl>
<dt>
<b>Return value:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="t" />
</td>
<td class="descbox">result</td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="RemoveOldArchives">global
<b>RemoveOldArchives (string name, integer max, boolean multivolume)
<span class="a"> -> </span>
<span class="t">map</span>
</b>
</span>
</div>
<p>
Remove and/or rename old existing archives</p>
<dl>
<dt>
<b>Parameters:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="p">name</span>
</td>
<td class="descbox">Archive name</td>
</tr>
<tr>
<td class="pbox">
<span class="p">max</span>
</td>
<td class="descbox">Maximum count of existing archives</td>
</tr>
<tr>
<td class="pbox">
<span class="p">multivolume</span>
</td>
<td class="descbox">Is archive archive multivolume?</td>
</tr>
</table>
</dd>
</dl>
<dl>
<dt>
<b>Return value:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="t" />
</td>
<td class="descbox">result</td>
</tr>
</table>
</dd>
</dl>
</div>
<div class="footer">
<hr />
<i>YaST2 Developers Documentation</i>
<img class="right" alt="" src="/usr/share/doc/packages/yast2-devtools/images/yast2-mini.png" />
</div>
</body>
</html>
ACC SHELL 2018