<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to Home</title><link>https://sourceforge.net/p/pytis/wiki/Home/</link><description>Recent changes to Home</description><atom:link href="https://sourceforge.net/p/pytis/wiki/Home/feed" rel="self"/><language>en</language><lastBuildDate>Wed, 02 Oct 2013 06:53:32 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/pytis/wiki/Home/feed" rel="self" type="application/rss+xml"/><item><title>Discussion for Home page</title><link>https://sourceforge.net/p/pytis/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;h1 id="pybkup-h"&gt;pybkup -h&lt;/h1&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;Usage&lt;span class="o"&gt;:&lt;/span&gt; pybkup   &lt;span class="kc"&gt;...&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;options&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="o"&gt;***&lt;/span&gt; USE &lt;span class="s"&gt;'--help'&lt;/span&gt; &lt;span class="kr"&gt;for&lt;/span&gt; the full help page. &lt;span class="o"&gt;***&lt;/span&gt;

pybkup
&lt;span class="o"&gt;======&lt;/span&gt;

  &lt;span class="o"&gt;--&lt;/span&gt; OPTIONS&lt;span class="o"&gt;:&lt;/span&gt;
  &lt;span class="o"&gt;-&lt;/span&gt;h&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;help            show this help message and exit

  &lt;span class="o"&gt;--&lt;/span&gt; RUNTIME ARGUMENTS&lt;span class="o"&gt;:&lt;/span&gt;
    &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k-Variable"&gt;F&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;force         Force a server to run &lt;span class="kr"&gt;in&lt;/span&gt; the all within the all
                        section&lt;span class="p"&gt;,&lt;/span&gt; when asked to run stand alone. &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;use &lt;span class="s"&gt;&amp;quot;--help&amp;quot;&lt;/span&gt;
                        &lt;span class="kr"&gt;for&lt;/span&gt; more help&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="o"&gt;-&lt;/span&gt;L &lt;span class="p"&gt;[&lt;/span&gt;NAME&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;list&lt;span class="o"&gt;-&lt;/span&gt;out&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;NAME&lt;span class="p"&gt;]&lt;/span&gt;
                        Print out to screen a section&lt;span class="s"&gt;'s configuration and&lt;/span&gt;
&lt;span class="s"&gt;                        exit.&lt;/span&gt;
&lt;span class="s"&gt;    -l, --list          List all sections available from configuration file,&lt;/span&gt;
&lt;span class="s"&gt;                        and their current action.&lt;/span&gt;
&lt;span class="s"&gt;    -n [INT &amp;lt;-20 - 19&amp;gt;], --nice=[INT &amp;lt;-20 - 19&amp;gt;]&lt;/span&gt;
&lt;span class="s"&gt;                        Nicenesses range from -20.      Default 10&lt;/span&gt;

&lt;span class="s"&gt;  -- CONFIGURATION SETTINGS:&lt;/span&gt;
&lt;span class="s"&gt;    -A [ACTION], --action=[ACTION]&lt;/span&gt;
&lt;span class="s"&gt;                        choices: &amp;lt;'&lt;/span&gt;ignore&lt;span class="s"&gt;', '&lt;/span&gt;test&lt;span class="s"&gt;', '&lt;/span&gt;use&lt;span class="s"&gt;' *(use &amp;quot;--help&amp;quot; for&lt;/span&gt;
&lt;span class="s"&gt;                        more help)&lt;/span&gt;
&lt;span class="s"&gt;    -a [ADDRESS], --address=[ADDRESS]&lt;/span&gt;
&lt;span class="s"&gt;                        Address for the server/section to pull from.&lt;/span&gt;
&lt;span class="s"&gt;    -B, --forced-dir    Root directory for where to place rsync files, while&lt;/span&gt;
&lt;span class="s"&gt;                        forcing no servername prefix. *(use &amp;quot;--help&amp;quot; for more&lt;/span&gt;
&lt;span class="s"&gt;                        help)&lt;/span&gt;
&lt;span class="s"&gt;    -b [PATH], --backup-dir=[PATH]&lt;/span&gt;
&lt;span class="s"&gt;                        Root directory for where to place rsync files.&lt;/span&gt;
&lt;span class="s"&gt;    -d, --disable-all   Prevents a section from ever running in the &amp;quot;all&amp;quot;&lt;/span&gt;
&lt;span class="s"&gt;                        section.&lt;/span&gt;
&lt;span class="s"&gt;    -e [PATH], --ssh-key=[PATH]&lt;/span&gt;
&lt;span class="s"&gt;                        Path to SSH key for rsync to use.&lt;/span&gt;
&lt;span class="s"&gt;    -f [PATH], --rsync-flags=[PATH]&lt;/span&gt;
&lt;span class="s"&gt;                        Flags to pass to rsync, default are: '&lt;/span&gt;DghiLlKoprtuz&lt;span class="s"&gt;'&lt;/span&gt;
&lt;span class="s"&gt;    -r [PATH], --rsync-path=[PATH]&lt;/span&gt;
&lt;span class="s"&gt;                        Device path.&lt;/span&gt;
&lt;span class="s"&gt;    -s [NAME], --server=[NAME]&lt;/span&gt;
&lt;span class="s"&gt;                        Section-name/Server-name&lt;/span&gt;
&lt;span class="s"&gt;    -T [Remote FPATH], --test-file=[Remote FPATH]&lt;/span&gt;
&lt;span class="s"&gt;                        Full path of testfile on remote server. *(use &amp;quot;--help&amp;quot;&lt;/span&gt;
&lt;span class="s"&gt;                        for more help)&lt;/span&gt;
&lt;span class="s"&gt;    -t [INT (in seconds)], --wait-time=[INT (in seconds)]&lt;/span&gt;
&lt;span class="s"&gt;                        How long to wait on a possibly un-responsive server&lt;/span&gt;
&lt;span class="s"&gt;                        (default is 3).&lt;/span&gt;
&lt;span class="s"&gt;    -u [NAME], --from-user=[NAME]&lt;/span&gt;
&lt;span class="s"&gt;                        From user name for rsync.&lt;/span&gt;
&lt;span class="s"&gt;    -S, --save          Save information for future use?&lt;/span&gt;

