Smos Logo Smos

A comprehensive self-management system

The Smos Sync Client

Documentation for the Smos Synchronisation Client, for synchronising your workflow across devices

Your can synchronise your workflow directory using smos-sync-client. This synchronisation works with arbitrary amounts of time between synchronisations, so it is perfect for taking your laptop onto an airplane.

A community sync-server has been set up at https://api.smos.online.

Reference

Options

  --config-file Path to the configuration file
  register Register at a sync server
  login Login at a sync server
  sync (default) Sync with a sync server
      --workflow-dir        The workflow directory                                                                         
      --contents-dir        The directory to synchronise                                                                   
      --data-dir            The directory to store state data in                                                           
      --uuid-file           The file to store the server uuid in                           default: "server-uuid.json"     
      --metadata-db         The file to store the synchronisation metadata database in     default: "sync-metadata.sqlite3"
      --backup-dir          The directory to store backups in when a sync conflict happens default: "conflict-backups"     
      --ignore-nothing      Do not ignore hidden files                                                                     
      --ignore-hidden-files Ignore hidden files                                                                            
      --remove-empty-dirs   Remove empty directories after syncing                                                         
      --keep-empty-dirs     Keep empty directories after syncing                                                           
  --server-url The server to sync with example: https://api.smos.online
  --log-level Minimal severity of log messages default: Info examples: "Debug", "Info", "Warn", "Error"
  --username The username to login to the sync server
  --password      The password to login to the sync server
  --password-file The password to login to the sync server
  --cache-dir The directory to cache state data in
  --session-path The path to store the login session default: "sync-session.dat"

Environment variables

  SMOS_CONFIG_FILE FILE_PATH                     Path to the configuration file                                                                                                                   
  SMOS_WORKFLOW_DIR DIRECTORY_PATH               The workflow directory                                                                                                                           
  SMOS_SYNC_CLIENT_CONTENTS_DIR DIRECTORY_PATH   The directory to synchronise                                                                                                                     
  SMOS_SYNC_CLIENT_DATA_DIR DIRECTORY_PATH       The directory to store state data in                                                                                                             
  SMOS_SYNC_CLIENT_UUID_FILE FILE_PATH           The file to store the server uuid in                             default: "server-uuid.json"                                                     
  SMOS_SYNC_CLIENT_METADATA_DB FILE_PATH         The file to store the synchronisation metadata database in       default: "sync-metadata.sqlite3"                                                
  SMOS_SYNC_CLIENT_BACKUP_DIR FILE_PATH          The directory to store backups in when a sync conflict happens   default: "conflict-backups"                                                     
  SMOS_SYNC_CLIENT_IGNORE_FILES IGNORE_FILES     Which files to ignore                                            examples: "no", "nothing", "hidden"                                             
  SMOS_SYNC_CLIENT_EMPTY_DIRS EMPTY_DIR          What to do with empty directories after syncing                                                                                                  
  SMOS_SYNC_CLIENT_SERVER_URL URL                The server to sync with                                          example: https://api.smos.online                                                
  SMOS_SYNC_CLIENT_LOG_LEVEL LOG_LEVEL           Minimal severity of log messages                                 default: Info                         examples: "Debug", "Info", "Warn", "Error"
  SMOS_SYNC_CLIENT_USERNAME USERNAME             The username to login to the sync server                                                                                                         
  SMOS_SYNC_CLIENT_PASSWORD PASSWORD             The password to login to the sync server                                                                                                         
  SMOS_SYNC_CLIENT_PASSWORD_FILE FILE_PATH       The password to login to the sync server                                                                                                         
  SMOS_SYNC_CLIENT_CACHE_DIR DIRECTORY_PATH      The directory to cache state data in                                                                                                             
  SMOS_SYNC_CLIENT_SESSION_PATH FILE_PATH        The path to store the login session                              default: "sync-session.dat"                                                     

