dar-backup 0.6.21__py3-none-any.whl → 0.7.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dar-backup
3
- Version: 0.6.21
3
+ Version: 0.7.1
4
4
  Summary: A script to do full, differential and incremental backups using dar. Some files are restored from the backups during verification, after which par2 redundancy files are created. The script also has a cleanup feature to remove old backups and par2 files.
5
5
  Project-URL: GPG Public Key, https://keys.openpgp.org/search?q=dar-backup@pm.me
6
6
  Project-URL: Homepage, https://github.com/per2jensen/dar-backup/tree/main/v2
@@ -691,6 +691,7 @@ Classifier: Topic :: System :: Archiving :: Backup
691
691
  Requires-Python: >=3.9
692
692
  Requires-Dist: argcomplete>=3.6.2
693
693
  Requires-Dist: inputimeout>=1.0.4
694
+ Requires-Dist: jinja2>=3.1.6
694
695
  Requires-Dist: rich>=13.0.0
695
696
  Description-Content-Type: text/markdown
696
697
 
@@ -702,24 +703,27 @@ Description-Content-Type: text/markdown
702
703
  [![codecov](https://codecov.io/gh/per2jensen/dar-backup/branch/main/graph/badge.svg)](https://codecov.io/gh/per2jensen/dar-backup)
703
704
  ![CI](https://github.com/per2jensen/dar-backup/actions/workflows/py-tests.yml/badge.svg)
704
705
  [![PyPI version](https://img.shields.io/pypi/v/dar-backup.svg)](https://pypi.org/project/dar-backup/)
705
- [![PyPI monthly downloads](https://img.shields.io/pypi/dm/dar-backup)](https://pypi.org/project/dar-backup/)
706
- [![Total Downloads](https://img.shields.io/badge/dynamic/json?color=blue&label=Total%20Downloads&query=total&url=https%3A%2F%2Fraw.githubusercontent.com%2Fper2jensen%2Fdar-backup%2Fmain%2Fdownloads.json)](https://pypi.org/project/dar-backup/)
706
+ [![PyPI total Downloads](https://img.shields.io/badge/dynamic/json?color=blue&label=Total%20Downloads&query=total&url=https%3A%2F%2Fraw.githubusercontent.com%2Fper2jensen%2Fdar-backup%2Fmain%2Fdownloads.json)](https://pypi.org/project/dar-backup/)
707
+ [![# clones](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/per2jensen/dar-backup/main/v2/doc/badges/badge_clones.json)](https://github.com/per2jensen/dar-backup/blob/main/v2/doc/weekly_clones.png)
708
+ [![Milestone](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/per2jensen/dar-backup/main/v2/doc/badges/milestone_badge.json)](https://github.com/per2jensen/dar-backup/blob/main/v2/doc/weekly_clones.png)
707
709
 
708
710
  The wonderful 'dar' [Disk Archiver](https://github.com/Edrusb/DAR) is used for
709
- the heavy lifting, together with the [parchive](https://github.com/Parchive/par2cmdline) suite in these scripts.
711
+ the heavy lifting, together with [parchive](https://github.com/Parchive/par2cmdline) suite in these scripts.
710
712
 
711
713
  This is the `Python` based [**version 2**](https://github.com/per2jensen/dar-backup/tree/main/v2) of `dar-backup`.
712
714
 
713
715
  ## TL;DR
714
716
 
715
- `dar-backup` is a Python-powered CLI for creating and validating full, differential, and incremental backups using dar and par2. Designed for long-term restore integrity, even on user-space filesystems like FUSE.
717
+ `dar-backup` is a Python-powered CLI for creating and validating full, differential, and incremental backups using `dar` and `par2`. Designed for long-term restore integrity, even on user-space filesystems like FUSE.
716
718
 
717
719
  ## Table of Contents
718
720
 
719
721
  - [Reliable `dar` backups wrapped in Python](#dar-backup)
720
722
  - [My use case](#my-use-case)
723
+ - [Features](#features)
721
724
  - [License](#license)
722
725
  - [Changelog version 2](https://github.com/per2jensen/dar-backup/blob/main/v2/Changelog.md)
726
+ - [Quick Guide](#quick-guide)
723
727
  - [Status](#status)
724
728
  - [GPG Signing key](#gpg-signing-key)
725
729
  - [Breaking change in version 0.6.0](#breaking-change-in-version-060)
@@ -731,7 +735,7 @@ This is the `Python` based [**version 2**](https://github.com/per2jensen/dar-bac
731
735
  - [1 - installation](#1---installation)
732
736
  - [2 - configuration](#2---configuration)
733
737
  - [3 - generate catalog databases](#3---generate-catalog-databases)
734
- - [4 - do FULL backups](#4---do-full-backups)
738
+ - [4 - give `dar-backup` a spin](#4---give-dar-backup-a-spin)
735
739
  - [5 - deactivate venv](#5---deactivate-venv)
736
740
  - [Config](#config)
737
741
  - [Config file](#config-file)
@@ -775,21 +779,22 @@ This is the `Python` based [**version 2**](https://github.com/per2jensen/dar-bac
775
779
  - [manager](#manager-options)
776
780
  - [cleanup](#cleanup-options)
777
781
  - [clean-log](#clean-log-options)
778
- - [dar-backup-systemd](#dar-backup-systemd)
779
- - [Installer](#installer)
780
- - [demo](#demo)
782
+ - [dar-backup-systemd](#dar-backup-systemd-options)
783
+ - [Installer](#installer-options)
784
+ - [demo](#demo-options)
781
785
 
782
786
  ## My use case
783
787
 
784
- I have cloud storage mounted on a directory within my home dir. The filesystem is [FUSE based](https://www.kernel.org/doc/html/latest/filesystems/fuse.html), which gives it a few special features
788
+ I needed the following:
785
789
 
786
- - a non-privileged user can perform a mount
787
- - a privileged user cannot look into the filesystem --> a backup script running as root is not suitable
790
+ - Backup my workstation to a remote server
791
+ - Backup primarily photos, home made video and different types of documents
792
+ - I have cloud storage mounted on a directory within my home dir. The filesystem is [FUSE based](https://www.kernel.org/doc/html/latest/filesystems/fuse.html), which gives it a few special features
788
793
 
789
- I needed the following:
794
+ - Backup cloud storage (cloud is convenient, but I want control over my backups)
795
+ - A non-privileged user can perform a mount
796
+ - A privileged user cannot look into the filesystem --> a backup script running as root is not suitable
790
797
 
791
- - Backup my cloud storage to something local (cloud is convenient, but I want control over my backups)
792
- - Backup primarily photos, video and different types of documents
793
798
  - Have a simple way of restoring, possibly years into the future. 'dar' fits that scenario with a single statically linked binary (kept with the archives). There is no need install/configure anything - restoring is simple and works well.
794
799
  - During backup archives must be tested and a restore test (however small) performed
795
800
  - Archives stored on a server with a reliable file system (easy to mount a directory over sshfs)
@@ -797,11 +802,252 @@ I have cloud storage mounted on a directory within my home dir. The filesystem i
797
802
 
798
803
  I do not need the encryption features of dar, as all storage is already encrypted.
799
804
 
805
+ ## Features
806
+
807
+ - The battle tested [dar](https://github.com/Edrusb/DAR) Disk Archiver is used for the actual backups - it comes highly recommended.
808
+ - Backup with test of backup and (configurable) restore tests of files with comparison to source
809
+ - [Redundancy files](#par2) created for patching bitrot of the archives (size configurable)
810
+ - Simple [backup definitions](#backup-definition-example) defining what to backup (as many as you need)
811
+ - [Backup catalogs](#dar-manager-databases) in databases, optionally on a disk different from the backups
812
+ - Flexible and precise logging
813
+ - Bash and zsh shell autocompletion for a nice CLI experience, [available completions](#shell-autocompletion):
814
+
815
+ - Options for `dar-backup`, `cleanup`, `manager`
816
+ - Backup definitions
817
+ - Archives - filtered to backup definition if given
818
+ - Catalogs - filtered to backup definition if given
819
+
820
+ - `dar-backup` is easy to install and configure.
821
+
822
+ - ✅ The author has used dar-backup since > 4 years, and has been saved multiple times.
823
+
800
824
  ## License
801
825
 
802
826
  These scripts are licensed under the GPLv3 license.
803
827
  Read more here: [GNU GPL3.0](https://www.gnu.org/licenses/gpl-3.0.en.html), or have a look at the ["LICENSE"](https://github.com/per2jensen/dar-backup/blob/main/LICENSE) file in this repository.
804
828
 
829
+ ## Quick Guide
830
+
831
+ This purpose of this quick guide is to show how `dar-backup` works in a few simple steps.
832
+
833
+ The package include a `demo`application, that can help you set up `dar-backup` quickly.
834
+
835
+ > ⚠️ **Assumption**
836
+ >
837
+ > The demo program uses these directories in your home directory:
838
+ >
839
+ > - $HOME/dar-backup
840
+ > - $HOME/.config/dar-backup
841
+ >
842
+ > It is assumed they **do not exist** before running the demo.
843
+ >
844
+ > Python **>= 3.9** is required
845
+
846
+ <br>
847
+
848
+ **Let's roll** with installation, backup, list backup content, restore & restore check
849
+
850
+ The demo is known to work on an Ubuntu 24.04 clean VM as delivered from `Multipass`
851
+
852
+ ```bash
853
+ sudo apt -y install dar par2 python3 python3-venv
854
+ INSTALL_DIR=/tmp/dar-backup
855
+ mkdir "$INSTALL_DIR"
856
+ cd "$INSTALL_DIR"
857
+ python3 -m venv venv # create the virtual environment
858
+ . venv/bin/activate # activate the virtual environment
859
+ pip install dar-backup # run pip to install `dar-backup` into the virtual environment
860
+ ```
861
+
862
+ <details>
863
+
864
+ <summary>🎯 Install details</summary>
865
+
866
+ ```bash
867
+ (venv) $ INSTALL_DIR=/tmp/dar-backup
868
+ mkdir "$INSTALL_DIR"
869
+ cd "$INSTALL_DIR"
870
+ python3 -m venv venv # create the virtual environment
871
+ . venv/bin/activate # activate the virtual environment
872
+ pip install dar-backup # run pip to install `dar-backup`
873
+ Collecting dar-backup
874
+ Downloading dar_backup-0.6.21-py3-none-any.whl.metadata (88 kB)
875
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 88.5/88.5 kB 3.7 MB/s eta 0:00:00
876
+ Collecting argcomplete>=3.6.2 (from dar-backup)
877
+ Using cached argcomplete-3.6.2-py3-none-any.whl.metadata (16 kB)
878
+ Collecting inputimeout>=1.0.4 (from dar-backup)
879
+ Using cached inputimeout-1.0.4-py3-none-any.whl.metadata (2.2 kB)
880
+ Collecting rich>=13.0.0 (from dar-backup)
881
+ Using cached rich-14.0.0-py3-none-any.whl.metadata (18 kB)
882
+ Collecting markdown-it-py>=2.2.0 (from rich>=13.0.0->dar-backup)
883
+ Using cached markdown_it_py-3.0.0-py3-none-any.whl.metadata (6.9 kB)
884
+ Collecting pygments<3.0.0,>=2.13.0 (from rich>=13.0.0->dar-backup)
885
+ Using cached pygments-2.19.1-py3-none-any.whl.metadata (2.5 kB)
886
+ Collecting mdurl~=0.1 (from markdown-it-py>=2.2.0->rich>=13.0.0->dar-backup)
887
+ Using cached mdurl-0.1.2-py3-none-any.whl.metadata (1.6 kB)
888
+ Downloading dar_backup-0.6.21-py3-none-any.whl (101 kB)
889
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 101.9/101.9 kB 16.2 MB/s eta 0:00:00
890
+ Using cached argcomplete-3.6.2-py3-none-any.whl (43 kB)
891
+ Using cached inputimeout-1.0.4-py3-none-any.whl (4.6 kB)
892
+ Using cached rich-14.0.0-py3-none-any.whl (243 kB)
893
+ Using cached markdown_it_py-3.0.0-py3-none-any.whl (87 kB)
894
+ Using cached pygments-2.19.1-py3-none-any.whl (1.2 MB)
895
+ Using cached mdurl-0.1.2-py3-none-any.whl (10.0 kB)
896
+ Installing collected packages: pygments, mdurl, inputimeout, argcomplete, markdown-it-py, rich, dar-backup
897
+ Successfully installed argcomplete-3.6.2 dar-backup-0.6.21 inputimeout-1.0.4 markdown-it-py-3.0.0 mdurl-0.1.2 pygments-2.19.1 rich-14.0.0
898
+ ```
899
+
900
+ </details>
901
+
902
+ Setup the demo configurations and show a few operations
903
+
904
+ <br>
905
+
906
+ ```bash
907
+ # see reference section for options tweaking the install
908
+ demo --install
909
+
910
+ # create catalog database
911
+ manager --create-db
912
+
913
+ # do a FULL backup of the installed backup definition called `demo`
914
+ dar-backup --full-backup
915
+
916
+ # list the contents of the backup
917
+ dar-backup --list-contents $(dar-backup --list |tail -n 1 | cut -d " " -f1)
918
+ ```
919
+
920
+ <details>
921
+
922
+ <summary>🎯 --list details</summary>
923
+
924
+ ```bash
925
+ (venv) $ demo --install
926
+ Directories created.
927
+ File generated at '/home/user/.config/dar-backup/backup.d/demo'
928
+ File generated at '/home/user/.config/dar-backup/dar-backup.conf'
929
+ 1. Now run `manager --create-db` to create the catalog database.
930
+ 2. Then you can run `dar-backup --full-backup` to create a backup.
931
+ 3. List backups with `dar-backup --list`
932
+ 4. List contents of a backup with `dar-backup --list-contents <backup-name>`
933
+
934
+
935
+
936
+ (venv) $ manager --create-db
937
+ ========== Startup Settings ==========
938
+ manager.py: 0.7.1
939
+ Config file: /home/user/.config/dar-backup/dar-backup.conf
940
+ Logfile: /home/user/dar-backup/dar-backup.log
941
+ dar_manager: /home/user/.local/dar/bin/dar_manager
942
+ dar_manager v.: 1.9.0
943
+ ======================================
944
+
945
+
946
+
947
+ (venv) $ dar-backup --full-backup
948
+ ========== Startup Settings ==========
949
+ dar-backup.py: 0.7.1
950
+ dar path: /home/user/.local/dar/bin/dar
951
+ dar version: 2.7.17
952
+ Script directory: /home/user/git/dar-backup/v2/src/dar_backup
953
+ Config file: /home/user/.config/dar-backup/dar-backup.conf
954
+ .darrc location: /home/user/git/dar-backup/v2/src/dar_backup/.darrc
955
+ ======================================
956
+
957
+
958
+
959
+ (venv) $ dar-backup --list-contents $(dar-backup --list |tail -n 1 | cut -d " " -f1)
960
+ ========== Startup Settings ==========
961
+ dar-backup.py: 0.7.1
962
+ dar path: /home/user/.local/dar/bin/dar
963
+ dar version: 2.7.17
964
+ Script directory: /home/user/git/dar-backup/v2/src/dar_backup
965
+ Config file: /home/user/.config/dar-backup/dar-backup.conf
966
+ .darrc location: /home/user/git/dar-backup/v2/src/dar_backup/.darrc
967
+ ======================================
968
+ [Saved][-] [-L-][ 49%][ ] drwx------ user user 8 kio Sat May 17 13:13:59 2025 .config
969
+ [Saved][-] [-L-][ 49%][ ] drwxrwxr-x user user 8 kio Tue May 6 20:55:40 2025 .config/dar-backup
970
+ [Saved][-] [-L-][ 48%][ ] drwxrwxr-x user user 6 kio Sat May 17 13:26:21 2025 .config/dar-backup/backup.d
971
+ [Saved][ ] [-L-][ 40%][ ] -rw-rw-r-- user user 764 o Sun Feb 23 21:23:01 2025 .config/dar-backup/backup.d/media-files
972
+ [Saved][ ] [-L-][ 41%][ ] -rw-rw-r-- user user 933 o Sun Feb 23 21:23:15 2025 .config/dar-backup/backup.d/pCloudDrive
973
+ [Saved][ ] [-L-][ 48%][ ] -rw-rw-r-- user user 1 kio Sun Mar 16 10:40:29 2025 .config/dar-backup/backup.d/test
974
+ [Saved][ ] [-L-][ 48%][ ] -rw-rw-r-- user user 824 o Tue May 13 17:00:52 2025 .config/dar-backup/backup.d/default
975
+ [Saved][ ] [-L-][ 48%][ ] -rw-rw-r-- user user 1 kio Sat May 3 10:40:33 2025 .config/dar-backup/backup.d/user-homedir
976
+ [Saved][ ] [-L-][ 54%][ ] -rw-rw-r-- user user 1 kio Sat May 17 18:17:40 2025 .config/dar-backup/backup.d/demo
977
+ [Saved][ ] [-L-][ 55%][ ] -rw-rw-r-- user user 1 kio Sat May 17 18:17:40 2025 .config/dar-backup/dar-backup.conf
978
+ ```
979
+
980
+ </details>
981
+
982
+ <br>
983
+
984
+ Perform a restore and show the restored files
985
+
986
+ ```bash
987
+ # restore all files in the backup
988
+ dar-backup --restore $(dar-backup --list |tail -n 1 | cut -d " " -f1) --verbose
989
+
990
+ # prove the files have been restored to directory as configured
991
+ find $HOME/dar-backup/restore
992
+ ```
993
+
994
+ <details>
995
+
996
+ <summary>🎯 --restore details</summary>
997
+
998
+ ```bash
999
+ (venv) $ dar-backup --verbose --restore $(dar-backup --list |tail -n 1 | cut -d " " -f1)
1000
+ ========== Startup Settings ==========
1001
+ dar-backup.py: 0.7.1
1002
+ dar path: /home/user/.local/dar/bin/dar
1003
+ dar version: 2.7.17
1004
+ Script directory: /home/user/git/dar-backup/v2/src/dar_backup
1005
+ Config file: /home/user/.config/dar-backup/dar-backup.conf
1006
+ .darrc location: /home/user/git/dar-backup/v2/src/dar_backup/.darrc
1007
+ Backup.d dir: /home/user/.config/dar-backup/backup.d
1008
+ Backup dir: /home/user/dar-backup/backups
1009
+ Restore dir: /home/user/dar-backup/restore
1010
+ Logfile location: /home/user/dar-backup/dar-backup.log
1011
+ PAR2 enabled: True
1012
+ --do-not-compare: False
1013
+ ======================================
1014
+
1015
+
1016
+
1017
+ (venv) $ find ~/dar-backup/restore/
1018
+ /home/user/dar-backup/restore/
1019
+ /home/user/dar-backup/restore/.config
1020
+ /home/user/dar-backup/restore/.config/dar-backup
1021
+ /home/user/dar-backup/restore/.config/dar-backup/backup.d
1022
+ /home/user/dar-backup/restore/.config/dar-backup/backup.d/media-files
1023
+ /home/user/dar-backup/restore/.config/dar-backup/backup.d/pCloudDrive
1024
+ /home/user/dar-backup/restore/.config/dar-backup/backup.d/test
1025
+ /home/user/dar-backup/restore/.config/dar-backup/backup.d/default
1026
+ /home/user/dar-backup/restore/.config/dar-backup/backup.d/user-homedir
1027
+ /home/user/dar-backup/restore/.config/dar-backup/backup.d/demo
1028
+ /home/user/dar-backup/restore/.config/dar-backup/dar-backup.conf
1029
+ ```
1030
+
1031
+ </details>
1032
+
1033
+ <br>
1034
+
1035
+ > ✅ **Next steps**
1036
+ >
1037
+ > Tinker with `demo's` options:
1038
+ >
1039
+ > - --root-dir (perhaps $HOME)
1040
+ > - --dir-to-backup (perhaps Pictures)
1041
+ > - --backup-dir (perhaps /media/user/big-disk)
1042
+ >
1043
+ > See log file: `cat "$HOME/dar-backup/dar-backup.log"`
1044
+ >
1045
+ > Checkout [systemd timers and services](#generate-systemd-files)
1046
+ >
1047
+ > Checkout [shell autocompletion (very nice !)](#shell-autocompletion)
1048
+ >
1049
+ > Checkout the [reference section](#reference)
1050
+
805
1051
  ## Status
806
1052
 
807
1053
  As of August 8, 2024 I am using the alpha versions of `dar-backup` (alpha-0.5.9 onwards) in my automated backup routine.
@@ -977,7 +1223,7 @@ See more [here](#gpg-signing-key).
977
1223
 
978
1224
  ### 1 - installation
979
1225
 
980
- Installation is currently in a venv. These commands are installed in the venv:
1226
+ Installation is currently in a [virtual environment](https://csguide.cs.princeton.edu/software/virtualenv) (commonly called a `venv`). These commands are installed in the venv:
981
1227
 
982
1228
  - dar-back
983
1229
  - cleanup
@@ -989,15 +1235,15 @@ Installation is currently in a venv. These commands are installed in the venv:
989
1235
 
990
1236
  Note:
991
1237
 
992
- The module `inputimeout` is installed into the venv and used for the confirmation input (with a 30 second timeout)
1238
+ The modules `inputimeout`, `rich`and `argcomplete` are installed into the venv and used by `dar-backup`
993
1239
 
994
- To install, create a venv and run pip:
1240
+ To install `dar-backup`, create a venv and run pip:
995
1241
 
996
1242
  ```bash
997
1243
  mkdir $HOME/tmp
998
1244
  cd $HOME/tmp
999
1245
  python3 -m venv venv # create the virtual environment
1000
- . venv/bin/activate # activate the virtual env
1246
+ . venv/bin/activate # activate the virtual environment
1001
1247
  pip install dar-backup # run pip to install `dar-backup`
1002
1248
  ```
1003
1249
 
@@ -1010,7 +1256,7 @@ alias db=". ~/tmp/venv/bin/activate; dar-backup -v"
1010
1256
  drop the alias into ~/.bashrc like this:
1011
1257
 
1012
1258
  ```bash
1013
- grep -qxF 'alias db=". ~/tmp/venv/bin/activate; dar-backup -v"' ~/.bashrc \
1259
+ grep -qxF 'alias db="' ~/.bashrc \
1014
1260
  || echo 'alias db=". ~/tmp/venv/bin/activate; dar-backup -v"' >> ~/.bashrc
1015
1261
 
1016
1262
  source ~/.bashrc
@@ -1029,7 +1275,10 @@ See section 15 and section 16 in the supplied "LICENSE" file.
1029
1275
 
1030
1276
  ### 2 - configuration
1031
1277
 
1032
- The dar-backup `demo` is non-destructive and stops if some of the default directories exist.
1278
+ The dar-backup [demo](#demo-options) application can be used to demo how `dar-backup` works.
1279
+ It creates some directories, installs a demo configuration file and puts a demo backup definition in place.
1280
+
1281
+ `demo` is non-destructive and stops if some of the default directories exist.
1033
1282
 
1034
1283
  Run `demo`
1035
1284
 
@@ -1059,22 +1308,32 @@ Generate the archive catalog database(s).
1059
1308
  manager --create-db
1060
1309
  ```
1061
1310
 
1062
- ### 4 - do FULL backups
1311
+ ### 4 - give dar-backup a spin
1063
1312
 
1064
- Prereq:
1065
- [Backup definitions](#backup-definition-example) are in place in BACKUP.D_DIR (see [config file](#config-file)).
1313
+ The `demo` application has put a demo [backup definition](#backup-definition-example) in place in BACKUP.D_DIR (see [config file](#config-file)).
1066
1314
 
1067
- You are ready to do backups of all your backup definitions.
1315
+ You are now ready to do backups as configured in the backup definition.
1316
+
1317
+ Give `dar-backup`a spin:
1068
1318
 
1069
1319
  ```bash
1070
- dar-backup --full-backup
1320
+ dar-backup --full-backup --verbose
1321
+
1322
+ # list backups
1323
+ dar-backup --list
1324
+
1325
+ # see some examples on usage
1326
+ dar-backup --examples
1327
+
1328
+ # see the log file
1329
+ cat "$HOME/dar-backup/dar-backup.log"
1071
1330
  ```
1072
1331
 
1073
- If you want to see dar-backup's log entries in the terminal, use the `--log-stdout` option. This can be useful if dar-backup is started by systemd.
1332
+ If you want to see dar-backup's log entries in the terminal, use the `--log-stdout` option.
1074
1333
 
1075
1334
  If you want more log messages, use the `--verbose` or `--log-level debug` for even more.
1076
1335
 
1077
- If you want a backup of a single definition, use the `-d <backup definition>` option. The definition's name is the filename of the definition in the `backup.d` config directory.
1336
+ If you want to take a backup using a single backup definition, use the `-d <backup definition>` option. The backup definition's name is the filename of the definition in the BACKUP.D_DIR (see [config file](#config-file)).
1078
1337
 
1079
1338
  ```bash
1080
1339
  dar-backup --full-backup -d <your backup definition>
@@ -1082,7 +1341,7 @@ dar-backup --full-backup -d <your backup definition>
1082
1341
 
1083
1342
  ### 5 - deactivate venv
1084
1343
 
1085
- Deactivate the virtual environment (venv)
1344
+ Deactivate the virtual environment (venv).
1086
1345
 
1087
1346
  ```bash
1088
1347
  deactivate
@@ -1419,20 +1678,20 @@ deactivate
1419
1678
  gives something like
1420
1679
 
1421
1680
  ```text
1422
- [Saved][-] [-L-][ 0%][ ] drwxrwxr-x pj pj 2 Gio Sat May 10 14:15:07 2025 home/pj
1423
- [Saved][ ] [-L-][ 93%][ ] -rw-rw-r-- pj pj 29 kio Fri May 9 16:45:38 2025 home/pj/data/2023/2023-02-11-Udstilling-Fredericia/DSC_0568.NEF.xmp
1424
- [Saved][-] [-L-][ 0%][ ] drwxrwxr-x pj pj 2 Gio Fri May 9 12:49:04 2025 home/pj/data/2025
1425
- [Saved][-] [-L-][ 1%][ ] drwxrwxr-x pj pj 193 Mio Thu May 8 15:59:17 2025 home/pj/data/2025/2025-05-09-Viltrox-25mm-AIR
1426
- [Saved][ ] [-L-][ 1%][X] -rw-rw-r-- pj pj 15 Mio Thu May 8 15:52:27 2025 home/pj/data/2025/2025-05-09-Viltrox-25mm-AIR/DSC_0563.NEF
1427
- [Saved][ ] [-L-][ 1%][X] -rw-rw-r-- pj pj 10 Mio Thu May 8 15:52:27 2025 home/pj/data/2025/2025-05-09-Viltrox-25mm-AIR/DSC_0563.JPG
1428
- [Saved][ ] [-L-][ 1%][X] -rw-rw-r-- pj pj 9 Mio Thu May 8 15:51:53 2025 home/pj/data/2025/2025-05-09-Viltrox-25mm-AIR/DSC_0559.JPG
1429
- [Saved][ ] [-L-][ 1%][X] -rw-rw-r-- pj pj 16 Mio Thu May 8 15:51:45 2025 home/pj/data/2025/2025-05-09-Viltrox-25mm-AIR/DSC_0558.NEF
1430
- [Saved][ ] [-L-][ 1%][X] -rw-rw-r-- pj pj 12 Mio Thu May 8 15:51:45 2025 home/pj/data/2025/2025-05-09-Viltrox-25mm-AIR/DSC_0558.JPG
1431
- [Saved][ ] [-L-][ 1%][X] -rw-rw-r-- pj pj 16 Mio Thu May 8 15:51:24 2025 home/pj/data/2025/2025-05-09-Viltrox-25mm-AIR/DSC_0557.NEF
1432
- [Saved][ ] [-L-][ 1%][X] -rw-rw-r-- pj pj 12 Mio Thu May 8 15:51:23 2025 home/pj/data/2025/2025-05-09-Viltrox-25mm-AIR/DSC_0557.JPG
1433
- [Saved][ ] [-L-][ 91%][ ] -rw-rw-r-- pj pj 22 kio Thu May 8 15:59:58 2025 home/pj/data/2025/2025-05-09-Viltrox-25mm-AIR/DSC_0557.JPG.xmp
1434
- [Saved][ ] [-L-][ 92%][ ] -rw-rw-r-- pj pj 30 kio Thu May 8 16:00:36 2025 home/pj/data/2025/2025-05-09-Viltrox-25mm-AIR/DSC_0557.NEF.xmp
1435
- [Saved][ ] [-L-][ 91%][ ] -rw-rw-r-- pj pj 22 kio Thu May 8 16:00:29 2025 home/pj/data/2025/2025-05-09-Viltrox-25mm-AIR/DSC_0558.JPG.xmp
1681
+ [Saved][-] [-L-][ 0%][ ] drwxrwxr-x user user 2 Gio Sat May 10 14:15:07 2025 home/user
1682
+ [Saved][ ] [-L-][ 93%][ ] -rw-rw-r-- user user 29 kio Fri May 9 16:45:38 2025 home/user/data/2023/2023-02-11-Udstilling-Fredericia/DSC_0568.NEF.xmp
1683
+ [Saved][-] [-L-][ 0%][ ] drwxrwxr-x user user 2 Gio Fri May 9 12:49:04 2025 home/user/data/2025
1684
+ [Saved][-] [-L-][ 1%][ ] drwxrwxr-x user user 193 Mio Thu May 8 15:59:17 2025 home/user/data/2025/2025-05-09-Viltrox-25mm-AIR
1685
+ [Saved][ ] [-L-][ 1%][X] -rw-rw-r-- user user 15 Mio Thu May 8 15:52:27 2025 home/user/data/2025/2025-05-09-Viltrox-25mm-AIR/DSC_0563.NEF
1686
+ [Saved][ ] [-L-][ 1%][X] -rw-rw-r-- user user 10 Mio Thu May 8 15:52:27 2025 home/user/data/2025/2025-05-09-Viltrox-25mm-AIR/DSC_0563.JPG
1687
+ [Saved][ ] [-L-][ 1%][X] -rw-rw-r-- user user 9 Mio Thu May 8 15:51:53 2025 home/user/data/2025/2025-05-09-Viltrox-25mm-AIR/DSC_0559.JPG
1688
+ [Saved][ ] [-L-][ 1%][X] -rw-rw-r-- user user 16 Mio Thu May 8 15:51:45 2025 home/user/data/2025/2025-05-09-Viltrox-25mm-AIR/DSC_0558.NEF
1689
+ [Saved][ ] [-L-][ 1%][X] -rw-rw-r-- user user 12 Mio Thu May 8 15:51:45 2025 home/user/data/2025/2025-05-09-Viltrox-25mm-AIR/DSC_0558.JPG
1690
+ [Saved][ ] [-L-][ 1%][X] -rw-rw-r-- user user 16 Mio Thu May 8 15:51:24 2025 home/user/data/2025/2025-05-09-Viltrox-25mm-AIR/DSC_0557.NEF
1691
+ [Saved][ ] [-L-][ 1%][X] -rw-rw-r-- user user 12 Mio Thu May 8 15:51:23 2025 home/user/data/2025/2025-05-09-Viltrox-25mm-AIR/DSC_0557.JPG
1692
+ [Saved][ ] [-L-][ 91%][ ] -rw-rw-r-- user user 22 kio Thu May 8 15:59:58 2025 home/user/data/2025/2025-05-09-Viltrox-25mm-AIR/DSC_0557.JPG.xmp
1693
+ [Saved][ ] [-L-][ 92%][ ] -rw-rw-r-- user user 30 kio Thu May 8 16:00:36 2025 home/user/data/2025/2025-05-09-Viltrox-25mm-AIR/DSC_0557.NEF.xmp
1694
+ [Saved][ ] [-L-][ 91%][ ] -rw-rw-r-- user user 22 kio Thu May 8 16:00:29 2025 home/user/data/2025/2025-05-09-Viltrox-25mm-AIR/DSC_0558.JPG.xmp
1436
1695
  ```
1437
1696
 
1438
1697
  ## dar file selection examples
@@ -1453,26 +1712,26 @@ This happens when the shell splits the quoted string or interprets globs before
1453
1712
 
1454
1713
  ### select a directory
1455
1714
 
1456
- Select files and sub directories in `home/pj/data/2025/2025-05-09-Roskilde-Nordisk-udstilling`
1715
+ Select files and sub directories in `home/user/data/2025/2025-05-09-Roskilde-Nordisk-udstilling`
1457
1716
 
1458
1717
  ```bash
1459
- dar-backup --list-contents media-files_INCR_2025-05-10 --selection="-g 'home/pj/data/2025/2025-05-09-Roskilde-Nordisk-udstilling'"
1718
+ dar-backup --list-contents media-files_INCR_2025-05-10 --selection="-g 'home/user/data/2025/2025-05-09-Roskilde-Nordisk-udstilling'"
1460
1719
  ```
1461
1720
 
1462
1721
  gives
1463
1722
 
1464
1723
  ```text
1465
1724
  ...
1466
- [Saved][ ] [-L-][ 0%][X] -rw-rw-r-- pj pj 29 Mio Fri May 9 10:33:42 2025 home/pj/data/2025/2025-05-09-Roskilde-Nordisk-udstilling/Z50_0572.NEF
1467
- [Saved][ ] [-L-][ 0%][X] -rw-rw-r-- pj pj 28 Mio Fri May 9 10:33:12 2025 home/pj/data/2025/2025-05-09-Roskilde-Nordisk-udstilling/Z50_0571.NEF
1468
- [Saved][ ] [-L-][ 0%][X] -rw-rw-r-- pj pj 25 Mio Fri May 9 10:33:08 2025 home/pj/data/2025/2025-05-09-Roskilde-Nordisk-udstilling/Z50_0570.NEF
1469
- [Saved][ ] [-L-][ 0%][X] -rw-rw-r-- pj pj 27 Mio Fri May 9 10:32:46 2025 home/pj/data/2025/2025-05-09-Roskilde-Nordisk-udstilling/Z50_0569.NEF
1470
- [Saved][ ] [-L-][ 0%][X] -rw-rw-r-- pj pj 27 Mio Fri May 9 10:32:46 2025 home/pj/data/2025/2025-05-09-Roskilde-Nordisk-udstilling/Z50_0568.NEF
1471
- [Saved][-] [-L-][ 1%][ ] drwxrwxr-x pj pj 833 Mio Fri May 9 12:49:57 2025 home/pj/data/2025/2025-05-09-Roskilde-Nordisk-udstilling/jpeg
1472
- [Saved][ ] [-L-][ 1%][X] -rw-rw-r-- pj pj 11 Mio Fri May 9 10:32:45 2025 home/pj/data/2025/2025-05-09-Roskilde-Nordisk-udstilling/jpeg/Z50_0568.JPG
1473
- [Saved][ ] [-L-][ 1%][X] -rw-rw-r-- pj pj 11 Mio Fri May 9 10:32:46 2025 home/pj/data/2025/2025-05-09-Roskilde-Nordisk-udstilling/jpeg/Z50_0569.JPG
1474
- [Saved][ ] [-L-][ 1%][X] -rw-rw-r-- pj pj 9 Mio Fri May 9 10:33:08 2025 home/pj/data/2025/2025-05-09-Roskilde-Nordisk-udstilling/jpeg/Z50_0570.JPG
1475
- [Saved][ ] [-L-][ 1%][X] -rw-rw-r-- pj pj 13 Mio Fri May 9 10:33:12 2025 home/pj/data/2025/2025-05-09-Roskilde-Nordisk-udstilling/jpeg/Z50_0571.JPG
1725
+ [Saved][ ] [-L-][ 0%][X] -rw-rw-r-- user user 29 Mio Fri May 9 10:33:42 2025 home/user/data/2025/2025-05-09-Roskilde-Nordisk-udstilling/Z50_0572.NEF
1726
+ [Saved][ ] [-L-][ 0%][X] -rw-rw-r-- user user 28 Mio Fri May 9 10:33:12 2025 home/user/data/2025/2025-05-09-Roskilde-Nordisk-udstilling/Z50_0571.NEF
1727
+ [Saved][ ] [-L-][ 0%][X] -rw-rw-r-- user user 25 Mio Fri May 9 10:33:08 2025 home/user/data/2025/2025-05-09-Roskilde-Nordisk-udstilling/Z50_0570.NEF
1728
+ [Saved][ ] [-L-][ 0%][X] -rw-rw-r-- user user 27 Mio Fri May 9 10:32:46 2025 home/user/data/2025/2025-05-09-Roskilde-Nordisk-udstilling/Z50_0569.NEF
1729
+ [Saved][ ] [-L-][ 0%][X] -rw-rw-r-- user user 27 Mio Fri May 9 10:32:46 2025 home/user/data/2025/2025-05-09-Roskilde-Nordisk-udstilling/Z50_0568.NEF
1730
+ [Saved][-] [-L-][ 1%][ ] drwxrwxr-x user user 833 Mio Fri May 9 12:49:57 2025 home/user/data/2025/2025-05-09-Roskilde-Nordisk-udstilling/jpeg
1731
+ [Saved][ ] [-L-][ 1%][X] -rw-rw-r-- user user 11 Mio Fri May 9 10:32:45 2025 home/user/data/2025/2025-05-09-Roskilde-Nordisk-udstilling/jpeg/Z50_0568.JPG
1732
+ [Saved][ ] [-L-][ 1%][X] -rw-rw-r-- user user 11 Mio Fri May 9 10:32:46 2025 home/user/data/2025/2025-05-09-Roskilde-Nordisk-udstilling/jpeg/Z50_0569.JPG
1733
+ [Saved][ ] [-L-][ 1%][X] -rw-rw-r-- user user 9 Mio Fri May 9 10:33:08 2025 home/user/data/2025/2025-05-09-Roskilde-Nordisk-udstilling/jpeg/Z50_0570.JPG
1734
+ [Saved][ ] [-L-][ 1%][X] -rw-rw-r-- user user 13 Mio Fri May 9 10:33:12 2025 home/user/data/2025/2025-05-09-Roskilde-Nordisk-udstilling/jpeg/Z50_0571.JPG
1476
1735
  ...
1477
1736
  ```
1478
1737
 
@@ -1485,15 +1744,15 @@ dar-backup --list-contents media-files_INCR_2025-05-10 --selection="-I '*Z50*' -
1485
1744
  gives something like
1486
1745
 
1487
1746
  ```text
1488
- [Saved][-] [-L-][ 0%][ ] drwxrwxr-x pj pj 2 Gio Sat May 10 14:15:07 2025 home/pj
1489
- [Saved][-] [-L-][ 0%][ ] drwxrwxr-x pj pj 2 Gio Fri May 9 12:49:04 2025 home/pj/data/2025
1490
- [Saved][-] [-L-][ 1%][ ] drwxrwxr-x pj pj 193 Mio Thu May 8 15:59:17 2025 home/pj/data/2025/2025-05-09-Viltrox-25mm-AIR
1491
- [Saved][-] [-L-][ 0%][ ] drwxrwxr-x pj pj 2 Gio Fri May 9 16:47:37 2025 home/pj/data/2025/2025-05-09-Roskilde-Nordisk-udstilling
1492
- [Saved][ ] [-L-][ 0%][X] -rw-rw-r-- pj pj 26 Mio Fri May 9 11:26:16 2025 home/pj/data/2025/2025-05-09-Roskilde-Nordisk-udstilling/Z50_0633.NEF
1493
- [Saved][ ] [-L-][ 0%][X] -rw-rw-r-- pj pj 26 Mio Fri May 9 11:26:16 2025 home/pj/data/2025/2025-05-09-Roskilde-Nordisk-udstilling/Z50_0632.NEF
1494
- [Saved][ ] [-L-][ 0%][X] -rw-rw-r-- pj pj 28 Mio Fri May 9 11:09:04 2025 home/pj/data/2025/2025-05-09-Roskilde-Nordisk-udstilling/Z50_0631.NEF
1495
- [Saved][ ] [-L-][ 0%][X] -rw-rw-r-- pj pj 29 Mio Fri May 9 11:09:03 2025 home/pj/data/2025/2025-05-09-Roskilde-Nordisk-udstilling/Z50_0630.NEF
1496
- [Saved][ ] [-L-][ 0%][X] -rw-rw-r-- pj pj 29 Mio Fri May 9 11:09:03 2025 home/pj/data/2025/2025-05-09-Roskilde-Nordisk-udstilling/Z50_0629.NEF
1747
+ [Saved][-] [-L-][ 0%][ ] drwxrwxr-x user user 2 Gio Sat May 10 14:15:07 2025 home/user
1748
+ [Saved][-] [-L-][ 0%][ ] drwxrwxr-x user user 2 Gio Fri May 9 12:49:04 2025 home/user/data/2025
1749
+ [Saved][-] [-L-][ 1%][ ] drwxrwxr-x user user 193 Mio Thu May 8 15:59:17 2025 home/user/data/2025/2025-05-09-Viltrox-25mm-AIR
1750
+ [Saved][-] [-L-][ 0%][ ] drwxrwxr-x user user 2 Gio Fri May 9 16:47:37 2025 home/user/data/2025/2025-05-09-Roskilde-Nordisk-udstilling
1751
+ [Saved][ ] [-L-][ 0%][X] -rw-rw-r-- user user 26 Mio Fri May 9 11:26:16 2025 home/user/data/2025/2025-05-09-Roskilde-Nordisk-udstilling/Z50_0633.NEF
1752
+ [Saved][ ] [-L-][ 0%][X] -rw-rw-r-- user user 26 Mio Fri May 9 11:26:16 2025 home/user/data/2025/2025-05-09-Roskilde-Nordisk-udstilling/Z50_0632.NEF
1753
+ [Saved][ ] [-L-][ 0%][X] -rw-rw-r-- user user 28 Mio Fri May 9 11:09:04 2025 home/user/data/2025/2025-05-09-Roskilde-Nordisk-udstilling/Z50_0631.NEF
1754
+ [Saved][ ] [-L-][ 0%][X] -rw-rw-r-- user user 29 Mio Fri May 9 11:09:03 2025 home/user/data/2025/2025-05-09-Roskilde-Nordisk-udstilling/Z50_0630.NEF
1755
+ [Saved][ ] [-L-][ 0%][X] -rw-rw-r-- user user 29 Mio Fri May 9 11:09:03 2025 home/user/data/2025/2025-05-09-Roskilde-Nordisk-udstilling/Z50_0629.NEF
1497
1756
  ...
1498
1757
  ```
1499
1758
 
@@ -1524,9 +1783,9 @@ When restoring and using `/tmp` for --restore-dir, the restored files can be fou
1524
1783
 
1525
1784
  ### a single file
1526
1785
 
1527
- ```text
1786
+ ```bash
1528
1787
  . <the virtual env>/bin/activate
1529
- dar-backup --restore <archive_name> --selection "-g path/to/file"
1788
+ dar-backup --restore <archive_name> --selection="-g path/to/file"
1530
1789
  deactivate
1531
1790
  ```
1532
1791
 
@@ -1534,15 +1793,23 @@ deactivate
1534
1793
 
1535
1794
  ```bash
1536
1795
  . <the virtual env>/bin/activate
1537
- dar-backup --restore <archive_name> --selection "-g path/to/directory"
1796
+ dar-backup --restore <archive_name> --selection="-g path/to/directory"
1538
1797
  deactivate
1539
1798
  ```
1540
1799
 
1541
1800
  ### .NEF from a specific date
1542
1801
 
1802
+ The backed up directory contains \*.NEF and \*.xmp files.
1803
+
1804
+ Filtering:
1805
+
1806
+ - Include files with "2024-06-16" in file name
1807
+ - Exclude files with file names ending in ".xmp"
1808
+ - Files must be in directory "home/user/tmp/LUT-play", compared to the file root (`-R`option) in the backup.
1809
+
1543
1810
  ```bash
1544
1811
  . <the virtual env>/bin/activate
1545
- dar-backup --restore <archive_name> --selection "-X '*.xmp' -I '*2024-06-16*' -g home/pj/tmp/LUT-play"
1812
+ dar-backup --restore <archive_name> --selection="-I '*2024-06-16*' -X '*.xmp' -g home/user/tmp/LUT-play"
1546
1813
  deactivate
1547
1814
  ```
1548
1815
 
@@ -1608,13 +1875,13 @@ One way to do that, is to let dar create a FULL archive from scratch, another is
1608
1875
  I do backups of my homedir. Here it is shown how a FULL archive is merged with a DIFF, creating a new FULL archive.
1609
1876
 
1610
1877
  ```bash
1611
- dar --merge pj-homedir_FULL_2021-09-12 -A pj-homedir_FULL_2021-06-06 -@pj-homedir_DIFF_2021-08-29 -s 12G
1878
+ dar --merge user-homedir_FULL_2021-09-12 -A user-homedir_FULL_2021-06-06 -@user-homedir_DIFF_2021-08-29 -s 12G
1612
1879
 
1613
1880
  # test the new FULL archive
1614
- dar -t pj-homedir_FULL_2021-09-12
1881
+ dar -t user-homedir_FULL_2021-09-12
1615
1882
 
1616
1883
  # create Par2 redundancy files
1617
- for file in pj-homedir_FULL_yyyy-mm-dd.*.dar; do
1884
+ for file in user-homedir_FULL_yyyy-mm-dd.*.dar; do
1618
1885
  par2 c -r5 -n1 "$file"
1619
1886
  done
1620
1887
  ```
@@ -1749,8 +2016,8 @@ Try auto completion in your session:
1749
2016
  eval "$(register-python-argcomplete dar-backup)"
1750
2017
  eval "$(register-python-argcomplete cleanup)"
1751
2018
  eval "$(register-python-argcomplete manager)"
1752
- complete -o nosort -C 'python -m argcomplete cleanup' cleanup
1753
- complete -o nosort -C 'python -m argcomplete manager' manager
2019
+ #complete -o nosort -C 'python -m argcomplete cleanup' cleanup
2020
+ #complete -o nosort -C 'python -m argcomplete manager' manager
1754
2021
  ```
1755
2022
 
1756
2023
  To make it persistent across sessions, add this to your ~/.bashrc:
@@ -1761,8 +2028,8 @@ eval "$(register-python-argcomplete dar-backup)"
1761
2028
  eval "$(register-python-argcomplete cleanup)"
1762
2029
  eval "$(register-python-argcomplete manager)"
1763
2030
  # This disables bash sorting, so sorting is by <backup definition> and <date>
1764
- complete -o nosort -C 'python -m argcomplete cleanup' cleanup
1765
- complete -o nosort -C 'python -m argcomplete manager' manager
2031
+ #complete -o nosort -C 'python -m argcomplete cleanup' cleanup
2032
+ #complete -o nosort -C 'python -m argcomplete manager' manager
1766
2033
  ```
1767
2034
 
1768
2035
  If you're using a virtual environment and register-python-argcomplete isn't in your global PATH, use:
@@ -1835,7 +2102,7 @@ One backup definition per file
1835
2102
  | [clean-log](#clean-log-options) | Clean up excessive log output from dar command logs |
1836
2103
  | [dar-backup-systemd](#dar-backup-systemd-options) | Generate (and optionally install) systemd timers and services for automated backups |
1837
2104
  | [installer](#installer-options) | Set up directories and optionally create catalog databases according to a config file |
1838
- | [demo](#demo-options) | Set up required directories and default config files |
2105
+ | [demo](#demo-options) | Set up required directories and config files for a demo|
1839
2106
 
1840
2107
  ### test coverage
1841
2108
 
@@ -1966,10 +2233,12 @@ Sets up `dar-backup` according to provided config file.
1966
2233
  The installer creates the necessary backup catalog databases if `--create-db` is given.
1967
2234
 
1968
2235
  ```bash
1969
- --config Sets up `dar-backup`.
1970
- --create-db Create backup catalog databases.
1971
- -v, --version Display version and licensing information.
1972
- -h, --help Displays usage info
2236
+ --config Sets up `dar-backup`.
2237
+ --create-db Create backup catalog databases. Add it to --config
2238
+ --install-autocompletion Add bash or zsh auto completion - idempotent
2239
+ --remove-autocompletion Remove the auto completion from bash or zsh
2240
+ -v, --version Display version and licensing information.
2241
+ -h, --help Displays usage info
1973
2242
  ```
1974
2243
 
1975
2244
  ### Demo options
@@ -1992,7 +2261,14 @@ Sets up demo config files:
1992
2261
  - ~/.config/dar-backup/backup.d/default
1993
2262
 
1994
2263
  ```bash
1995
- -i, --install Sets up `dar-backup`.
1996
- -v, --version Display version and licensing information.
1997
- -h, --help Displays usage info
2264
+ -i, --install Sets up `dar-backup`.
2265
+ --root-dir Specify the root directory for the backup.
2266
+ --dir-to-backup Directory to backup, relative to the root directory.
2267
+ --backup-dir Directory where backups and redundancy files are put.
2268
+ --override By default, the script will not overwrite existing files or directories.
2269
+ Use this option to override this behavior.
2270
+ --generate Generate config files and put them in /tmp/ for inspection
2271
+ without writing to $HOME.
2272
+ -v, --version Display version and licensing information.
2273
+ -h, --help Displays usage info
1998
2274
  ```