&lt;span class="s"&gt;  -- DEBUG:&lt;/span&gt;
&lt;span class="s"&gt;    -D, --debug         Enable debugging&lt;/span&gt;
&lt;span class="s"&gt;    -q, --quiet         be vewwy quiet (I'&lt;/span&gt;m hunting wabbits&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="o"&gt;-&lt;/span&gt;v&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;version       Display Version
&lt;/pre&gt;&lt;/div&gt;
&lt;h1 id="pybkup-help"&gt;pybkup --help&lt;/h1&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;Usage&lt;span class="o"&gt;:&lt;/span&gt; pybkup   &lt;span class="kc"&gt;...&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;options&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="o"&gt;***&lt;/span&gt; USE &lt;span class="s"&gt;'--help'&lt;/span&gt; &lt;span class="kr"&gt;for&lt;/span&gt; the full help page. &lt;span class="o"&gt;***&lt;/span&gt;

pybkup
&lt;span class="o"&gt;======&lt;/span&gt;

When individual sections&lt;span class="o"&gt;/&lt;/span&gt;servers run&lt;span class="p"&gt;,&lt;/span&gt; they use a command build from the code below&lt;span class="o"&gt;:&lt;/span&gt;
    cmd &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;rsync %s --delay-updates --delete-before %s %s %s --recursive %s %s %s %s&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;% (flag,verbosity,timeout,exclude,ssh,rsyncpath, copy_from, copy_to)&lt;/span&gt;
&lt;span class="o"&gt;The individual servers only pull down from the source, to this server.  Please notice, the --delete-before command is passed into rsync automatically.&lt;/span&gt;

&lt;span class="o"&gt;When the all section runs, it tries to pull from each section/server to this server, then push back up.  Then it moves on to the next server in the list doing the same thing while iterating over the include files from the &amp;quot;all&amp;quot; section of the INI.&lt;/span&gt;
&lt;span class="o"&gt;    cmd1 = &amp;quot;rsync %&lt;/span&gt;s &lt;span class="o"&gt;--&lt;/span&gt;delay&lt;span class="o"&gt;-&lt;/span&gt;updates &lt;span class="o"&gt;%s %&lt;/span&gt;s &lt;span class="o"&gt;%s --recursive %&lt;/span&gt;s &lt;span class="o"&gt;%s %&lt;/span&gt;s &lt;span class="o"&gt;%s&amp;quot; %&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;flag&lt;span class="p"&gt;,&lt;/span&gt;verbosity&lt;span class="p"&gt;,&lt;/span&gt;t&lt;span class="p"&gt;,&lt;/span&gt;exclude&lt;span class="p"&gt;,&lt;/span&gt;ssh&lt;span class="p"&gt;,&lt;/span&gt;rsyncpath&lt;span class="p"&gt;,&lt;/span&gt; copy_to&lt;span class="p"&gt;,&lt;/span&gt; copy_from&lt;span class="p"&gt;)&lt;/span&gt;
    cmd2 &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;rsync %s --delay-updates %s %s %s --recursive %s %s %s %s&amp;quot;&lt;/span&gt; % &lt;span class="p"&gt;(&lt;/span&gt;flag&lt;span class="p"&gt;,&lt;/span&gt;verbosity&lt;span class="p"&gt;,&lt;/span&gt;t&lt;span class="p"&gt;,&lt;/span&gt;exclude&lt;span class="p"&gt;,&lt;/span&gt;ssh&lt;span class="p"&gt;,&lt;/span&gt;rsyncpath&lt;span class="p"&gt;,&lt;/span&gt; copy_from&lt;span class="p"&gt;,&lt;/span&gt; copy_to&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="o"&gt;-------------------------------------------------------------------------------&lt;/span&gt;

UNDERSTANDING LOGGING and OUTPUT&lt;span class="o"&gt;:&lt;/span&gt;

 The way my PyTis scripts and programs work&lt;span class="p"&gt;,&lt;/span&gt; I hardly ever use the print command.  Instead I just log something using a custom logging class.  I have four log levels&lt;span class="o"&gt;:&lt;/span&gt; debug&lt;span class="p"&gt;,&lt;/span&gt; info&lt;span class="p"&gt;,&lt;/span&gt; warn and error. Messages may or may not make it to the screen &lt;span class="p"&gt;(&lt;/span&gt;as my logging class will print output as it logs&lt;span class="p"&gt;)&lt;/span&gt; depending on which arguments you pass into the program you are executing.

 The current setup allows &lt;span class="kr"&gt;for&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt; log files&lt;span class="p"&gt;,&lt;/span&gt; to be written to the PyTis configured log directory.  If you do not use debug&lt;span class="p"&gt;,&lt;/span&gt; then the log file used will be the pytis_tools.log&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kr"&gt;if&lt;/span&gt; debugging is turned on&lt;span class="p"&gt;,&lt;/span&gt; then the log file will be &lt;span class="p"&gt;{&lt;/span&gt;program_name&lt;span class="p"&gt;}&lt;/span&gt;.log found &lt;span class="kr"&gt;in&lt;/span&gt; the same directory.  In this program&lt;span class="s"&gt;'s case that would be pybkup.log  So if you use -D the output ends up in a different log file, but this is just to keep debugging separate from normal logging.&lt;/span&gt;
&lt;span class="s"&gt;-V --verbose is off by default by with this program, unless you use the action '&lt;/span&gt;test&lt;span class="s"&gt;' then it is on (unless you specify --quiet, then it stays off).&lt;/span&gt;

&lt;span class="s"&gt; debug:&lt;/span&gt;
&lt;span class="s"&gt;    Not to log-file or to screen by default, but if turned on with the -D or --debug flag, it will always end up in the debug log file (pybkup.log).&lt;/span&gt;
&lt;span class="s"&gt;    -D: print debug messages to log only&lt;/span&gt;
&lt;span class="s"&gt;    -V: alone does not print debug messages anywhere, because -D or --debug not given&lt;/span&gt;
&lt;span class="s"&gt;    -dv: now debug messages are sent to their log file, and make it to the screen&lt;/span&gt;

&lt;span class="s"&gt; info:&lt;/span&gt;
&lt;span class="s"&gt;    Print normal level information, always written to log (although which log is being used depends on if you are using debugging, as stated above).&lt;/span&gt;
&lt;span class="s"&gt;    -V allows info messages to print to STDOUT, thus to the screen for you to see.&lt;/span&gt;
&lt;span class="s"&gt;    -q or --quiet turns off -V&lt;/span&gt;

&lt;span class="s"&gt; warn:&lt;/span&gt;
&lt;span class="s"&gt;    Warnings will always make it to which ever log is being used, and it will always make it to the screen unless -q is passed in.  If -q is passed in then warnings are hidden from STDOUT, thus only show in log files.&lt;/span&gt;
&lt;span class="s"&gt;    -q suppresses warnings to STDOUT (the screen) but they will still end up in whichever log this program is using.&lt;/span&gt;

&lt;span class="s"&gt; error:&lt;/span&gt;
&lt;span class="s"&gt;    error messages always make it to the screen, no matter what; and are always logged to the log file as well.&lt;/span&gt;

&lt;span class="s"&gt; Notes:&lt;/span&gt;
&lt;span class="s"&gt;    To ensure there is no confusion, I want to specify that the log file is chosen one time during the first stages of the program firing up, it does not switch back and forth while running, nothing complex like that.  Simply this, all of my programs share pytis_tools.log unless they are in debug mode.  Then, since they are obviously going to spit out allot more information, they write to their very own log file for that run.  That way they don'&lt;/span&gt;t fill up and clutter the shared pytis_tools.log

    &lt;span class="s"&gt;'-DVq'&lt;/span&gt; confuses my little logging class.  &lt;span class="o"&gt;-&lt;/span&gt;q silences most messages&lt;span class="p"&gt;,&lt;/span&gt; nothing but errors make it to the screen&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;D was passed &lt;span class="kr"&gt;in&lt;/span&gt; so the debug log is used &lt;span class="p"&gt;(&lt;/span&gt;pybkup.log&lt;span class="p"&gt;)&lt;/span&gt; however logging level is set to verbose&lt;span class="p"&gt;,&lt;/span&gt; with nothing to the screen so what ends up happening is only info messages make it to the debug log &lt;span class="p"&gt;(&lt;/span&gt;debug messages hidden&lt;span class="p"&gt;)&lt;/span&gt;.

&lt;span class="o"&gt;-------------------------------------------------------------------------------&lt;/span&gt;

OPTIONS&lt;span class="o"&gt;:&lt;/span&gt;

 &lt;span class="o"&gt;-&lt;/span&gt;h&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;help
    show this help message and exit

RUNTIME ARGUMENTS&lt;span class="o"&gt;:&lt;/span&gt;

 &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k-Variable"&gt;F&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;force
     While &lt;span class="kr"&gt;in&lt;/span&gt; most of my PyTis tools the following is true&lt;span class="o"&gt;:&lt;/span&gt;
        Disable prompts. Commonly used when called by other programs&lt;span class="p"&gt;,&lt;/span&gt; this will force the program to run without asking &lt;span class="kr"&gt;for&lt;/span&gt; user input&lt;span class="p"&gt;,&lt;/span&gt; attempting to run with whatever input is given. Only errors are output.
     In this program force has a slightly different meaning&lt;span class="o"&gt;:&lt;/span&gt; 
     If you pass &lt;span class="kr"&gt;in&lt;/span&gt; a section&lt;span class="p"&gt;,&lt;/span&gt; it will force it to run only &lt;span class="kr"&gt;for&lt;/span&gt; that one section.  Whether it is the &lt;span class="s"&gt;&amp;quot;all&amp;quot;&lt;/span&gt; section&lt;span class="p"&gt;,&lt;/span&gt; or a specific server by name.  This is true &lt;span class="kr"&gt;for&lt;/span&gt; &lt;span class="s"&gt;'... --force --action=test --server=Example...'&lt;/span&gt;
     The one notable difference is that usually when you specify a section&lt;span class="o"&gt;/&lt;/span&gt;server other than the &lt;span class="s"&gt;&amp;quot;all&amp;quot;&lt;/span&gt; section&lt;span class="p"&gt;,&lt;/span&gt; and you specify the test action&lt;span class="p"&gt;,&lt;/span&gt; then only the commands directly &lt;span class="kr"&gt;for&lt;/span&gt; that section will be written out to log&lt;span class="o"&gt;/&lt;/span&gt;screen.  If you use the &lt;span class="o"&gt;--&lt;/span&gt;force command &lt;span class="kr"&gt;while&lt;/span&gt; using the test &lt;span class="o"&gt;--&lt;/span&gt;action&lt;span class="p"&gt;,&lt;/span&gt; then it will not only log the server&lt;span class="s"&gt;'s direct commands, but also those commands related to that server found in the all section.  If you are still confused, give the following two commands a try, and compare the difference (so long as you have more than 2 sections in addition to your all section).&lt;/span&gt;

&lt;span class="s"&gt;        pybkup --action test -V&lt;/span&gt;
&lt;span class="s"&gt;        .. # server: Dallas, address: 192.168.1.1&lt;/span&gt;
&lt;span class="s"&gt;        .. rsync -DghiLlKoprtuz --delay-updates --delete-before -vv --timeout=3 --recursive -e &amp;quot;ssh -i /home/rsyncer/.ssh/id_rsa&amp;quot; --rsync-path=&amp;quot;sudo rsync&amp;quot; --exclude-from=&amp;quot;/tmp/tmpItatOH&amp;quot; --files-from=&amp;quot;/tmp/tmpzv8vrp&amp;quot; rsyncer@192.168.1.1:/ /data/backups&lt;/span&gt;

&lt;span class="s"&gt;        pybkup --action test -V --force&lt;/span&gt;
&lt;span class="s"&gt;        .. # server: Dallas, address: 192.168.1.1&lt;/span&gt;
&lt;span class="s"&gt;        .. rsync -DghiLlKoprtuz --delay-updates --delete-before -vv --timeout=3 --recursive -e &amp;quot;ssh -i /home/rsyncer/.ssh/id_rsa&amp;quot; --rsync-path=&amp;quot;sudo rsync&amp;quot; --exclude-from=&amp;quot;/tmp/tmpItatOH&amp;quot; --files-from=&amp;quot;/tmp/tmpzv8vrp&amp;quot; rsyncer@192.168.1.1:/ /data/backups&lt;/span&gt;
&lt;span class="s"&gt;        .. # '&lt;/span&gt;all&lt;span class="s"&gt;' &amp;gt;&amp;gt; server: Dallas, address: 192.168.1.1&lt;/span&gt;
&lt;span class="s"&gt;        .. rsync -DghiLlKoprtuz --delay-updates -vv --timeout=3 --recursive -e &amp;quot;ssh -i /home/rsyncer/.ssh/id_rsa&amp;quot; --rsync-path=&amp;quot;sudo rsync&amp;quot; --exclude-from=&amp;quot;/tmp/tmpxAo9Wy&amp;quot; --files-from=&amp;quot;/tmp/tmpLoqiId&amp;quot; rsyncer@192.168.1.4:/ /data/backups/Dallas&lt;/span&gt;
&lt;span class="s"&gt;        .. # '&lt;/span&gt;all&lt;span class="s"&gt;' &amp;lt;&amp;lt; server: Dallas, address: 192.168.1.1&lt;/span&gt;
&lt;span class="s"&gt;        .. rsync -DghiLlKoprtuz --delay-updates -vv --timeout=3 --recursive -e &amp;quot;ssh -i /home/rsyncer/.ssh/id_rsa&amp;quot; --rsync-path=&amp;quot;sudo rsync&amp;quot; --exclude-from=&amp;quot;/tmp/tmpxAo9Wy&amp;quot; --files-from=&amp;quot;/tmp/tmpLoqiId&amp;quot; /data/backups/Dallas rsyncer@192.168.1.4:/&lt;/span&gt;

&lt;span class="s"&gt; -L, --list-out&lt;/span&gt;
&lt;span class="s"&gt;    Print out to screen a section'&lt;/span&gt;s configuration and exit
    Example&lt;span class="o"&gt;:&lt;/span&gt;
     venus
     &lt;span class="o"&gt;=====&lt;/span&gt;
     exclude&lt;span class="o"&gt;:&lt;/span&gt;
      &lt;span class="o"&gt;/&lt;/span&gt;root&lt;span class="o"&gt;/&lt;/span&gt;.bash_history

     include&lt;span class="o"&gt;:&lt;/span&gt;
      &lt;span class="o"&gt;/&lt;/span&gt;etc&lt;span class="o"&gt;/&lt;/span&gt;update&lt;span class="o"&gt;-&lt;/span&gt;motd.d&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;00&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;header
        &lt;span class="o"&gt;/&lt;/span&gt;root&lt;span class="o"&gt;/&lt;/span&gt;

     address&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="m"&gt;192.168.1.3&lt;/span&gt;
     flags&lt;span class="o"&gt;:&lt;/span&gt; DghiLlKoprtuz

 &lt;span class="o"&gt;-&lt;/span&gt;l&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;list&lt;span class="p"&gt;,&lt;/span&gt; 
    List all sections available from configuration file&lt;span class="p"&gt;,&lt;/span&gt; and their current action.
    Example&lt;span class="o"&gt;:&lt;/span&gt;
     SECTION NAME      ACTION
     &lt;span class="o"&gt;========================&lt;/span&gt;
     all               use
     Dallas            test
     Dallas.2          ignore
     Atlanta           use

 &lt;span class="o"&gt;-&lt;/span&gt;n&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;nice&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;INT &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt;&lt;span class="m"&gt;20&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="m"&gt;19&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    Nicenesses range from &lt;span class="m"&gt;-20&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;most favorable scheduling&lt;span class="p"&gt;)&lt;/span&gt; to &lt;span class="m"&gt;19&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;least favorable&lt;span class="p"&gt;)&lt;/span&gt;.  Default &lt;span class="m"&gt;10&lt;/span&gt;.

