Giter Club home page Giter Club logo

sysy's Introduction

SySy - System Synchronization scripts

This is a set of scripts for synchronizing configuration, dotfiles, and packages between systems. Its main advantage over other similar programs is its focus on tags.

Each machine requires a $HOME/sysy.d/tags file with a tag per line for the current machine. Each tag corresponds to a folder of the same name in a folder $SYSYPATH/tags (when $SYSYPATH is the cloned sysy repository).

Each tag then has a subfolder for system configuration, dotfiles, and packages, which is used by the corresponding script (see below) prioritized by the order of appearance in the tags file (later tags have higher priority).

The most important subcommand for each script is sync to check for unsynced files/folders/packages and sync if needed.

Configuration Sync (cosy script, system subfolder)

System configuration in the system subfolder is relative to the filesystem root path and files are synced by content (no links), e.g. $SYSYPATH/tags/main/system/etc/rc.local will be synced to /etc/rc.local). If the executable bit is set on a file to sync so will it for the corresponding file on the system.

See the cosy command for information on parameters.

Dotfile Sync (dosy script, dotfiles subfolder)

Dotfiles in the dotfiles subfolder are relative to the user homer folder and are synced as symlinks (with the files to sync missing the "." prefix), e.g. $HOME/.profile will be linked to $SYSYPATH/tags/main/dotfiles/profile. Subfolders can be marked to be synced by content, i.e. each file/folder inside them is symlinked instead of the whole folder, by creating an (empty) .sub file in the folder to sync, e.g. $SYSYPATH/tags/main/dotfiles/config/.sub.

See the dosy command for information on parameters.

Package Sync (pasy script, packages subfolder)

The pasy script makes sure packages are installed on the synced system. Currently it supports the package managers:

  • apt (Debian, Ubuntu, and similar distributions)
  • cabal (Haskell)
  • cargo (Rust)
  • go (Go)
  • npm (JavaScript)
  • pip (Python)

You, for instance, mark package git as to-be-installed for tag main by running pasy install apt main git.

See the pasy command for information on parameters.

Overall Sync (sysy script)

The sysy script is an overarching script, for instance, syncing all three categories when running sysy sync.

TODO Documentation on bootstrapping, repository, and server syncing.

sysy's People

Contributors

swillner avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.