Configuration values

  The workflow directory
  workflow-dir:
    # or null
    <string>
  The directory to synchronise
  sync.contents-dir:
    # or null
    <string>
  The directory to store state data in
  sync.data-dir:
    # or null
    <string>
  The file to store the server uuid in
  default: "server-uuid.json"
  sync.uuid-file:
    # or null
    <string>
  The file to store the synchronisation metadata database in
  default: "sync-metadata.sqlite3"
  sync.metadata-db:
    # or null
    <string>
  The directory to store backups in when a sync conflict happens
  default: "conflict-backups"
  sync.backup-dir:
    # or null
    <string>
  Which files to ignore
  sync.ignore-files:
    # or null
    # nothing: Don't ignore any files
    # hidden: Ignore hidden files
    # one of
    [ nothing
    , hidden
    ]
  What to do with empty directories after syncing
  sync.empty-directories:
    # or null
    # remove: Remove empty directories after syncing
    # keep: Keep empty directories after syncing
    # one of
    [ remove
    , keep
    ]
  The server to sync with
  example: https://api.smos.online
  sync.server-url:
    # or null
    <string>
  Minimal severity of log messages
  default: Info
  examples: "Debug", "Info", "Warn", "Error"
  sync.log-level:
    # or null
    def: LogLevel
    # The log level to use, options:
    # ["Debug","Info","Warn","Error"]
    <string>
  The username to login to the sync server
  sync.username:
    # or null
    <string>
  The password to login to the sync server
  sync.password:
    # or null
    <string>
  The password to login to the sync server
  sync.password-file:
    # or null
    <string>
  The directory to cache state data in
  sync.cache-dir:
    # or null
    <string>
  The path to store the login session
  default: "sync-session.dat"
  sync.session-path:
    # or null
    <string>

Combined settings

Usage: smos-sync-client [--config-file FILE_PATH] [COMMAND] --server-url URL [--log-level LOG_LEVEL] [--username USERNAME] [--password PASSWORD | --password-file FILE_PATH] [--cache-dir DIRECTORY_PATH] [--session-path FILE_PATH]

All settings:
  Show this help text
  switch: -h|--help

  Output version information
  switch: --version

  Path to the configuration file
  option: --config-file FILE_PATH
  env: SMOS_CONFIG_FILE FILE_PATH

  The server to sync with
  option: --server-url URL
  env: SMOS_SYNC_CLIENT_SERVER_URL URL
  config:
    sync.server-url: # or null
      <string>
  example: https://api.smos.online

  Minimal severity of log messages
  option: --log-level LOG_LEVEL
  env: SMOS_SYNC_CLIENT_LOG_LEVEL LOG_LEVEL
  config:
    sync.log-level: # or null
      def: LogLevel
      # The log level to use, options:
      # ["Debug","Info","Warn","Error"]
      <string>
  default: Info
  examples: "Debug", "Info", "Warn", "Error"

  The username to login to the sync server
  option: --username USERNAME
  env: SMOS_SYNC_CLIENT_USERNAME USERNAME
  config:
    sync.username: # or null
      <string>

  The password to login to the sync server
  option: --password PASSWORD
  option: --password-file FILE_PATH
  env: SMOS_SYNC_CLIENT_PASSWORD PASSWORD
  env: SMOS_SYNC_CLIENT_PASSWORD_FILE FILE_PATH
  config:
    sync.password: # or null
      <string>
  config:
    sync.password-file: # or null
      <string>

  The directory to cache state data in
  option: --cache-dir DIRECTORY_PATH
  env: SMOS_SYNC_CLIENT_CACHE_DIR DIRECTORY_PATH
  config:
    sync.cache-dir: # or null
      <string>

  The path to store the login session
  option: --session-path FILE_PATH
  env: SMOS_SYNC_CLIENT_SESSION_PATH FILE_PATH
  config:
    sync.session-path: # or null
      <string>
  default: "sync-session.dat"