CONFIGURATION SETTINGS&lt;span class="o"&gt;:&lt;/span&gt;

 &lt;span class="o"&gt;-&lt;/span&gt;A&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;action choices&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="s"&gt;'ignore'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'test'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'use'&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
    Used to temporarily prevent a server&lt;span class="o"&gt;/&lt;/span&gt;section from running&lt;span class="p"&gt;,&lt;/span&gt; until re&lt;span class="o"&gt;-&lt;/span&gt;enabled by stating &lt;span class="s"&gt;'use'&lt;/span&gt;. choices&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="s"&gt;'ignore'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'test'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'use'&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;.  The &lt;span class="s"&gt;'test'&lt;/span&gt; option will print out the command &lt;span class="kr"&gt;for&lt;/span&gt; that section&lt;span class="p"&gt;,&lt;/span&gt; without running it.  Printing is handled with the logging tool&lt;span class="p"&gt;,&lt;/span&gt; output will be &lt;span class="kr"&gt;in&lt;/span&gt; the log file&lt;span class="p"&gt;,&lt;/span&gt; as well as STDOUT so long as verbose is utilized.  If action is &lt;span class="s"&gt;'test'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; then verbose is turned on automatically.

 &lt;span class="o"&gt;-&lt;/span&gt;a&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;address&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;ADDRESS&lt;span class="p"&gt;]&lt;/span&gt;
    Address &lt;span class="kr"&gt;for&lt;/span&gt; the server&lt;span class="o"&gt;/&lt;/span&gt;section to pull from.  Name based addresses may be used&lt;span class="p"&gt;,&lt;/span&gt; but &lt;span class="kr"&gt;if&lt;/span&gt; DNS is not working&lt;span class="p"&gt;,&lt;/span&gt; it could fail so IP addresses are recommended.

 &lt;span class="o"&gt;-&lt;/span&gt;B&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;forced&lt;span class="o"&gt;-&lt;/span&gt;dir&lt;span class="p"&gt;,&lt;/span&gt; 
    Root directory &lt;span class="kr"&gt;for&lt;/span&gt; where to place rsync files&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kr"&gt;while&lt;/span&gt; forcing no server&lt;span class="o"&gt;-&lt;/span&gt;name prefix.  Below&lt;span class="p"&gt;,&lt;/span&gt; you will see the &lt;span class="s"&gt;&amp;quot;--backup-dir&amp;quot;&lt;/span&gt; flag.  When used files are place &lt;span class="kr"&gt;in&lt;/span&gt; &lt;span class="s"&gt;'/{backup-dir}/{section-name}/{included file to backup}  When this argument is used, forced_dir=True is added to the section in the INI file.  Then, the section-name isn'&lt;/span&gt;t used as part of the path to copy to.   Why use one over the other&lt;span class="o"&gt;?&lt;/span&gt;

     Example &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; without &lt;span class="o"&gt;--&lt;/span&gt;forced&lt;span class="o"&gt;-&lt;/span&gt;dir&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;excluding variables not currently relevant to this example&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
        &lt;span class="c1"&gt;# -- example INI --         backup_dir = /data/backups/ &lt;/span&gt;
        &lt;span class="p"&gt;[&lt;/span&gt;Dallas&lt;span class="p"&gt;]&lt;/span&gt;
        include&lt;span class="o"&gt;=/&lt;/span&gt;root&lt;span class="o"&gt;/&lt;/span&gt;.bashrc
        &lt;span class="p"&gt;[&lt;/span&gt;Atlanta&lt;span class="p"&gt;]&lt;/span&gt;
        include&lt;span class="o"&gt;=/&lt;/span&gt;root&lt;span class="o"&gt;/&lt;/span&gt;.bashrc

     syncs&lt;span class="o"&gt;:&lt;/span&gt;
        Dallas&lt;span class="o"&gt;:/&lt;/span&gt;root&lt;span class="o"&gt;/&lt;/span&gt;.bashrc to local&lt;span class="o"&gt;:/&lt;/span&gt;data&lt;span class="o"&gt;/&lt;/span&gt;backups&lt;span class="o"&gt;/&lt;/span&gt;Dallas&lt;span class="o"&gt;/&lt;/span&gt;root&lt;span class="o"&gt;/&lt;/span&gt;.bashrc
        Atlanta&lt;span class="o"&gt;:/&lt;/span&gt;root&lt;span class="o"&gt;/&lt;/span&gt;.bashrc to local&lt;span class="o"&gt;:/&lt;/span&gt;data&lt;span class="o"&gt;/&lt;/span&gt;backups&lt;span class="o"&gt;/&lt;/span&gt;Atlanta&lt;span class="o"&gt;/&lt;/span&gt;root&lt;span class="o"&gt;/&lt;/span&gt;.bashrc

     Example &lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; with &lt;span class="o"&gt;--&lt;/span&gt;forced&lt;span class="o"&gt;-&lt;/span&gt;dir&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;excluding variables not currently relevant to this example&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
        &lt;span class="c1"&gt;# -- example INI --         backup_dir = /data/backups/ &lt;/span&gt;
        &lt;span class="p"&gt;[&lt;/span&gt;Atlanta&lt;span class="p"&gt;]&lt;/span&gt;
        forced_dir &lt;span class="o"&gt;=&lt;/span&gt; True
        backup_dir&lt;span class="o"&gt;=/&lt;/span&gt;
        include&lt;span class="o"&gt;=/&lt;/span&gt;root&lt;span class="o"&gt;/&lt;/span&gt;somefolder
        &lt;span class="p"&gt;[&lt;/span&gt;Ohio&lt;span class="p"&gt;]&lt;/span&gt;
        forced_dir &lt;span class="o"&gt;=&lt;/span&gt; True
        backup_dir&lt;span class="o"&gt;=/&lt;/span&gt;data&lt;span class="o"&gt;/&lt;/span&gt;backups&lt;span class="o"&gt;/&lt;/span&gt;
        include&lt;span class="o"&gt;=/&lt;/span&gt;var&lt;span class="o"&gt;/&lt;/span&gt;logs

     syncs&lt;span class="o"&gt;:&lt;/span&gt;
        Atlanta&lt;span class="o"&gt;:/&lt;/span&gt;root&lt;span class="o"&gt;/&lt;/span&gt;somefolder to local&lt;span class="o"&gt;:/&lt;/span&gt;root&lt;span class="o"&gt;/&lt;/span&gt;somefolder &lt;span class="o"&gt;&amp;lt;--&lt;/span&gt; see&lt;span class="p"&gt;,&lt;/span&gt; no server name used as a prefix
        Ohio&lt;span class="o"&gt;:/&lt;/span&gt;var&lt;span class="o"&gt;/&lt;/span&gt;logs to local&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;data&lt;span class="o"&gt;/&lt;/span&gt;backups&lt;span class="o"&gt;/&lt;/span&gt;var&lt;span class="o"&gt;/&lt;/span&gt;logs &lt;span class="o"&gt;&amp;lt;--&lt;/span&gt; see&lt;span class="p"&gt;,&lt;/span&gt; no server name used as a prefix

     Example &lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; with AND without &lt;span class="o"&gt;--&lt;/span&gt;forced&lt;span class="o"&gt;-&lt;/span&gt;dir&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;excluding variables not currently relevant to this example&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
        &lt;span class="c1"&gt;# -- example INI --         backup_dir = /data/backups/ &lt;/span&gt;
        &lt;span class="p"&gt;[&lt;/span&gt;Dallas&lt;span class="p"&gt;]&lt;/span&gt;
        include&lt;span class="o"&gt;=/&lt;/span&gt;root&lt;span class="o"&gt;/&lt;/span&gt;.bashrc
        &lt;span class="p"&gt;[&lt;/span&gt;Atlanta&lt;span class="p"&gt;]&lt;/span&gt;
        include&lt;span class="o"&gt;=/&lt;/span&gt;root&lt;span class="o"&gt;/&lt;/span&gt;.bashrc
        &lt;span class="p"&gt;[&lt;/span&gt;Atlanta.other&lt;span class="p"&gt;]&lt;/span&gt;
        forced_dir &lt;span class="o"&gt;=&lt;/span&gt; True
        backup_dir&lt;span class="o"&gt;=/&lt;/span&gt;
        include&lt;span class="o"&gt;=/&lt;/span&gt;root&lt;span class="o"&gt;/&lt;/span&gt;somefolder
        disable_all &lt;span class="o"&gt;=&lt;/span&gt; True
        &lt;span class="p"&gt;[&lt;/span&gt;Ohio&lt;span class="p"&gt;]&lt;/span&gt;
        forced_dir &lt;span class="o"&gt;=&lt;/span&gt; True
        backup_dir&lt;span class="o"&gt;=/&lt;/span&gt;data&lt;span class="o"&gt;/&lt;/span&gt;backups&lt;span class="o"&gt;/&lt;/span&gt;
        include&lt;span class="o"&gt;=/&lt;/span&gt;var&lt;span class="o"&gt;/&lt;/span&gt;logs

     syncs&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;--&lt;/span&gt; both with and without prefixes as shown below
        Dallas&lt;span class="o"&gt;:/&lt;/span&gt;root&lt;span class="o"&gt;/&lt;/span&gt;.bashrc to local&lt;span class="o"&gt;:/&lt;/span&gt;data&lt;span class="o"&gt;/&lt;/span&gt;backups&lt;span class="o"&gt;/&lt;/span&gt;Dallas&lt;span class="o"&gt;/&lt;/span&gt;root&lt;span class="o"&gt;/&lt;/span&gt;.bashrc
        Atlanta&lt;span class="o"&gt;:/&lt;/span&gt;root&lt;span class="o"&gt;/&lt;/span&gt;.bashrc to local&lt;span class="o"&gt;:/&lt;/span&gt;data&lt;span class="o"&gt;/&lt;/span&gt;backups&lt;span class="o"&gt;/&lt;/span&gt;Atlanta&lt;span class="o"&gt;/&lt;/span&gt;root&lt;span class="o"&gt;/&lt;/span&gt;.bashrc
        Atlanta&lt;span class="o"&gt;:/&lt;/span&gt;root&lt;span class="o"&gt;/&lt;/span&gt;somefolder to local&lt;span class="o"&gt;:/&lt;/span&gt;root&lt;span class="o"&gt;/&lt;/span&gt;somefolder &lt;span class="o"&gt;&amp;lt;--&lt;/span&gt; see&lt;span class="p"&gt;,&lt;/span&gt; no server name used as a prefix
        Ohio&lt;span class="o"&gt;:/&lt;/span&gt;var&lt;span class="o"&gt;/&lt;/span&gt;logs to local&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;data&lt;span class="o"&gt;/&lt;/span&gt;backups&lt;span class="o"&gt;/&lt;/span&gt;var&lt;span class="o"&gt;/&lt;/span&gt;logs &lt;span class="o"&gt;&amp;lt;--&lt;/span&gt; see&lt;span class="p"&gt;,&lt;/span&gt; no server name used as a prefix

 &lt;span class="o"&gt;-&lt;/span&gt;b&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;backup&lt;span class="o"&gt;-&lt;/span&gt;dir&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;PATH&lt;span class="p"&gt;]&lt;/span&gt;
    Root directory &lt;span class="kr"&gt;for&lt;/span&gt; where to place rsync files &lt;span class="p"&gt;(&lt;/span&gt;this program pulls with rsync&lt;span class="p"&gt;,&lt;/span&gt; it was not meant to push&lt;span class="p"&gt;)&lt;/span&gt;.

 &lt;span class="o"&gt;-&lt;/span&gt;d&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;disable&lt;span class="o"&gt;-&lt;/span&gt;all
    Prevents a section from ever running &lt;span class="kr"&gt;in&lt;/span&gt; the &lt;span class="s"&gt;&amp;quot;all&amp;quot;&lt;/span&gt; section.  Sometimes you will want a section to run along with all of the other sections&lt;span class="p"&gt;,&lt;/span&gt; but then to be excluded from running within the &lt;span class="s"&gt;&amp;quot;all&amp;quot;&lt;/span&gt; section.  To do this save this argument to the section &lt;span class="kr"&gt;in&lt;/span&gt; the INI file.  Example&lt;span class="o"&gt;:&lt;/span&gt; pybkup &lt;span class="o"&gt;--&lt;/span&gt;server&lt;span class="o"&gt;=&lt;/span&gt;NAME &lt;span class="o"&gt;--&lt;/span&gt;disable&lt;span class="o"&gt;-&lt;/span&gt;all &lt;span class="o"&gt;--&lt;/span&gt;save
    See Example &lt;span class="m"&gt;3&lt;/span&gt; above.

 &lt;span class="o"&gt;-&lt;/span&gt;f&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;rsync&lt;span class="o"&gt;-&lt;/span&gt;flags&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;any rsync flag without leading &lt;span class="s"&gt;'-'&lt;/span&gt; as it is provided &lt;span class="kr"&gt;for&lt;/span&gt; you&lt;span class="p"&gt;]&lt;/span&gt;
    Flags to pass to rsync&lt;span class="p"&gt;,&lt;/span&gt; default are&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;'DghiLlKoprtuz'&lt;/span&gt;

 &lt;span class="o"&gt;-&lt;/span&gt;e&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;ssh&lt;span class="o"&gt;-&lt;/span&gt;key&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;PATH&lt;span class="p"&gt;]&lt;/span&gt;
    Path to SSH key &lt;span class="kr"&gt;for&lt;/span&gt; rsync to use &lt;span class="o"&gt;-&lt;/span&gt;e then ssh to use &lt;span class="o"&gt;-&lt;/span&gt;i.  Example&lt;span class="o"&gt;:&lt;/span&gt; rsync &lt;span class="o"&gt;-&lt;/span&gt;e &lt;span class="s"&gt;'ssh -i /root/.ssh/id_rsa'&lt;/span&gt;

 &lt;span class="o"&gt;-&lt;/span&gt;r&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;rsync&lt;span class="o"&gt;-&lt;/span&gt;path&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;PATH&lt;span class="p"&gt;]&lt;/span&gt;
    Device path.

 &lt;span class="o"&gt;-&lt;/span&gt;s&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;server&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;section&lt;span class="p"&gt;]&lt;/span&gt;
    Section&lt;span class="o"&gt;-&lt;/span&gt;name&lt;span class="o"&gt;/&lt;/span&gt;Server&lt;span class="o"&gt;-&lt;/span&gt;name &lt;span class="o"&gt;-&lt;/span&gt; Not required&lt;span class="p"&gt;,&lt;/span&gt; but may be used to override above options &lt;span class="kr"&gt;for&lt;/span&gt; any section&lt;span class="p"&gt;,&lt;/span&gt; including the &lt;span class="s"&gt;'all'&lt;/span&gt;
 section.  When &lt;span class="o"&gt;-&lt;/span&gt;S&lt;span class="o"&gt;/--&lt;/span&gt;save is provided you can save the above options to a section &lt;span class="kr"&gt;for&lt;/span&gt; use specifically with that section as overrides&lt;span class="p"&gt;,&lt;/span&gt; instead of saving to the global scope.

 &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k-Variable"&gt;T&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;test&lt;span class="o"&gt;-&lt;/span&gt;file&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;FULL PATH TO FILE ON SERVER&lt;span class="o"&gt;/&lt;/span&gt;SECTION&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    If this argument is provided &lt;span class="kr"&gt;for&lt;/span&gt; a section&lt;span class="p"&gt;,&lt;/span&gt; it will attempt to see &lt;span class="kr"&gt;if&lt;/span&gt; this file exists&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kr"&gt;if&lt;/span&gt; the file is not found then the server&lt;span class="o"&gt;/&lt;/span&gt;section will be skipped over.  This is useful &lt;span class="kr"&gt;for&lt;/span&gt; mounted drives.  If you are trying to rsync a file&lt;span class="p"&gt;,&lt;/span&gt; group of files and or folders from a server and the drive is not mounted&lt;span class="p"&gt;,&lt;/span&gt; you don&lt;span class="s"&gt;'t want the &amp;quot;--delete before&amp;quot; to remove you backups of your files.  So we test first to see if a touched &amp;quot;test-file&amp;quot; exists in the mount path.  If the file does exists, we continue on and backup from that server, if not, we skip that server in it'&lt;/span&gt;s entirety.

 &lt;span class="o"&gt;-&lt;/span&gt;t&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;wait&lt;span class="o"&gt;-&lt;/span&gt;time&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;INT &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kr"&gt;in&lt;/span&gt; seconds&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="m"&gt;59&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    How long to wait on a possibly unresponsive server&lt;span class="p"&gt;,&lt;/span&gt; before logging the issue and moving on to the &lt;span class="kr"&gt;next&lt;/span&gt; server &lt;span class="p"&gt;(&lt;/span&gt;default is &lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;. 
    For some weird reason timeout of &lt;span class="m"&gt;3&lt;/span&gt; seconds rounds up to &lt;span class="m"&gt;4&lt;/span&gt; seconds&lt;span class="p"&gt;,&lt;/span&gt; but &lt;span class="m"&gt;2&lt;/span&gt; stays &lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; and &lt;span class="m"&gt;4&lt;/span&gt; seconds works as &lt;span class="m"&gt;4&lt;/span&gt; seconds.  All other second counts appear to work as well&lt;span class="p"&gt;,&lt;/span&gt; it&lt;span class="s"&gt;'s just 3 seconds does not, it works as 4 seconds,... go figure?  Minimum wait time of 2 seconds.&lt;/span&gt;

