about summary refs log blame commit diff stats
path: root/README
blob: 9f9e488aa671aca7f169161ed29abf879f5672c0 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
                                                          


                                       





                                                          




                     
                

             


          

 
                                                              

                                                                     
 


                                                     
 
 

                                          
 







                                                            


                                        






                                              


               

                                             

                                                                      

 
           

                                 
                                                                        

                                                                        

                                                                  

 
           
                                 
 



                                                                     


                                                                          
                         
                      
                                                                          
 
 
                  
                                                      



                                                                       


                                                                       
                                                                     




                                                                        

                                       
 
                                                               

 






                                                      
                              
 
                                     

 
         


                           


                                                                           



                                                                           



                                                             


                 





                                                                    
                                                   











                                                                         
                           
 
                                     
 


                                                                  
 


                                                                        
 



                                                                       



                                                                    

                                                              
                               ━━━━━━━━━
                                  LEO

                                Andinus
                               ━━━━━━━━━


Table of Contents
─────────────────

1. Installation
2. Documentation
.. 1. Profile
.. 2. Options
..... 1. encrypt/sign
..... 2. signify
..... 3. gzip
..... 4. help
3. Example
4. Demo
5. History


Leo is a simple backup program. It creates tar(1) files from a
pre-defined list. It can encrypt/sign files with gpg2(1) & sign files
with signify(1).

• Web-site: <https://andinus.nand.sh/leo>
• Source: <https://git.tilde.institute/andinus/leo>
• Source (mirror): <https://github.com/andinus/leo>


1 Installation
══════════════

  ┌────
  │ # Install all the dependencies. (OpenBSD)
  │ doas pkg_add p5-IPC-Run3 p5-Config-Tiny p5-Path-Tiny
  │
  │ # Clone the project.
  │ git clone https://git.tilde.institute/andinus/leo && \
  │     cd leo
  │
  │ # Install dependencies with cpanm.
  │ cpanm --installdeps .
  │
  │ # Copy the config.
  │ cp share/leo.conf $HOME/.config/leo.conf
  │
  │ # Copy the script & make it executable.
  │ cp leo.pl $HOME/bin/leo && \
  │     chmod +x $HOME/bin/leo
  └────


2 Documentation
═══════════════

  I use this to quickly backup some of my files. It works on profiles,
  profiles are simple lists of files which get backed up.


2.1 Profile
───────────

  Profile is a simple hash table (`%profile') which contains the list of
  profiles. The profiles are mapped to a list of file paths which are to
  be backed up.

  You can run `help' to see all the profiles along with the paths.


2.2 Options
───────────

  Some options can also be passed through environment variables. That
  allows for configuration in shell rc file & the user can run leo
  directly without looking at options.

  ━━━━━━━━━━━━━━━━━━━━━━━━
   encrypt  `LEO_ENCRYPT'
   sign     `LEO_SIGN'
   signify  `LEO_SIGNIFY'
   gzip     `LEO_GZIP'
  ━━━━━━━━━━━━━━━━━━━━━━━━


2.2.1 encrypt/sign
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  `encrypt_sign' handles `gpg2' related functions. It passes `--yes' by
  default.

  • `encrypt' / `sign' can also be set in configuration file, one can
    also configure it for specific profile.

  *Note*: `gpg2' might compress the backups depending on your config.
   Default is to enable compression, if you don't want this then add `-z
   0' to `@options'. `-z' specifies the compression level & 0 means no
   compression.


2.2.2 signify
╌╌╌╌╌╌╌╌╌╌╌╌╌

  `signify' will invoke `signify(1)' & the file will be signed.


2.2.3 gzip
╌╌╌╌╌╌╌╌╌╌

  `gzip' will compress the tar archive with `gzip(1)'.


2.2.4 help
╌╌╌╌╌╌╌╌╌╌

  Running just `leo' will print help.


3 Example
═════════

  ┌────
  │ # This will encrypt, sign the tar file for documents, journal, pass &
  │ # ssh profile.
  │ leo --encrypt --sign documents journal pass ssh
  │
  │ # This will do the same. You can add these environment variables to
  │ # your shell rc & then just run ``leo documents journal ssh pass'' to
  │ # do the same.
  │ LEO_ENCRYPT=1 LEO_SIGN=1 leo documents journal ssh pass
  │
  │ # Sign the file with signify(1).
  │ leo --signify journal
  └────


4 Demo
══════

  It's very easy to setup `leo', I made a demo video to show this. I
  already have Perl environment setup for this.

  *Note*: Leo has changed since this was published.

  • Leo 2020-08-31: <https://asciinema.org/a/F97hVfgXDcd9g5IlST1t27ps3>

  You can also download the [cast file] directly & play it with
  `asciinema'.


[cast file]
<https://andinus.nand.sh/static/leo/2020-08-31_leo-demo.cast>


5 History
═════════

  This was Leo's initial description:

        Leo is a program to run my personal scripts. You might not
        find them useful, these were previously shell scripts that
        I rewrote in Perl.

  I had created a sync function initially & was going to expand it. Then
  I decided to remove those sync functions because it was too complex, I
  replaced then with simple `sh' scripts.

  I added a simple `archive' function later & decided to turn Leo into
  that function. So, it's not a meta-program anymore. I was thinking of
  creating something that does all the things for me but that'll be too
  complex.

  Later on the same day I removed dispatch table & switched to using
  simple hash of lists to store backup paths mapped to profiles. And
  also changed the word "archive" to "backup" everywhere.

  I added a simple INI based config file before 0.1.0 release.