All commands:
  Register at a sync server
  command: register
  
  Login at a sync server
  command: login
  
  Sync with a sync server
  command: sync (default)
    The workflow directory
    option: --workflow-dir DIRECTORY_PATH
    env: SMOS_WORKFLOW_DIR DIRECTORY_PATH
    config:
      workflow-dir: # or null
        <string>
    
    The directory to synchronise
    option: --contents-dir DIRECTORY_PATH
    env: SMOS_SYNC_CLIENT_CONTENTS_DIR DIRECTORY_PATH
    config:
      sync.contents-dir: # or null
        <string>
    
    The directory to store state data in
    option: --data-dir DIRECTORY_PATH
    env: SMOS_SYNC_CLIENT_DATA_DIR DIRECTORY_PATH
    config:
      sync.data-dir: # or null
        <string>
    
    The file to store the server uuid in
    option: --uuid-file FILE_PATH
    env: SMOS_SYNC_CLIENT_UUID_FILE FILE_PATH
    config:
      sync.uuid-file: # or null
        <string>
    default: "server-uuid.json"
    
    The file to store the synchronisation metadata database in
    option: --metadata-db FILE_PATH
    env: SMOS_SYNC_CLIENT_METADATA_DB FILE_PATH
    config:
      sync.metadata-db: # or null
        <string>
    default: "sync-metadata.sqlite3"
    
    The directory to store backups in when a sync conflict happens
    option: --backup-dir FILE_PATH
    env: SMOS_SYNC_CLIENT_BACKUP_DIR FILE_PATH
    config:
      sync.backup-dir: # or null
        <string>
    default: "conflict-backups"
    
    Do not ignore hidden files
    switch: --ignore-nothing
  
    Ignore hidden files
    switch: --ignore-hidden-files
  
    Which files to ignore
    env: SMOS_SYNC_CLIENT_IGNORE_FILES IGNORE_FILES
    examples: "no", "nothing", "hidden"
    config:
      sync.ignore-files: # or null
        # nothing: Don't ignore any files
        # hidden: Ignore hidden files
        # one of
        [ nothing
        , hidden
        ]
    default: IgnoreHiddenFiles
  
    Remove empty directories after syncing
    switch: --remove-empty-dirs
  
    Keep empty directories after syncing
    switch: --keep-empty-dirs
  
    What to do with empty directories after syncing
    env: SMOS_SYNC_CLIENT_EMPTY_DIRS EMPTY_DIR
    config:
      sync.empty-directories: # or null
        # remove: Remove empty directories after syncing
        # keep: Keep empty directories after syncing
        # one of
        [ remove
        , keep
        ]
    default: KeepEmptyDirs
  
  

Options:
  -h|--help Show this help text
  --version Output version information
  --config-file Path to the configuration file
  register Register at a sync server
  login Login at a sync server
  sync (default) Sync with a sync server
      --workflow-dir        The workflow directory                                                                         
      --contents-dir        The directory to synchronise                                                                   
      --data-dir            The directory to store state data in                                                           
      --uuid-file           The file to store the server uuid in                           default: "server-uuid.json"     
      --metadata-db         The file to store the synchronisation metadata database in     default: "sync-metadata.sqlite3"
      --backup-dir          The directory to store backups in when a sync conflict happens default: "conflict-backups"     
      --ignore-nothing      Do not ignore hidden files                                                                     
      --ignore-hidden-files Ignore hidden files                                                                            
      --remove-empty-dirs   Remove empty directories after syncing                                                         
      --keep-empty-dirs     Keep empty directories after syncing                                                           
  --server-url The server to sync with example: https://api.smos.online
  --log-level Minimal severity of log messages default: Info examples: "Debug", "Info", "Warn", "Error"
  --username The username to login to the sync server
  --password      The password to login to the sync server
  --password-file The password to login to the sync server
  --cache-dir The directory to cache state data in
  --session-path The path to store the login session default: "sync-session.dat"

