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


                                       





                                                          









                        

 

                                                              
 
                                           



                                                     





                                                                    


                                                                    









                                                                         

                                             

                                                                      

 
           

                                 


                                                                        

                                                                  
 




                                                                        
 
           
                                 
 



                                                                     




                                                                          
 
 
                  
                                                      



                                                                       
                                                                     



                                                                        



                                                                       
 
            
                                    
 
                                                                    


                                            
          
                              
 
                                     

 
                 



















                                                                       
         










                                                                           


                                                              


                 
         
                           
 
                                     
 


                                                                  
 


                                                                        
 



                                                                       



                                                                    
                               ━━━━━━━━━
                                  LEO

                                Andinus
                               ━━━━━━━━━


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

1 Demo
2 Documentation
.. 2.1 Profile
.. 2.2 Options
..... 2.2.1 encrypt/sign
..... 2.2.2 delete
..... 2.2.3 help
.. 2.3 Configuration
3 Example
4 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).

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


1 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*: It's even more easy now, you don't have to create profiles
  anymore.

  • 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


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 relative to
  `$HOME' which are to be backed up.

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

  Creating profiles is not required anymore, you can pass it
  file/directory name. Not all kinds of path can be passed. For example,
  `leo documents/test.txt' is not okay but `cd documents' & then `leo
  test.txt' is okay.


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'
   delete   `LEO_DELETE'
  ━━━━━━━━━━━━━━━━━━━━━━━━


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

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

  *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.

  *Note*: My journal is encrypted so to prevent re-encryption `encrypt'
   option is not passed to gpg2. This only affects journal profile. So
   `leo --encrypt journal pass' will still encrypt pass.


2.2.2 delete
╌╌╌╌╌╌╌╌╌╌╌╌

  Removes the tar file after running gpg2(1). This means that either
  `encrypt' or `sign' option must be passed.


2.2.3 help
╌╌╌╌╌╌╌╌╌╌

  Running just `leo' will print help.


2.3 Configuration
─────────────────

  There is an example config file under `share/config.pl', move it to
  config directory & rename to `leo.pl'.

  ┌────
  │ cp share/config.pl $HOME/.config/leo.pl # Copy the config.
  │ chmod -w $HOME/.config/leo.pl # Make it read-only.
  └────

  *Warning*: Leo will evaluate the configuration file, which means an
  attacker can use it to run malicious code.

  *Note*: They could always add malicious code to `.profile' & do harm.
  Just thought I should put the warning.

  To edit the config run `chmod +w' on it but please make it read-only
  again after editing.


3 Example
═════════

  ┌────
  │ # This will encrypt, sign & also delete the tar file for documents,
  │ # journal, pass & ssh profile.
  │ leo --encrypt --sign --delete 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_DELETE=1 leo documents journal ssh pass
  │
  │ # Backup this specific file.
  │ cd $HOME/documents; leo --encrypt --sign andinus.org.gpg
  └────


4 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.