Metadata-Version: 2.0
Name: sneakersync
Version: 1.1.2
Summary: Synchronize files through the sneakernet
Home-page: https://github.com/lamyj/sneakersync
Author: Julien Lamy
Author-email: julien@seasofcheese.net
License: MIT
Keywords: synchronization,removable drive,sneakernet,rsync
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Intended Audience :: End Users/Desktop
Classifier: Intended Audience :: Information Technology
Classifier: Intended Audience :: System Administrators
Classifier: Topic :: Communications :: File Sharing
Classifier: Topic :: System :: Archiving :: Mirroring
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 3
Requires-Dist: pyyaml
Requires-Dist: six

Sneakersync
===========

Synchronize files through the
`sneakernet <https://en.wikipedia.org/wiki/Sneakernet>`__, i.e. using a
removable drive.

Requirements:

-  `rsync <https://rsync.samba.org/>`__. The version must support
   extended attributes (``-X`` flag).
-  A removable drive with a filesystem matching the source and target
   computers.
-  Feet or a compatible mean of transportation of the removable drive
   between computers.

Installation
------------

Simply run ``pip install sneakersync``.

Configuration
-------------

The configuration is a
`YAML <https://en.wikipedia.org/wiki/YAML>`__-formatted file that
contains *modules* (directories to be synchronized) and *filters* (rules
that exclude or include files or directories). Each module must contain
a *root* entry (the top-level path to be synchronized) and may contain
filters; if no filter is specified, all files and directories below the
root of the module are included. Filters are defined by a list of
*include* or *exclude* directives.

A minimal example which synchronizes the home folder of a user would
look like:

.. code:: yaml

    modules:
      - root: /home/john.doe

To exclude a directory (and its content) and files with a given
extension from a module, add a *filters* directive:

.. code:: yaml

    modules:
      - root: /home/john.doe
        filters:
          - exclude: /home/john.doe/.firefox/caches
          - exclude: *.pyc

To filter entries from all modules, use the top-level *filters*
directive:

.. code:: yaml

    modules:
      - root: /home/john.doe
      - root: /home/jane.blogs
    filters:
      - exclude: .firefox/caches

Filters defined at the top-level will have priority over module-level
filters.

Usage
-----

1. Create a filesystem on a removable drive that matches the source and
   target computers.
2. Optional, but highly recommended:
   `encrypt <https://en.wikipedia.org/wiki/Disk_encryption>`__ your
   removable drive.
3. Store the `configuration <#configuration>`__ in a file named
   ``sneakersync.cfg`` on the root of the drive.
4. To send data, run ``sneakersync send <PATH_TO_YOUR_DRIVE>``.
5. Move your drive to the other computer and plug it in.
6. To receive data, run ``sneakersync receive <PATH_TO_YOUR_DRIVE>``.