&lt;span class="s"&gt; -u, --from-user=[NAME]&lt;/span&gt;
&lt;span class="s"&gt;    From user name for rsync.&lt;/span&gt;

&lt;span class="s"&gt; -S, --save&lt;/span&gt;
&lt;span class="s"&gt;    Save information for future use? **Please note this by default will save configuration options to the global section of the INI  file, unless the -s/--section is specified, then options will only be saved to that section.&lt;/span&gt;

&lt;span class="s"&gt;DEBUG:&lt;/span&gt;

&lt;span class="s"&gt; -D, --debug&lt;/span&gt;
&lt;span class="s"&gt;    Enable debugging&lt;/span&gt;

&lt;span class="s"&gt; -q, --quiet&lt;/span&gt;
&lt;span class="s"&gt;    be vewwy quiet (I'&lt;/span&gt;m hunting wabbits&lt;span class="p"&gt;)&lt;/span&gt;

 &lt;span class="o"&gt;-&lt;/span&gt;V&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;verbose
    Be more Verbose &lt;span class="p"&gt;(&lt;/span&gt;make lots of noise&lt;span class="p"&gt;)&lt;/span&gt;

 &lt;span class="o"&gt;-&lt;/span&gt;v&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;version
    Display Version

    Question&lt;span class="p"&gt;,&lt;/span&gt; I am backing up from one server&lt;span class="p"&gt;,&lt;/span&gt; but wish to place most files &lt;span class="kr"&gt;in&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;backups&lt;span class="o"&gt;/&lt;/span&gt;foo&lt;span class="p"&gt;,&lt;/span&gt; except my personal home directory&lt;span class="p"&gt;,&lt;/span&gt; I wish to have that rsynced to my home directory on this machine.  How do I set two different backup directories&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kr"&gt;for&lt;/span&gt; the same server&lt;span class="o"&gt;?&lt;/span&gt;  Answer &lt;span class="p"&gt;(&lt;/span&gt;see INI file example below&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;     
     Example &lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; overriding the backup_dir within a section below&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;excluding some variables not currently relevant to this example&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
        &lt;span class="c1"&gt;# -- example INI  --        user = backup       rsyncpath = sudo rsync&lt;/span&gt;
        sshkey &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;home&lt;span class="o"&gt;/&lt;/span&gt;backups&lt;span class="o"&gt;/&lt;/span&gt;.ssh&lt;span class="o"&gt;/&lt;/span&gt;id_rsa
        backup_dir &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;backups&lt;span class="o"&gt;/&lt;/span&gt;foo&lt;span class="o"&gt;/&lt;/span&gt;
        wait &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;5&lt;/span&gt;
        &lt;span class="p"&gt;[&lt;/span&gt;all&lt;span class="p"&gt;]&lt;/span&gt;
        exclude &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt;
        include &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;[&lt;/span&gt;Dallas&lt;span class="p"&gt;]&lt;/span&gt;
        exclude &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;root&lt;span class="o"&gt;/&lt;/span&gt;.bashrc_history&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;root&lt;span class="o"&gt;/&lt;/span&gt;.viminfo
        include &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;root&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;home&lt;span class="o"&gt;/&lt;/span&gt;other_guy&lt;span class="o"&gt;/&lt;/span&gt;
        address &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;192.168.1.3&lt;/span&gt;
        &lt;span class="p"&gt;[&lt;/span&gt;Dallas.2&lt;span class="p"&gt;]&lt;/span&gt;
        exclude &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt;
        include &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;home&lt;span class="o"&gt;/&lt;/span&gt;USERNAME&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        address &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;192.168.1.3&lt;/span&gt;
        backup_dir &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;home&lt;span class="o"&gt;/&lt;/span&gt;USERNAME&lt;span class="o"&gt;/&lt;/span&gt;

    Question&lt;span class="p"&gt;,&lt;/span&gt; How to I use this script to backup something from this machine to itself&lt;span class="o"&gt;?&lt;/span&gt;  Good question.  While this machine &lt;span class="p"&gt;(&lt;/span&gt;the one I am writing this program on &lt;span class="p"&gt;(&lt;/span&gt;you are welcome &lt;span class="o"&gt;:&lt;/span&gt;D&lt;span class="p"&gt;))&lt;/span&gt; runs from an internal SATA drive&lt;span class="p"&gt;,&lt;/span&gt; I am backing up my other servers to an external USB3.0 drive that is plugged into this machine&lt;span class="p"&gt;,&lt;/span&gt; and mounted.   I also wish to back up files from this server&lt;span class="p"&gt;,&lt;/span&gt; into my external backup drive.  To do this&lt;span class="p"&gt;,&lt;/span&gt; I had to change &lt;span class="m"&gt;2&lt;/span&gt; things.  First&lt;span class="p"&gt;,&lt;/span&gt; I had to add the localhost IP to the server &lt;span class="kr"&gt;for&lt;/span&gt; this server.  &lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; I had to add that localhost to the authorized_keys2 file &lt;span class="kr"&gt;in&lt;/span&gt; the .ssh directory &lt;span class="kr"&gt;for&lt;/span&gt; my backup user.  I provide an example of both below&lt;span class="o"&gt;:&lt;/span&gt;

     Example &lt;span class="m"&gt;5&lt;/span&gt; &lt;span class="kr"&gt;for&lt;/span&gt; localhost&lt;span class="p"&gt;,&lt;/span&gt; remember&lt;span class="p"&gt;,&lt;/span&gt; it is better to use IP address than Host Names&lt;span class="p"&gt;,&lt;/span&gt; although host names will work&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kr"&gt;if&lt;/span&gt; DNS look fails&lt;span class="p"&gt;,&lt;/span&gt; the backup fails &lt;span class="p"&gt;(&lt;/span&gt;the &lt;span class="m"&gt;127.0.0.1&lt;/span&gt; could theoretically be replaced by localhost&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
        &lt;span class="c1"&gt;# -- example INI --         user = backup       rsyncpath = sudo rsync      sshkey = /home/backups/.ssh/id_rsa      backup_dir = /backups/foo/      wait = 5        [all]       exclude = ,         include = ,         [Dallas]        exclude = /root/.bashrc_history, /root/.viminfo         include = ,         address = 192.168.1.3       [backup]        exclude = ,         include = ,         address =  127.0.0.1        # -- example /home/rsyncer/.ssh/authorized_keys2 --&lt;/span&gt;
        from&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;192.168.1.*&amp;quot;&lt;/span&gt; ssh&lt;span class="o"&gt;-&lt;/span&gt;rsa AAAB3NzaC1yc2EAAAABJQAAACEAgy&lt;span class="o"&gt;+&lt;/span&gt;ADkH6ArYbqulF6RgoCseNgeCboMkprkwxRXVFFaE&lt;span class="o"&gt;/&lt;/span&gt;
        from&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;127.0.0.1&amp;quot;&lt;/span&gt; ssh&lt;span class="o"&gt;-&lt;/span&gt;rsa AAAB3NzaC1yc2EAAAABJQAAACEAgy&lt;span class="o"&gt;+&lt;/span&gt;ADkH6ArYbqulF6RgoCseNgeCboMkprkwxRXVFFaE&lt;span class="o"&gt;/&lt;/span&gt;

        &lt;span class="o"&gt;*&lt;/span&gt; notice&lt;span class="p"&gt;,&lt;/span&gt; above I have a &lt;span class="s"&gt;'*'&lt;/span&gt; at the end of the IP address&lt;span class="p"&gt;,&lt;/span&gt; that was so that this user could use the certificate on all of my servers&lt;span class="p"&gt;,&lt;/span&gt; trust me I have MANY servers listed &lt;span class="kr"&gt;in&lt;/span&gt; my INI file&lt;span class="p"&gt;,&lt;/span&gt; how many do you have&lt;span class="o"&gt;?&lt;/span&gt;

&lt;span class="o"&gt;-------------------------------------------------------------------------------&lt;/span&gt;

examples&lt;span class="o"&gt;:&lt;/span&gt;   
    pybkup &lt;span class="o"&gt;-&lt;/span&gt;DV
    pybkup &lt;span class="o"&gt;-&lt;/span&gt;sDallas &lt;span class="o"&gt;-&lt;/span&gt;a192.168.1.2 &lt;span class="o"&gt;-&lt;/span&gt;r&lt;span class="s"&gt;'sudo rsync'&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;save
    pybkup &lt;span class="o"&gt;-&lt;/span&gt;q &lt;span class="o"&gt;-&lt;/span&gt;n11

&lt;span class="o"&gt;-------------------------------------------------------------------------------&lt;/span&gt;

RSYNC EXIT VALUES&lt;span class="o"&gt;:&lt;/span&gt;
         &lt;span class="m"&gt;0&lt;/span&gt;      Success
         &lt;span class="m"&gt;1&lt;/span&gt;      Syntax or usage error
         &lt;span class="m"&gt;2&lt;/span&gt;      Protocol incompatibility
         &lt;span class="m"&gt;3&lt;/span&gt;      Errors selecting input&lt;span class="o"&gt;/&lt;/span&gt;output files&lt;span class="p"&gt;,&lt;/span&gt; dirs
         &lt;span class="m"&gt;4&lt;/span&gt;      Requested  action not supported&lt;span class="o"&gt;:&lt;/span&gt; an attempt was made to manipulate &lt;span class="m"&gt;64&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;bit files on a platform that cannot support them&lt;span class="p"&gt;;&lt;/span&gt; or an option was specified that is supported by the client and not by the server.
         &lt;span class="m"&gt;5&lt;/span&gt;      Error starting client&lt;span class="o"&gt;-&lt;/span&gt;server protocol
         &lt;span class="m"&gt;6&lt;/span&gt;      Daemon unable to append to log&lt;span class="o"&gt;-&lt;/span&gt;file
         &lt;span class="m"&gt;10&lt;/span&gt;     Error &lt;span class="kr"&gt;in&lt;/span&gt; socket I&lt;span class="o"&gt;/&lt;/span&gt;O
         &lt;span class="m"&gt;11&lt;/span&gt;     Error &lt;span class="kr"&gt;in&lt;/span&gt; file I&lt;span class="o"&gt;/&lt;/span&gt;O
         &lt;span class="m"&gt;12&lt;/span&gt;     Error &lt;span class="kr"&gt;in&lt;/span&gt; rsync protocol data stream
         &lt;span class="m"&gt;13&lt;/span&gt;     Errors with program diagnostics
         &lt;span class="m"&gt;14&lt;/span&gt;     Error &lt;span class="kr"&gt;in&lt;/span&gt; IPC code
         &lt;span class="m"&gt;20&lt;/span&gt;     Received SIGUSR1 or SIGINT
         &lt;span class="m"&gt;21&lt;/span&gt;     Some error returned by waitpid&lt;span class="p"&gt;()&lt;/span&gt;
         &lt;span class="m"&gt;22&lt;/span&gt;     Error allocating core memory buffers
         &lt;span class="m"&gt;23&lt;/span&gt;     Partial transfer due to error
         &lt;span class="m"&gt;24&lt;/span&gt;     Partial transfer due to vanished source files
         &lt;span class="m"&gt;25&lt;/span&gt;     The &lt;span class="o"&gt;--&lt;/span&gt;max&lt;span class="o"&gt;-&lt;/span&gt;delete limit stopped deletions
         &lt;span class="m"&gt;30&lt;/span&gt;     Timeout &lt;span class="kr"&gt;in&lt;/span&gt; data send&lt;span class="o"&gt;/&lt;/span&gt;receive
         &lt;span class="m"&gt;35&lt;/span&gt;     Timeout waiting &lt;span class="kr"&gt;for&lt;/span&gt; daemon connection

&lt;span class="o"&gt;-------------------------------------------------------------------------------&lt;/span&gt;

SEE ALSO&lt;span class="o"&gt;:&lt;/span&gt;
    bulkcopy&lt;span class="p"&gt;,&lt;/span&gt; bulkmove&lt;span class="p"&gt;,&lt;/span&gt; findrep

&lt;span class="o"&gt;-------------------------------------------------------------------------------&lt;/span&gt;

COPYRIGHT&lt;span class="o"&gt;:&lt;/span&gt;
    PyTis

&lt;span class="o"&gt;-------------------------------------------------------------------------------&lt;/span&gt;

AUTHOR&lt;span class="o"&gt;:&lt;/span&gt;
    Josh Lee

&lt;span class="o"&gt;-------------------------------------------------------------------------------&lt;/span&gt;

HISTORY&lt;span class="o"&gt;:&lt;/span&gt;
    Original Author

&lt;span class="o"&gt;-------------------------------------------------------------------------------&lt;/span&gt;

VERSION&lt;span class="o"&gt;:&lt;/span&gt;
    &lt;span class="m"&gt;3.0&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Josh Lee</dc:creator><pubDate>Wed, 02 Oct 2013 06:53:32 -0000</pubDate><guid>https://sourceforge.net6cc8eee00f39270716b8d15db170d6e619fd2c05</guid></item><item><title>WikiPage Home modified by Josh Lee</title><link>https://sourceforge.net/p/pytis/wiki/Home/</link><description>Welcome to your wiki!

This is the default page, edit it as you see fit. To add a new page simply reference it within brackets, e.g.: [SamplePage].

The wiki uses [Markdown](/p/pytis/wiki/markdown_syntax/) syntax.

[[project_admins]]
[[download_button]]
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Josh Lee</dc:creator><pubDate>Sun, 26 Feb 2012 20:32:58 -0000</pubDate><guid>https://sourceforge.net22702e0bd9a098a967a1cc7ad044ee7d8182a1c3</guid></item></channel></rss>