{"action":"created","comment":{"url":"https://api.github.com/repos/SUSE/doc-sle/pulls/comments/116221134","pull_request_review_id":37818233,"id":116221134,"diff_hunk":"@@ -80,782 +74,369 @@\n    plan to use them, read the program documentation.\n   </para>\n \n-  <para>\n-<!-- http://doccomments.provo.novell.com/comments/28800 -->\n+  <!-\\-<para>\n+<!-\\\\- http://doccomments.provo.novell.com/comments/28800 -\\\\->\n    These days file synchronization can also be done with a cloud computing\n    solution.\n+  </para>-\\->\n+ </sect1>-->\n+ <warning>\n+  <title>Risk of Data Loss</title>\n+  <para>\n+   Before you start managing your data with a synchronization system, you\n+   should be well acquainted with the program used and test its functionality.\n+   A backup is indispensable for important files.\n   </para>\n+ </warning>\n \n-  <sect2 xml:id=\"sec.net.sync.soft.cvs\">\n-   <title>CVS</title><indexterm>\n-   <primary>files</primary>\n-   <secondary>synchronizing</secondary>\n-   <tertiary>CVS</tertiary></indexterm><indexterm>\n-   <primary>CVS</primary></indexterm>\n-   <para>\n-    CVS, which is mostly used for managing program source versions, offers the\n-    possibility of keeping copies of the files on multiple computers.\n-    Accordingly, it is also suitable for data synchronization. CVS maintains a\n-    central repository on the server in which the files and changes to files\n-    are saved. Changes that are performed locally are committed to the\n-    repository and can be retrieved from other computers by means of an update.\n-    Both procedures must be initiated by the user.\n-   </para>\n-   <para>\n-    CVS is very resilient to errors when changes occur on several computers.\n-    The changes are merged and (if changes took place in the same lines) a\n-    conflict is reported. When a conflict occurs, the database remains in a\n-    consistent state. The conflict is only visible for resolution on the client\n-    host.\n-   </para>\n-  </sect2>\n-\n-  <sect2 xml:id=\"sec.net.sync.soft.rsync\">\n-   <title>rsync</title><indexterm>\n-   <primary>rsync</primary></indexterm><indexterm>\n-   <primary>files</primary>\n-   <secondary>synchronizing</secondary>\n-   <tertiary>rsync</tertiary></indexterm>\n-   <para>\n-    When no version control is needed but large directory structures need to be\n-    synchronized over slow network connections, the tool rsync offers\n+ <sect1 xml:id=\"sec.net.sync.rsync\">\n+  <title>File Copying with Rsync</title>\n+  <para>\n+    When large directory structures need to be\n+    synchronized over slow network connections, the tool Rsync offers\n     well-developed mechanisms for transmitting only changes within files. This\n     not only applies to text files, but also binary files. To detect the\n-    differences between files, rsync subdivides the files into blocks and\n+    differences between files, Rsync subdivides the files into blocks and\n     computes check sums over them.\n    </para>\n    <para>\n     The effort put into the detection of the changes comes at a price. The\n     systems to synchronize should be scaled generously for the usage of rsync.\n     RAM is especially important.\n    </para>\n-  </sect2>\n-\n-<!--taroth 060621: dropped iFolder for SLED 10 according to mail from\n-   Elizabeth-->\n-\n-<!-- <sect2 id=\"sec.net.sync.soft.ifolder\">\n-   <title>Novell iFolder</title>\n-   <indexterm>\n-    <primary>files</primary>\n-    <secondary>synchronizing</secondary>\n-    <tertiary>iFolder</tertiary>\n-   </indexterm>\n-   <indexterm>\n-    <primary>iFolder</primary>\n-   </indexterm>\n-   <indexterm>\n-    <primary>Novell iFolder</primary>\n-   </indexterm>\n-   <para> Novell iFolder lets you access your files from anywhere at any\n-    time. If you place your files in your iFolder directory, it is\n-    instantly synchronized to the server. With this method, you can work\n-    from everywhere. </para>\n-   <para> Novell iFolder also lets you work offline. This is very\n-    convenient if you do not have an Internet connection, for example,\n-    when working with a laptop on the road. After you successfully\n-    connect to the Internet, the changes to your work is sent to the\n-    server.</para>\n-   <para>Working with iFolder involves these steps:</para>\n-   <remark role=\"xml\">rwalter: shouldn't this be a procedure?</remark>\n-   <orderedlist>\n-    <listitem>\n-     <para>Log in before you work with iFolder.</para>\n-    </listitem>\n-    <listitem>\n-     <para>Change your preferences for how often you want to\n-      synchronize.</para>\n-    </listitem>\n-    <listitem>\n-     <para>Synchronize your files and view the activity between your\n-      client and the iFolder server.</para>\n-    </listitem>\n-    <listitem>\n-     <para>Resolve any conflicts during the synchronization. Conflicts\n-      occur when you change the same file on two different computers.\n-      iFolder stores conflicted files in a separate directory to prevent\n-      data loss. </para>\n-    </listitem>\n-   </orderedlist>\n-\n-   <para>For more information about iFolder, see <ulink\n-     url=\"http://www.novell.com/en-en/documentation/\"></ulink>. Find\n-    tips and tricks about iFolder at <ulink\n-     url=\"http://www.novell.com/coolsolutions/ifmag/\"></ulink>.</para>\n-  </sect2>-->\n- </sect1>\n- <sect1 xml:id=\"sec.net.sync.select\">\n-  <title>Determining Factors for Selecting a Program</title>\n-\n   <para>\n-   There are some important factors to consider when deciding which program to\n-   use.\n-  </para>\n-\n-  <sect2 xml:id=\"sec.net.sync.select.client-server\">\n-   <title>Client/Server versus Peer-to-Peer</title>\n-   <para>\n-    Two different models are commonly used for distributing data. In the first\n-    model, all clients synchronize their files with a central server. The\n-    server must be accessible by all clients at least occasionally. This model\n-    is used by CVS.\n-   </para>\n-   <para>\n-    The other possibility is to let all networked hosts synchronize their data\n-    between each other as peers. rsync actually works in client mode, but any\n-    client can also act as a server.\n-   </para>\n-  </sect2>\n-\n-  <sect2 xml:id=\"sec.net.sync.select.port\">\n-   <title>Portability</title>\n-   <para>\n-    CVS and rsync are also available for many other operating systems,\n-    including various Unix and Windows systems.\n-   </para>\n-  </sect2>\n-\n-  <sect2 xml:id=\"sec.net.sync.select.auto\">\n-   <title>Interactive versus Automatic</title>\n-   <para>\n-    In CVS, the data synchronization is started manually by the user. This\n-    allows fine control over the data to synchronize and easy conflict\n-    handling. However, if the synchronization intervals are too long, conflicts\n-    are more likely to occur.\n-   </para>\n-  </sect2>\n-\n-  <sect2 xml:id=\"sec.net.sync.select.problems\">\n-   <title>Conflicts: Incidence and Solution</title>\n-   <para>\n-    Conflicts only rarely occur in CVS, even when several people work on one\n-    large program project. This is because the documents are merged on the\n-    basis of individual lines. When a conflict occurs, only one client is\n-    affected. Usually conflicts in CVS can easily be resolved.\n-   </para>\n-   <para>\n-    There is no conflict handling in rsync. The user is responsible for not\n-    accidentally overwriting files and manually resolving all possible\n-    conflicts. To be on the safe side, a versioning system like RCS can\n-    additionally be employed.\n-   </para>\n-  </sect2>\n-\n-  <sect2 xml:id=\"sec.net.sync.select.files\">\n-   <title>Selecting and Adding Files</title>\n-   <para>\n-    In CVS, new directories and files must be added explicitly using the\n-    command <command>cvs</command>&nbsp;<option>add</option>. This results in\n-    greater user control over the files to synchronize. On the other hand, new\n-    files are often overlooked, especially when the question marks in the\n-    output of <command>cvs</command>&nbsp;<option>update</option> are ignored\n-    because of the large number of files.\n-   </para>\n-  </sect2>\n-\n-  <sect2 xml:id=\"sec.net.sync.select.history\">\n-   <title>History</title>\n-   <para>\n-    An additional feature of CVS is that old file versions can be\n-    reconstructed. A brief editing remark can be inserted for each change and\n-    the development of the files can easily be traced later based on the\n-    content and the remarks. This is a valuable aid for theses and program\n-    texts.\n-   </para>\n-  </sect2>\n-\n-  <sect2 xml:id=\"sec.net.sync.select.size\">\n-   <title>Data Volume and Hard Disk Requirements</title>\n-   <para>\n-    A sufficient amount of free space for all distributed data is required on\n-    the hard disks of all involved hosts. CVS require additional space for the\n-    repository database on the server. The file history is also stored on the\n-    server, requiring even more space. When files in text format are changed,\n-    only the modified lines need to be saved. Binary files require additional\n-    space amounting to the size of the file every time the file is changed.\n-   </para>\n-  </sect2>\n-\n-  <sect2 xml:id=\"sec.net.sync.select.gui\">\n-   <title>GUI</title>\n-   <para>\n-    Experienced users normally run CVS from the command line. However,\n-    graphical user interfaces are available for Linux (such as cervisia) and\n-    other operating systems (like wincvs). Many development tools and text\n-    editors (such as Emacs) provide support for CVS. The resolution of\n-    conflicts is often much easier to perform with these front-ends.\n-   </para>\n-  </sect2>\n-\n-  <sect2 xml:id=\"sec.net.sync.select.use\">\n-   <title>User Friendliness</title>\n-   <para>\n-    rsync is rather easy to use and is also suitable for newcomers. CVS is\n-    somewhat more difficult to operate. Users should understand the interaction\n-    between the repository and local data. Changes to the data should first be\n-    merged locally with the repository. This is done with the command\n-    <command>cvs</command>&nbsp;<option>update</option>. Then the data must be\n-    sent back to the repository with the command\n-    <command>cvs</command>&nbsp;<option>commit</option>. When this procedure\n-    has been understood, newcomers are also able to use CVS.\n-   </para>\n-  </sect2>\n-\n-  <sect2 xml:id=\"sec.net.sync.select.sec\">\n-   <title>Security against Attacks</title>\n-   <para>\n-    During transmission, the data should ideally be protected against\n-    interception and manipulation. CVS and rsync can easily be used via SSH\n-    (secure shell), providing security against attacks of this kind. Running\n-    CVS via rsh (remote shell) should be avoided. Accessing CVS with the\n-    <emphasis>pserver</emphasis> mechanism in insecure networks is likewise not\n-    advisable.\n-   </para>\n-  </sect2>\n-\n-  <sect2 xml:id=\"sec.net.sync.select.loss\">\n-   <title>Protection against Data Loss</title>\n-   <para>\n-    CVS has been used by developers for a long time to manage program projects\n-    and is extremely stable. Because the development history is saved, CVS even\n-    provides protection against certain user errors, such as unintentional\n-    deletion of a file.\n-   </para>\n-   <table xml:id=\"tab.sync_overview\">\n-    <title>Features of the File Synchronization Tools: -- = very poor, - = poor or not available, o = medium, + = good, ++ = excellent, x = available</title>\n-<!-- titleabbrev: \"Features of the File Synchronization Tools\" -->\n-    <tgroup cols=\"3\">\n-     <thead>\n-      <row>\n-       <entry>\n-        <para/>\n-       </entry>\n-       <entry>\n-        <para>\n-         CVS\n-        </para>\n-       </entry>\n-       <entry>\n-        <para>\n-         rsync\n-        </para>\n-       </entry>\n-      </row>\n-     </thead>\n-     <tbody>\n-      <row>\n-       <entry>\n-        <para>\n-         Client/Server\n-        </para>\n-       </entry>\n-       <entry>\n-        <para>\n-         C-S\n-        </para>\n-       </entry>\n-       <entry>\n-        <para>\n-         C-S\n-        </para>\n-       </entry>\n-      </row>\n-      <row>\n-       <entry>\n-        <para>\n-         Portability\n-        </para>\n-       </entry>\n-       <entry>\n-        <para>\n-         Lin,Un*x,Win\n-        </para>\n-       </entry>\n-       <entry>\n-        <para>\n-         Lin,Un*x,Win\n-        </para>\n-       </entry>\n-      </row>\n-      <row>\n-       <entry>\n-        <para>\n-         Interactivity\n-        </para>\n-       </entry>\n-       <entry>\n-        <para>\n-         x\n-        </para>\n-       </entry>\n-       <entry>\n-        <para>\n-         x\n-        </para>\n-       </entry>\n-      </row>\n-      <row>\n-       <entry>\n-        <para>\n-         Speed\n-        </para>\n-       </entry>\n-       <entry>\n-        <para>\n-         o\n-        </para>\n-       </entry>\n-       <entry>\n-        <para>\n-         +\n-        </para>\n-       </entry>\n-      </row>\n-      <row>\n-       <entry>\n-        <para>\n-         Conflicts\n-        </para>\n-       </entry>\n-       <entry>\n-        <para>\n-         ++\n-        </para>\n-       </entry>\n-       <entry>\n-        <para>\n-         o\n-        </para>\n-       </entry>\n-      </row>\n-      <row>\n-       <entry>\n-        <para>\n-         File Sel.\n-        </para>\n-       </entry>\n-       <entry>\n-        <para>\n-         Sel./file, dir.\n-        </para>\n-       </entry>\n-       <entry>\n-        <para>\n-         Dir.\n-        </para>\n-       </entry>\n-      </row>\n-      <row>\n-       <entry>\n-        <para>\n-         History\n-        </para>\n-       </entry>\n-       <entry>\n-        <para>\n-         x\n-        </para>\n-       </entry>\n-       <entry>\n-        <para>\n-         -\n-        </para>\n-       </entry>\n-      </row>\n-      <row>\n-       <entry>\n-        <para>\n-         Hard Disk Space\n-        </para>\n-       </entry>\n-       <entry>\n-        <para>\n-         --\n-        </para>\n-       </entry>\n-       <entry>\n-        <para>\n-         o\n-        </para>\n-       </entry>\n-      </row>\n-      <row>\n-       <entry>\n-        <para>\n-         GUI\n-        </para>\n-       </entry>\n-       <entry>\n-        <para>\n-         o\n-        </para>\n-       </entry>\n-       <entry>\n-        <para>\n-         -\n-        </para>\n-       </entry>\n-      </row>\n-      <row>\n-       <entry>\n-        <para>\n-         Difficulty\n-        </para>\n-       </entry>\n-       <entry>\n-        <para>\n-         o\n-        </para>\n-       </entry>\n-       <entry>\n-        <para>\n-         +\n-        </para>\n-       </entry>\n-      </row>\n-      <row>\n-       <entry>\n-        <para>\n-         Attacks\n-        </para>\n-       </entry>\n-       <entry>\n-        <para>\n-         + (SSH)\n-        </para>\n-       </entry>\n-       <entry>\n-        <para>\n-         +(SSH)\n-        </para>\n-       </entry>\n-      </row>\n-      <row>\n-       <entry>\n-        <para>\n-         Data Loss\n-        </para>\n-       </entry>\n-       <entry>\n-        <para>\n-         ++\n-        </para>\n-       </entry>\n-       <entry>\n-        <para>\n-         +\n-        </para>\n-       </entry>\n-      </row>\n-     </tbody>\n-    </tgroup>\n-   </table>\n-  </sect2>\n- </sect1>\n- <sect1 xml:id=\"sec.net.sync.cvs\">\n-  <title>Introduction to CVS</title><indexterm xml:id=\"idx.CVS\" class=\"startofrange\">\n-\n-  <primary>CVS</primary></indexterm><indexterm xml:id=\"idx.files_synchronizing_CVS\" class=\"startofrange\">\n-\n-  <primary>files</primary>\n-\n-  <secondary>synchronizing</secondary>\n-\n-  <tertiary>CVS</tertiary></indexterm>\n-\n-  <para>\n-   CVS is suitable for synchronization purposes if individual files are edited\n-   frequently and are stored in a file format, such as ASCII text or program\n-   source text. The use of CVS for synchronizing data in other formats (such as\n-   JPEG files) is possible, but leads to large amounts of data, because all\n-   variants of a file are stored permanently on the CVS server. In such cases,\n-   most of the capabilities of CVS cannot be used. The use of CVS for\n-   synchronizing files is only possible if all workstations can access the same\n-   server.\n+   Rsync is useful when large amounts of data need to be transmitted regularly\n+   while not changing too much. This is, for example, often the case when\n+   creating backups. Another application concerns staging servers. These are\n+   servers that store complete directory trees of Web servers that are\n+   regularly mirrored onto a Web server in a DMZ.\n   </para>\n+  <para> Although its name suggest that Rsync is a synchronization tool, it is\n+   not. By design, Rsync is a <emphasis>unidirectional</emphasis> tool, it\n+   copies files or directories only one way: from source to destination. It\n+   does not and cannot do the reverse. If you need a bidirectional tool which\n+   is able to synchronize both source and destination, use Csync. </para>\n \n-  <sect2 xml:id=\"sec.net.sync.cvs.config\">\n-   <title>Configuring a CVS Server</title>\n-   <para>\n-    The <emphasis>server</emphasis> is the host on which all valid files are\n-    located, including the latest versions of all files. Any stationary\n-    workstation can be used as a server. If possible, the data of the CVS\n-    repository should be included in regular backups.\n-   </para>\n-   <para>\n-    When configuring a CVS server, it might be a good idea to grant users\n-    access to the server via SSH. If the user is known to the server as\n-    &exampleuser; and the CVS software is installed on the server and the\n-    client, the following environment variables must be set on the client side:\n-   </para>\n-<screen>CVS_RSH=ssh CVSROOT=&exampleuser_plain;@server:/serverdir</screen>\n-   <para>\n-    The command <command>cvs</command>&nbsp;<option>init</option> can be used\n-    to initialize the CVS server from the client side. This needs to be done\n-    only once.\n-   </para>\n-   <para>\n-    Finally, the synchronization must be assigned a name. Select or create a\n-    directory on the client to contain files to manage with CVS (the directory\n-    can also be empty). The name of the directory is also the name of the\n-    synchronization. In this example, the directory is called\n-    <literal>synchome</literal>. Change to this directory and enter the\n-    following command to set the synchronization name to\n-    <literal>synchome</literal>:\n-   </para>\n-<screen>cvs import synchome &exampleuser_plain; &exampleuserII_plain;</screen>\n-   <para>\n-    Many CVS commands require a comment. For this purpose, CVS starts an editor\n-    (the editor defined in the environment variable <literal>$EDITOR</literal>\n-    or vi if no editor was defined). The editor call can be circumvented by\n-    entering the comment in advance on the command line, such as in the\n-    following example:\n-   </para>\n-<screen>cvs import -m 'this is a test' synchome &exampleuser_plain; &exampleuserII_plain;</screen>\n-  </sect2>\n+  <!-- Use cases and properties of Rsync? -->\n \n-  <sect2 xml:id=\"sec.net.sync.cvs.using\">\n-   <title>Using CVS</title>\n-   <para>\n-    The synchronization repository can now be checked out from all hosts with\n-    <command>cvs</command>&nbsp;<option>co synchome</option>. This creates a\n-    new subdirectory <filename>synchome</filename> on the client. To commit\n-    your changes to the server, change to the directory\n-    <filename>synchome</filename> (or one of its subdirectories) and enter\n-    <command>cvs</command>&nbsp;<option>commit</option>.\n-   </para>\n+  <sect2 xml:id=\"sec.net.sync.rsync.syntax\">\n+   <title>Basic Syntax</title>\n    <para>\n-    By default, all files (including subdirectories) are committed to the\n-    server. To commit only individual files or directories, specify them as in\n-    <command>cvs</command>&nbsp;<option>commit file1 directory1</option>. New\n-    files and directories must be added to the repository with a command like\n-    <command>cvs</command>&nbsp;<option>add file1 directory1</option> before\n-    they are committed to the server. Subsequently, commit the newly added\n-    files and directories with <command>cvs</command>&nbsp;<option>commit file1\n-    directory1</option>.\n+    Rsync is a command line tool which the following basic syntax:\n    </para>\n+   <screen>rsync [OPTION] SOURCE [SOURCE]... DEST</screen>\n+   <para> You can use Rsync to any machine that you have access to and write\n+    permissions, be it local or remote. <replaceable>SOURCE</replaceable> can\n+    be added one or many times. The <replaceable>SOURCE</replaceable> and\n+     <replaceable>DEST</replaceable> placeholders can be paths, URLs, or a\n+    combination of these. </para>\n    <para>\n-    If you change to another workstation, check out the synchronization\n-    repository if this has not been done during an earlier session at the same\n-    workstation.\n-   </para>\n-   <para>\n-    Start the synchronization with the server with\n-    <command>cvs</command>&nbsp;<option>update</option>. Update individual\n-    files or directories as in <command>cvs</command>&nbsp;<option>update file1\n-    directory1</option>. To see the difference between the current files and\n-    the versions stored on the server, use the command\n-    <command>cvs</command>&nbsp;<option>diff</option> or\n-    <command>cvs</command>&nbsp;<option>diff file1 directory1</option>. Use\n-    <command>cvs</command>&nbsp;<option>-nq update</option> to see which files\n-    would be affected by an update.\n-   </para>\n-   <para>\n-    Here are some status symbols displayed during an update:\n+    The most common options for rsync:\n    </para>\n    <variablelist>\n     <varlistentry>\n-     <term>U</term>\n-     <listitem>\n-      <para>\n-       The local version was updated. This affects all files that are provided\n-       by the server and missing on the local system.\n-      </para>\n-     </listitem>\n-    </varlistentry>\n-    <varlistentry>\n-     <term>M</term>\n-     <listitem>\n-      <para>\n-       The local version was modified. If there were changes on the server, it\n-       was possible to merge the differences in the local copy.\n-      </para>\n-     </listitem>\n-    </varlistentry>\n-    <varlistentry>\n-     <term>P</term>\n+     <term><option>-v</option></term>\n      <listitem>\n-      <para>\n-       The local version was patched with the version on the server.\n-      </para>\n+      <para> Outputs more verbose text</para>\n      </listitem>\n     </varlistentry>\n     <varlistentry>\n-     <term>C</term>\n+     <term><option>-a</option></term>\n      <listitem>\n-      <para>\n-       The local file conflicts with current version in the repository.\n-      </para>\n+      <para> Archive mode; copy files recursively and preserves timestamps,\n+       user/group ownership, file permissions, and symbolic links. </para>\n      </listitem>\n     </varlistentry>\n     <varlistentry>\n-     <term>?</term>\n+     <term><option>-z</option></term>\n      <listitem>\n-      <para>\n-       This file does not exist in CVS.\n-      </para>\n+      <para>Compress the transmitted data</para>\n      </listitem>\n     </varlistentry>\n    </variablelist>\n-   <para>\n-    The status <literal>M</literal> indicates a locally modified file. Either\n-    commit the local copy to the server or remove the local file and run the\n-    update again. In this case, the missing file is retrieved from the server.\n-    If you commit a locally modified file and the file was changed in the same\n-    line and committed, you might get a conflict, indicated with\n-    <literal>C</literal>.\n+   <note>\n+    <title>Trailing Slashes Count</title>\n+    <para>\n+     Rsync has a peculiar syntax when it comes to directory names: the\n+     <emphasis>trailing slash</emphasis>. If you put a trailing slash after the\n+    directory it means the <emphasis>content</emphasis> of that directory. If\n+    you omit the slash, you mean the directory itself.\n+   </para>\n+   </note>\n+  </sect2>\n+  <sect2 xml:id=\"sec.net.sync.rsync.copy.local.files-and-dirs\">\n+   <title>Copying Files and Directories Locally</title>\n+   <para> Assuming a directory <filename>/var/backup</filename>\n+    with write permissions.\n+    To copy a single file on your local machine from\n+    one path to another path, use the following command: </para>\n+   <screen>&prompt.user;<command>rsync</command> -avz backup.tar.xz /var/backup/</screen>\n+   <para>The file <filename>backup.tar.xz</filename> is copied to\n+     <filename>/var/backup/</filename>, the absolute path will be\n+     <filename>/var/backup/backup.tar.xz</filename>.</para>\n+   <para>\n+    Keep in mind to insert the <emphasis>trailing slash</emphasis> after the\n+    <filename>/var/backup/</filename> directory! If you do not insert the slash,\n+    the file <filename>backup.tar.xz</filename> is copied to <filename>/var/backup</filename>\n+    (file) <emphasis>not</emphasis> inside the directory <filename>/var/backup/</filename>!\n+   </para>\n+   <para>\n+    To copy a directory is similar to copy a single file. The following\n+    example copies the directory <filename>&exampleuser_plain;/</filename> and\n+    its content into the directory <filename>/var/backup/</filename>: </para>\n+    <screen>&prompt.user;<command>rsync</command> -avz &exampleuser_plain; /var/backup/</screen>\n+    <para> Find the copy in the absolute path\n+     <filename>/var/backup/&exampleuser_plain;/</filename>. </para>\n+  </sect2>\n+  <sect2 xml:id=\"sec.net.sync.rsync.copy.remote.files-and-dirs\">\n+   <title>Copying Files and Directories Remotely</title>\n+   <para> To copy files from or to remote directories requires an IP address or\n+    a domain name. A user name can be optional in case your current user name is\n+    equal to the remote user name. </para>\n+   <para> To copy the file <filename>file.tar.xz</filename> from your local\n+    host to the remote host <systemitem\n+     class=\"ipaddress\">&exampledomain1ip;.1</systemitem> with same users (being\n+    local and remote), use the following command:\n+   </para>\n+   <screen>&prompt.user;<command>rsync</command> -avz file.tar.xz  &exampleuser_plain;@&exampledomain1ip;.1:</screen>\n+    <para> Depending on what you prefer, these commands are also possible and\n+    equivalent: </para>\n+   <screen>&prompt.user;<command>rsync</command> -avz file.tar.xz &exampledomain1ip;.1:~\n+&prompt.user;<command>rsync</command> -avz file.tar.xz &exampledomain1ip;.1:/home/&exampleuser_plain;</screen>\n+    <para> In all cases with standard configuration, you will be asked to\n+     enter your passphrase of the remote user. This command will copy the\n+     <filename>file.tar.xz</filename> to the home directory of user\n+     &exampleuser; (usually <filename>/home/&exampleuser_plain;</filename>).\n+    </para>\n+   <para>\n+    To copy a directory remotely is similar to copy a directory locally.\n+    The following example copies the directory <filename>&exampleuser_plain;/</filename> and\n+    its content into the remote directory <filename>/var/backup/</filename> on\n+    the <systemitem class=\"ipaddress\">&exampledomain1ip;.1</systemitem> host:\n+   </para>\n+   <screen>&prompt.user;<command>rsync</command> -avz &exampleuser_plain; &exampledomain1ip;.1:/var/backup/</screen>\n+   <para>\n+    Assuming you have write permissions on the host <systemitem class=\"ipaddress\">&exampledomain1ip;.1</systemitem>, you will find the\n+    copy in the absolute path <filename>/var/backup/&exampleuser_plain;</filename>.\n    </para>\n-   <para>\n-    In this case, look at the conflict marks\n-    (<quote><literal>&gt;&gt;</literal></quote> and\n-    <quote><literal>&lt;&lt;</literal></quote>) in the file and decide between\n-    the two versions. As this can be a rather unpleasant job, you might decide\n-    to abandon your changes, delete the local file, and enter\n-    <command>cvs</command>&nbsp;<option>up</option> to retrieve the current\n-    version from the server.\n-   </para><indexterm class=\"endofrange\" startref=\"idx.CVS\"/><indexterm class=\"endofrange\" startref=\"idx.files_synchronizing_CVS\"/>\n   </sect2>\n- </sect1>\n- <sect1 xml:id=\"sec.net.sync.rsync\">\n-  <title>Introduction to rsync</title><indexterm>\n \n-  <primary>rsync</primary></indexterm>\n-\n-  <para>\n-   rsync is useful when large amounts of data need to be transmitted regularly\n-   while not changing too much. This is, for example, often the case when\n-   creating backups. Another application concerns staging servers. These are\n-   servers that store complete directory trees of Web servers that are\n-   regularly mirrored onto a Web server in a DMZ.\n-  </para>\n-\n-  <sect2 xml:id=\"sec.net.sync.rsync.usage\">\n-   <title>Configuration and Operation</title>\n-   <para>\n-    rsync can be operated in two different modes. It can be used to archive or\n-    copy data. To accomplish this, only a remote shell, like SSH, is required\n-    on the target system. However, rsync can also be used as a daemon to\n-    provide directories to the network.\n+  <sect2 xml:id=\"sec.net.sync.rsync.server\">\n+   <title>Configuring and Using a Rsync Server</title>\n+   <para> Rsync can be operated as a daemon (<systemitem class=\"daemon\"\n+     >rsyncd</systemitem>) listing on default port 873 for incoming\n+    connections. This daemon can receive <quote>copying targets</quote>.\n    </para>\n    <para>\n-    The basic mode of operation of rsync does not require any special\n-    configuration. rsync directly allows mirroring complete directories onto\n-    another system. As an example, the following command creates a backup of\n-    the home directory of &exampleuser; on a backup server named\n-    &exampleserver;:\n+    The following procedure creates a Rsync server on\n+    <systemitem>&wsI;</systemitem> with a <emphasis>backup</emphasis> target.\n+    This target can be used to store your backups. To create a Rsync server,\n+    do the following:\n    </para>\n-<screen>rsync -baz -e ssh<!--\n-   --> /home/&exampleuser_plain;/ &exampleuser_plain;@&exampleserver;:backup</screen>\n-   <para>\n-    The following command is used to play the directory back:\n-   </para>\n-<screen>rsync -az -e ssh<!--\n-   --> &exampleuser_plain;@&exampleserver;:backup /home/&exampleuser_plain;/</screen>\n-   <para>\n-    Up to this point, the handling does not differ much from that of a regular\n-    copying tool, like scp.\n-   </para>\n-   <para>\n-    rsync should be operated in <quote>rsync</quote> mode to make all its\n-    features fully available. This is done by starting the rsyncd daemon on one\n-    of the systems. Configure it in the file\n-    <filename>/etc/rsyncd.conf</filename>. For example, to make the directory\n-    <filename>/srv/ftp</filename> available with rsync, use the following\n-    configuration:\n-   </para>\n-<screen>gid = nobody\n-uid = nobody\n-read only = true\n-use chroot = no\n-transfer logging = true\n-log format = %h %o %f %l %b\n-log file = /var/log/rsyncd.log\n-\n-[FTP]\n-        path = /srv/ftp\n-        comment = An Example</screen>\n-   <para>\n-    Then start rsyncd with <command>systemctl start rsyncd</command>. rsyncd\n-    can also be started automatically during the boot process. Set this up by\n-    activating this service in the &yast; <guimenu>Services Manager</guimenu>\n-    or by manually entering the command:\n-   </para>\n-<screen>&prompt.root; systemctl enable rsyncd</screen>\n-   <para>\n-<!--<remark>taroth 2014-02-25: systemd - what about xinetd? is this\n+   <procedure>\n+    <title>Setting Up the Rsync Server</title>\n+    <step>\n+     <para>\n+      On &wsI;, create a directory to store all your backup files.\n+      In this example, we use <filename>/var/backup</filename>:\n+     </para>\n+     <screen>&prompt.root;<command>mkdir</command> /var/backup</screen>\n+    </step>\n+    <step>\n+     <para>Decide about the ownership. In this case, the directory is owned by\n+      user &exampleuser; in group <systemitem class=\"groupname\"\n+       >users</systemitem>:</para>\n+     <screen>&prompt.root;<command>chown</command> &exampleuser_plain;.users /var/backup</screen>\n+    </step>\n+    <step>\n+     <para>Configure the rsyncd daemon.</para>\n+     <para>We will separate the configuration file into a main file and some\n+       <quote>modules</quote> which holds your backup target. This makes it\n+      easier to add additional targets later. Global values can be stored in\n+       <filename>/etc/rsyncd.d/*.inc</filename> files, whereas your modules are\n+      placed in <filename>/etc/rsyncd.d/*.conf</filename> files: </para>\n+     <substeps>\n+      <step>\n+       <para>Create a directory <filename>/etc/rsyncd.d/</filename>:</para>\n+       <screen>&prompt.root;<command>mkdir</command> /etc/rsyncd.d/</screen>\n+      </step>\n+      <step>\n+       <para>\n+        In the main configuration file\n+        <filename>/etc/rsyncd.conf</filename> add the following lines:\n+       </para>\n+       <screen># rsyncd.conf main configuration file\n+log file = /var/log/rsync.log\n+pid file = /var/lock/rsync.lock\n+\n+&amp;merge /etc/rsyncd.d <co xml:id=\"co.rsync.conf.merge\"/>\n+&amp;include /etc/rsyncd.d <co xml:id=\"co.rsync.conf.include\"/></screen>\n+       <calloutlist>\n+        <callout arearefs=\"co.rsync.conf.merge\">\n+         <para> Merge global values from\n+           <filename>/etc/rsyncd.d/*.inc</filename> files into the main\n+          configuration file. </para>\n+        </callout>\n+        <callout arearefs=\"co.rsync.conf.include\">\n+         <para> Loads any modules (or targets) from\n+           <filename>/etc/rsyncd.d/*.conf</filename> files. These files should\n+          not contain any references to global values. </para>\n+        </callout>\n+       </calloutlist>\n+      </step>\n+      <step>\n+       <para> Create your module (your backup target) in the file\n+         <filename>/etc/rsyncd.d/backup.conf</filename> with the following\n+        lines: </para>\n+       <screen># backup.conf: backup module\n+[backup] <co xml:id=\"co.rsync.conf.target\"/>\n+   uid = &exampleuser_plain; <co xml:id=\"co.rsync.conf.uid-gid\"/>\n+   gid = users <xref linkend=\"co.rsync.conf.uid-gid\"/>\n+   path = /var/backup <co xml:id=\"co.rsync.conf.path\"/>\n+   auth users = &exampleuser_plain;  <co xml:id=\"co.rsync.conf.authusers\"/>\n+   secrets file = /etc/rsyncd.secrets <co xml:id=\"co.rsync.conf.secretfiles\"/>\n+   comment = Our backup target</screen>\n+       <calloutlist>\n+        <!--<callout arearefs=\"co.rsync.conf.usechroot\">\n+         <para>\n+          Set protection against security holes. Before starting the transfer,\n+          the Rsync daemon will change to this path (<quote>change root</quote>).\n+         </para>\n+        </callout>-->\n+        <!--<callout arearefs=\"co.rsync.conf.logging\">\n+         <para>\n+          Enables logging and store it in <filename>/var/log/rsyncd.log</filename>\n+          with the format of <varname>log&nbsp;format</varname>.\n+         </para>\n+        </callout>-->\n+        <callout arearefs=\"co.rsync.conf.target\">\n+         <para>\n+          The <emphasis>backup</emphasis> target. You can invent any name you\n+          like. However, it is a good idea to name a target according to its\n+          purpose and store it in the <filename>*.conf</filename> file\n+          respectively.\n+         </para>\n+        </callout>\n+        <callout arearefs=\"co.rsync.conf.uid-gid\">\n+         <para>\n+          Specifies the user name or group name that is used when the file\n+          transfer takes place.\n+         </para>\n+        </callout>\n+        <callout arearefs=\"co.rsync.conf.path\">\n+         <para>\n+          Defines the path to store your backups.\n+         </para>\n+        </callout>\n+        <callout arearefs=\"co.rsync.conf.authusers\">\n+         <para>\n+          Specifies a comma separated list of allowed users. In its simplest","path":"xml/net_sync.xml","position":973,"original_position":973,"commit_id":"85fa6e16892fcef8133df336b7ff14db06094126","original_commit_id":"85fa6e16892fcef8133df336b7ff14db06094126","user":{"login":"dmpop","id":837588,"avatar_url":"https://avatars3.githubusercontent.com/u/837588?v=3","gravatar_id":"","url":"https://api.github.com/users/dmpop","html_url":"https://github.com/dmpop","followers_url":"https://api.github.com/users/dmpop/followers","following_url":"https://api.github.com/users/dmpop/following{/other_user}","gists_url":"https://api.github.com/users/dmpop/gists{/gist_id}","starred_url":"https://api.github.com/users/dmpop/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dmpop/subscriptions","organizations_url":"https://api.github.com/users/dmpop/orgs","repos_url":"https://api.github.com/users/dmpop/repos","events_url":"https://api.github.com/users/dmpop/events{/privacy}","received_events_url":"https://api.github.com/users/dmpop/received_events","type":"User","site_admin":false},"body":"comma separated \r\n\r\ncomma-separated","created_at":"2017-05-12T12:56:58Z","updated_at":"2017-05-12T13:04:00Z","html_url":"https://github.com/SUSE/doc-sle/pull/142#discussion_r116221134","pull_request_url":"https://api.github.com/repos/SUSE/doc-sle/pulls/142","_links":{"self":{"href":"https://api.github.com/repos/SUSE/doc-sle/pulls/comments/116221134"},"html":{"href":"https://github.com/SUSE/doc-sle/pull/142#discussion_r116221134"},"pull_request":{"href":"https://api.github.com/repos/SUSE/doc-sle/pulls/142"}}},"pull_request":{"url":"https://api.github.com/repos/SUSE/doc-sle/pulls/142","id":120146818,"html_url":"https://github.com/SUSE/doc-sle/pull/142","diff_url":"https://github.com/SUSE/doc-sle/pull/142.diff","patch_url":"https://github.com/SUSE/doc-sle/pull/142.patch","issue_url":"https://api.github.com/repos/SUSE/doc-sle/issues/142","number":142,"state":"open","locked":false,"title":"Rewrite File Syncronization","user":{"login":"tomschr","id":1312925,"avatar_url":"https://avatars1.githubusercontent.com/u/1312925?v=3","gravatar_id":"","url":"https://api.github.com/users/tomschr","html_url":"https://github.com/tomschr","followers_url":"https://api.github.com/users/tomschr/followers","following_url":"https://api.github.com/users/tomschr/following{/other_user}","gists_url":"https://api.github.com/users/tomschr/gists{/gist_id}","starred_url":"https://api.github.com/users/tomschr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tomschr/subscriptions","organizations_url":"https://api.github.com/users/tomschr/orgs","repos_url":"https://api.github.com/users/tomschr/repos","events_url":"https://api.github.com/users/tomschr/events{/privacy}","received_events_url":"https://api.github.com/users/tomschr/received_events","type":"User","site_admin":false},"body":"This chapter is a complete rewrite. So many tools can be used for \"file synchronization\" which is hard to choose. Additionally, the topic is quite broad and vague, so I reduced to the bare minimum: Rsync.\r\n\r\n@dmpop Would be really helpful if you could review my article. Not sure if I should leave it to Rsync or I should append something about Csync (bidirectional tool).\r\n\r\n","created_at":"2017-05-11T16:17:55Z","updated_at":"2017-05-12T13:04:00Z","closed_at":null,"merged_at":null,"merge_commit_sha":"13c1d3ab10738f63b1f6d66b4c9978bf18a6f90a","assignee":{"login":"tomschr","id":1312925,"avatar_url":"https://avatars1.githubusercontent.com/u/1312925?v=3","gravatar_id":"","url":"https://api.github.com/users/tomschr","html_url":"https://github.com/tomschr","followers_url":"https://api.github.com/users/tomschr/followers","following_url":"https://api.github.com/users/tomschr/following{/other_user}","gists_url":"https://api.github.com/users/tomschr/gists{/gist_id}","starred_url":"https://api.github.com/users/tomschr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tomschr/subscriptions","organizations_url":"https://api.github.com/users/tomschr/orgs","repos_url":"https://api.github.com/users/tomschr/repos","events_url":"https://api.github.com/users/tomschr/events{/privacy}","received_events_url":"https://api.github.com/users/tomschr/received_events","type":"User","site_admin":false},"assignees":[{"login":"tomschr","id":1312925,"avatar_url":"https://avatars1.githubusercontent.com/u/1312925?v=3","gravatar_id":"","url":"https://api.github.com/users/tomschr","html_url":"https://github.com/tomschr","followers_url":"https://api.github.com/users/tomschr/followers","following_url":"https://api.github.com/users/tomschr/following{/other_user}","gists_url":"https://api.github.com/users/tomschr/gists{/gist_id}","starred_url":"https://api.github.com/users/tomschr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tomschr/subscriptions","organizations_url":"https://api.github.com/users/tomschr/orgs","repos_url":"https://api.github.com/users/tomschr/repos","events_url":"https://api.github.com/users/tomschr/events{/privacy}","received_events_url":"https://api.github.com/users/tomschr/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/SUSE/doc-sle/pulls/142/commits","review_comments_url":"https://api.github.com/repos/SUSE/doc-sle/pulls/142/comments","review_comment_url":"https://api.github.com/repos/SUSE/doc-sle/pulls/comments{/number}","comments_url":"https://api.github.com/repos/SUSE/doc-sle/issues/142/comments","statuses_url":"https://api.github.com/repos/SUSE/doc-sle/statuses/85fa6e16892fcef8133df336b7ff14db06094126","head":{"label":"SUSE:feature/netsync_rewrite","ref":"feature/netsync_rewrite","sha":"85fa6e16892fcef8133df336b7ff14db06094126","user":{"login":"SUSE","id":1067733,"avatar_url":"https://avatars3.githubusercontent.com/u/1067733?v=3","gravatar_id":"","url":"https://api.github.com/users/SUSE","html_url":"https://github.com/SUSE","followers_url":"https://api.github.com/users/SUSE/followers","following_url":"https://api.github.com/users/SUSE/following{/other_user}","gists_url":"https://api.github.com/users/SUSE/gists{/gist_id}","starred_url":"https://api.github.com/users/SUSE/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SUSE/subscriptions","organizations_url":"https://api.github.com/users/SUSE/orgs","repos_url":"https://api.github.com/users/SUSE/repos","events_url":"https://api.github.com/users/SUSE/events{/privacy}","received_events_url":"https://api.github.com/users/SUSE/received_events","type":"Organization","site_admin":false},"repo":{"id":37653820,"name":"doc-sle","full_name":"SUSE/doc-sle","owner":{"login":"SUSE","id":1067733,"avatar_url":"https://avatars3.githubusercontent.com/u/1067733?v=3","gravatar_id":"","url":"https://api.github.com/users/SUSE","html_url":"https://github.com/SUSE","followers_url":"https://api.github.com/users/SUSE/followers","following_url":"https://api.github.com/users/SUSE/following{/other_user}","gists_url":"https://api.github.com/users/SUSE/gists{/gist_id}","starred_url":"https://api.github.com/users/SUSE/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SUSE/subscriptions","organizations_url":"https://api.github.com/users/SUSE/orgs","repos_url":"https://api.github.com/users/SUSE/repos","events_url":"https://api.github.com/users/SUSE/events{/privacy}","received_events_url":"https://api.github.com/users/SUSE/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/SUSE/doc-sle","description":"Official SUSE Linux Enterprise documentation","fork":false,"url":"https://api.github.com/repos/SUSE/doc-sle","forks_url":"https://api.github.com/repos/SUSE/doc-sle/forks","keys_url":"https://api.github.com/repos/SUSE/doc-sle/keys{/key_id}","collaborators_url":"https://api.github.com/repos/SUSE/doc-sle/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/SUSE/doc-sle/teams","hooks_url":"https://api.github.com/repos/SUSE/doc-sle/hooks","issue_events_url":"https://api.github.com/repos/SUSE/doc-sle/issues/events{/number}","events_url":"https://api.github.com/repos/SUSE/doc-sle/events","assignees_url":"https://api.github.com/repos/SUSE/doc-sle/assignees{/user}","branches_url":"https://api.github.com/repos/SUSE/doc-sle/branches{/branch}","tags_url":"https://api.github.com/repos/SUSE/doc-sle/tags","blobs_url":"https://api.github.com/repos/SUSE/doc-sle/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/SUSE/doc-sle/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/SUSE/doc-sle/git/refs{/sha}","trees_url":"https://api.github.com/repos/SUSE/doc-sle/git/trees{/sha}","statuses_url":"https://api.github.com/repos/SUSE/doc-sle/statuses/{sha}","languages_url":"https://api.github.com/repos/SUSE/doc-sle/languages","stargazers_url":"https://api.github.com/repos/SUSE/doc-sle/stargazers","contributors_url":"https://api.github.com/repos/SUSE/doc-sle/contributors","subscribers_url":"https://api.github.com/repos/SUSE/doc-sle/subscribers","subscription_url":"https://api.github.com/repos/SUSE/doc-sle/subscription","commits_url":"https://api.github.com/repos/SUSE/doc-sle/commits{/sha}","git_commits_url":"https://api.github.com/repos/SUSE/doc-sle/git/commits{/sha}","comments_url":"https://api.github.com/repos/SUSE/doc-sle/comments{/number}","issue_comment_url":"https://api.github.com/repos/SUSE/doc-sle/issues/comments{/number}","contents_url":"https://api.github.com/repos/SUSE/doc-sle/contents/{+path}","compare_url":"https://api.github.com/repos/SUSE/doc-sle/compare/{base}...{head}","merges_url":"https://api.github.com/repos/SUSE/doc-sle/merges","archive_url":"https://api.github.com/repos/SUSE/doc-sle/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/SUSE/doc-sle/downloads","issues_url":"https://api.github.com/repos/SUSE/doc-sle/issues{/number}","pulls_url":"https://api.github.com/repos/SUSE/doc-sle/pulls{/number}","milestones_url":"https://api.github.com/repos/SUSE/doc-sle/milestones{/number}","notifications_url":"https://api.github.com/repos/SUSE/doc-sle/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/SUSE/doc-sle/labels{/name}","releases_url":"https://api.github.com/repos/SUSE/doc-sle/releases{/id}","deployments_url":"https://api.github.com/repos/SUSE/doc-sle/deployments","created_at":"2015-06-18T10:46:10Z","updated_at":"2017-05-07T18:15:56Z","pushed_at":"2017-05-12T11:41:17Z","git_url":"git://github.com/SUSE/doc-sle.git","ssh_url":"git@github.com:SUSE/doc-sle.git","clone_url":"https://github.com/SUSE/doc-sle.git","svn_url":"https://github.com/SUSE/doc-sle","homepage":"https://www.suse.com/doc/sles-12","size":433509,"stargazers_count":22,"watchers_count":22,"language":null,"has_issues":false,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":30,"mirror_url":null,"open_issues_count":5,"forks":30,"open_issues":5,"watchers":22,"default_branch":"develop"}},"base":{"label":"SUSE:develop","ref":"develop","sha":"a97fa36eb13c7edf606824266882b54a79b95613","user":{"login":"SUSE","id":1067733,"avatar_url":"https://avatars3.githubusercontent.com/u/1067733?v=3","gravatar_id":"","url":"https://api.github.com/users/SUSE","html_url":"https://github.com/SUSE","followers_url":"https://api.github.com/users/SUSE/followers","following_url":"https://api.github.com/users/SUSE/following{/other_user}","gists_url":"https://api.github.com/users/SUSE/gists{/gist_id}","starred_url":"https://api.github.com/users/SUSE/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SUSE/subscriptions","organizations_url":"https://api.github.com/users/SUSE/orgs","repos_url":"https://api.github.com/users/SUSE/repos","events_url":"https://api.github.com/users/SUSE/events{/privacy}","received_events_url":"https://api.github.com/users/SUSE/received_events","type":"Organization","site_admin":false},"repo":{"id":37653820,"name":"doc-sle","full_name":"SUSE/doc-sle","owner":{"login":"SUSE","id":1067733,"avatar_url":"https://avatars3.githubusercontent.com/u/1067733?v=3","gravatar_id":"","url":"https://api.github.com/users/SUSE","html_url":"https://github.com/SUSE","followers_url":"https://api.github.com/users/SUSE/followers","following_url":"https://api.github.com/users/SUSE/following{/other_user}","gists_url":"https://api.github.com/users/SUSE/gists{/gist_id}","starred_url":"https://api.github.com/users/SUSE/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SUSE/subscriptions","organizations_url":"https://api.github.com/users/SUSE/orgs","repos_url":"https://api.github.com/users/SUSE/repos","events_url":"https://api.github.com/users/SUSE/events{/privacy}","received_events_url":"https://api.github.com/users/SUSE/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/SUSE/doc-sle","description":"Official SUSE Linux Enterprise documentation","fork":false,"url":"https://api.github.com/repos/SUSE/doc-sle","forks_url":"https://api.github.com/repos/SUSE/doc-sle/forks","keys_url":"https://api.github.com/repos/SUSE/doc-sle/keys{/key_id}","collaborators_url":"https://api.github.com/repos/SUSE/doc-sle/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/SUSE/doc-sle/teams","hooks_url":"https://api.github.com/repos/SUSE/doc-sle/hooks","issue_events_url":"https://api.github.com/repos/SUSE/doc-sle/issues/events{/number}","events_url":"https://api.github.com/repos/SUSE/doc-sle/events","assignees_url":"https://api.github.com/repos/SUSE/doc-sle/assignees{/user}","branches_url":"https://api.github.com/repos/SUSE/doc-sle/branches{/branch}","tags_url":"https://api.github.com/repos/SUSE/doc-sle/tags","blobs_url":"https://api.github.com/repos/SUSE/doc-sle/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/SUSE/doc-sle/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/SUSE/doc-sle/git/refs{/sha}","trees_url":"https://api.github.com/repos/SUSE/doc-sle/git/trees{/sha}","statuses_url":"https://api.github.com/repos/SUSE/doc-sle/statuses/{sha}","languages_url":"https://api.github.com/repos/SUSE/doc-sle/languages","stargazers_url":"https://api.github.com/repos/SUSE/doc-sle/stargazers","contributors_url":"https://api.github.com/repos/SUSE/doc-sle/contributors","subscribers_url":"https://api.github.com/repos/SUSE/doc-sle/subscribers","subscription_url":"https://api.github.com/repos/SUSE/doc-sle/subscription","commits_url":"https://api.github.com/repos/SUSE/doc-sle/commits{/sha}","git_commits_url":"https://api.github.com/repos/SUSE/doc-sle/git/commits{/sha}","comments_url":"https://api.github.com/repos/SUSE/doc-sle/comments{/number}","issue_comment_url":"https://api.github.com/repos/SUSE/doc-sle/issues/comments{/number}","contents_url":"https://api.github.com/repos/SUSE/doc-sle/contents/{+path}","compare_url":"https://api.github.com/repos/SUSE/doc-sle/compare/{base}...{head}","merges_url":"https://api.github.com/repos/SUSE/doc-sle/merges","archive_url":"https://api.github.com/repos/SUSE/doc-sle/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/SUSE/doc-sle/downloads","issues_url":"https://api.github.com/repos/SUSE/doc-sle/issues{/number}","pulls_url":"https://api.github.com/repos/SUSE/doc-sle/pulls{/number}","milestones_url":"https://api.github.com/repos/SUSE/doc-sle/milestones{/number}","notifications_url":"https://api.github.com/repos/SUSE/doc-sle/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/SUSE/doc-sle/labels{/name}","releases_url":"https://api.github.com/repos/SUSE/doc-sle/releases{/id}","deployments_url":"https://api.github.com/repos/SUSE/doc-sle/deployments","created_at":"2015-06-18T10:46:10Z","updated_at":"2017-05-07T18:15:56Z","pushed_at":"2017-05-12T11:41:17Z","git_url":"git://github.com/SUSE/doc-sle.git","ssh_url":"git@github.com:SUSE/doc-sle.git","clone_url":"https://github.com/SUSE/doc-sle.git","svn_url":"https://github.com/SUSE/doc-sle","homepage":"https://www.suse.com/doc/sles-12","size":433509,"stargazers_count":22,"watchers_count":22,"language":null,"has_issues":false,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":30,"mirror_url":null,"open_issues_count":5,"forks":30,"open_issues":5,"watchers":22,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/SUSE/doc-sle/pulls/142"},"html":{"href":"https://github.com/SUSE/doc-sle/pull/142"},"issue":{"href":"https://api.github.com/repos/SUSE/doc-sle/issues/142"},"comments":{"href":"https://api.github.com/repos/SUSE/doc-sle/issues/142/comments"},"review_comments":{"href":"https://api.github.com/repos/SUSE/doc-sle/pulls/142/comments"},"review_comment":{"href":"https://api.github.com/repos/SUSE/doc-sle/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/SUSE/doc-sle/pulls/142/commits"},"statuses":{"href":"https://api.github.com/repos/SUSE/doc-sle/statuses/85fa6e16892fcef8133df336b7ff14db06094126"}}}}
{"actor":{"display_login":"dmpop"}}