Environment Variables:
  SMOS_CONFIG_FILE FILE_PATH                     Path to the configuration file                                                                                                                   
  SMOS_WORKFLOW_DIR DIRECTORY_PATH               The workflow directory                                                                                                                           
  SMOS_SYNC_CLIENT_CONTENTS_DIR DIRECTORY_PATH   The directory to synchronise                                                                                                                     
  SMOS_SYNC_CLIENT_DATA_DIR DIRECTORY_PATH       The directory to store state data in                                                                                                             
  SMOS_SYNC_CLIENT_UUID_FILE FILE_PATH           The file to store the server uuid in                             default: "server-uuid.json"                                                     
  SMOS_SYNC_CLIENT_METADATA_DB FILE_PATH         The file to store the synchronisation metadata database in       default: "sync-metadata.sqlite3"                                                
  SMOS_SYNC_CLIENT_BACKUP_DIR FILE_PATH          The directory to store backups in when a sync conflict happens   default: "conflict-backups"                                                     
  SMOS_SYNC_CLIENT_IGNORE_FILES IGNORE_FILES     Which files to ignore                                            examples: "no", "nothing", "hidden"                                             
  SMOS_SYNC_CLIENT_EMPTY_DIRS EMPTY_DIR          What to do with empty directories after syncing                                                                                                  
  SMOS_SYNC_CLIENT_SERVER_URL URL                The server to sync with                                          example: https://api.smos.online                                                
  SMOS_SYNC_CLIENT_LOG_LEVEL LOG_LEVEL           Minimal severity of log messages                                 default: Info                         examples: "Debug", "Info", "Warn", "Error"
  SMOS_SYNC_CLIENT_USERNAME USERNAME             The username to login to the sync server                                                                                                         
  SMOS_SYNC_CLIENT_PASSWORD PASSWORD             The password to login to the sync server                                                                                                         
  SMOS_SYNC_CLIENT_PASSWORD_FILE FILE_PATH       The password to login to the sync server                                                                                                         
  SMOS_SYNC_CLIENT_CACHE_DIR DIRECTORY_PATH      The directory to cache state data in                                                                                                             
  SMOS_SYNC_CLIENT_SESSION_PATH FILE_PATH        The path to store the login session                              default: "sync-session.dat"                                                     

Configuration Values:
  The workflow directory
  workflow-dir:
    # or null
    <string>
  The directory to synchronise
  sync.contents-dir:
    # or null
    <string>
  The directory to store state data in
  sync.data-dir:
    # or null
    <string>
  The file to store the server uuid in
  default: "server-uuid.json"
  sync.uuid-file:
    # or null
    <string>
  The file to store the synchronisation metadata database in
  default: "sync-metadata.sqlite3"
  sync.metadata-db:
    # or null
    <string>
  The directory to store backups in when a sync conflict happens
  default: "conflict-backups"
  sync.backup-dir:
    # or null
    <string>
  Which files to ignore
  sync.ignore-files:
    # or null
    # nothing: Don't ignore any files
    # hidden: Ignore hidden files
    # one of
    [ nothing
    , hidden
    ]
  What to do with empty directories after syncing
  sync.empty-directories:
    # or null
    # remove: Remove empty directories after syncing
    # keep: Keep empty directories after syncing
    # one of
    [ remove
    , keep
    ]
  The server to sync with
  example: https://api.smos.online
  sync.server-url:
    # or null
    <string>
  Minimal severity of log messages
  default: Info
  examples: "Debug", "Info", "Warn", "Error"
  sync.log-level:
    # or null
    def: LogLevel
    # The log level to use, options:
    # ["Debug","Info","Warn","Error"]
    <string>
  The username to login to the sync server
  sync.username:
    # or null
    <string>
  The password to login to the sync server
  sync.password:
    # or null
    <string>
  The password to login to the sync server
  sync.password-file:
    # or null
    <string>
  The directory to cache state data in
  sync.cache-dir:
    # or null
    <string>
  The path to store the login session
  default: "sync-session.dat"
  sync.session-path:
    # or null
    <string>