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.
- dar_backup/Changelog.md +17 -1
- dar_backup/README.md +357 -82
- dar_backup/__about__.py +1 -1
- dar_backup/clean_log.py +2 -0
- dar_backup/cleanup.py +2 -1
- dar_backup/command_runner.py +2 -0
- dar_backup/config_settings.py +2 -0
- dar_backup/dar-backup.conf +4 -2
- dar_backup/dar-backup.conf.j2 +60 -0
- dar_backup/dar_backup.py +6 -6
- dar_backup/dar_backup_systemd.py +3 -0
- dar_backup/demo.py +153 -77
- dar_backup/demo_backup_def.j2 +62 -0
- dar_backup/exceptions.py +2 -0
- dar_backup/installer.py +111 -6
- dar_backup/manager.py +3 -2
- dar_backup/rich_progress.py +3 -0
- dar_backup/util.py +24 -5
- {dar_backup-0.6.21.dist-info → dar_backup-0.7.1.dist-info}/METADATA +359 -83
- dar_backup-0.7.1.dist-info/RECORD +25 -0
- dar_backup-0.6.21.dist-info/RECORD +0 -23
- {dar_backup-0.6.21.dist-info → dar_backup-0.7.1.dist-info}/WHEEL +0 -0
- {dar_backup-0.6.21.dist-info → dar_backup-0.7.1.dist-info}/entry_points.txt +0 -0
- {dar_backup-0.6.21.dist-info → dar_backup-0.7.1.dist-info}/licenses/LICENSE +0 -0
dar_backup/README.md
CHANGED
|
@@ -6,24 +6,27 @@
|
|
|
6
6
|
[](https://codecov.io/gh/per2jensen/dar-backup)
|
|
7
7
|

|
|
8
8
|
[](https://pypi.org/project/dar-backup/)
|
|
9
|
-
[](https://pypi.org/project/dar-backup/)
|
|
10
|
+
[](https://github.com/per2jensen/dar-backup/blob/main/v2/doc/weekly_clones.png)
|
|
11
|
+
[](https://github.com/per2jensen/dar-backup/blob/main/v2/doc/weekly_clones.png)
|
|
11
12
|
|
|
12
13
|
The wonderful 'dar' [Disk Archiver](https://github.com/Edrusb/DAR) is used for
|
|
13
|
-
the heavy lifting, together with
|
|
14
|
+
the heavy lifting, together with [parchive](https://github.com/Parchive/par2cmdline) suite in these scripts.
|
|
14
15
|
|
|
15
16
|
This is the `Python` based [**version 2**](https://github.com/per2jensen/dar-backup/tree/main/v2) of `dar-backup`.
|
|
16
17
|
|
|
17
18
|
## TL;DR
|
|
18
19
|
|
|
19
|
-
`dar-backup` is a Python-powered CLI for creating and validating full, differential, and incremental backups using dar and par2
|
|
20
|
+
`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.
|
|
20
21
|
|
|
21
22
|
## Table of Contents
|
|
22
23
|
|
|
23
24
|
- [Reliable `dar` backups wrapped in Python](#dar-backup)
|
|
24
25
|
- [My use case](#my-use-case)
|
|
26
|
+
- [Features](#features)
|
|
25
27
|
- [License](#license)
|
|
26
28
|
- [Changelog version 2](https://github.com/per2jensen/dar-backup/blob/main/v2/Changelog.md)
|
|
29
|
+
- [Quick Guide](#quick-guide)
|
|
27
30
|
- [Status](#status)
|
|
28
31
|
- [GPG Signing key](#gpg-signing-key)
|
|
29
32
|
- [Breaking change in version 0.6.0](#breaking-change-in-version-060)
|
|
@@ -35,7 +38,7 @@ This is the `Python` based [**version 2**](https://github.com/per2jensen/dar-bac
|
|
|
35
38
|
- [1 - installation](#1---installation)
|
|
36
39
|
- [2 - configuration](#2---configuration)
|
|
37
40
|
- [3 - generate catalog databases](#3---generate-catalog-databases)
|
|
38
|
-
- [4 -
|
|
41
|
+
- [4 - give `dar-backup` a spin](#4---give-dar-backup-a-spin)
|
|
39
42
|
- [5 - deactivate venv](#5---deactivate-venv)
|
|
40
43
|
- [Config](#config)
|
|
41
44
|
- [Config file](#config-file)
|
|
@@ -79,21 +82,22 @@ This is the `Python` based [**version 2**](https://github.com/per2jensen/dar-bac
|
|
|
79
82
|
- [manager](#manager-options)
|
|
80
83
|
- [cleanup](#cleanup-options)
|
|
81
84
|
- [clean-log](#clean-log-options)
|
|
82
|
-
- [dar-backup-systemd](#dar-backup-systemd)
|
|
83
|
-
- [Installer](#installer)
|
|
84
|
-
- [demo](#demo)
|
|
85
|
+
- [dar-backup-systemd](#dar-backup-systemd-options)
|
|
86
|
+
- [Installer](#installer-options)
|
|
87
|
+
- [demo](#demo-options)
|
|
85
88
|
|
|
86
89
|
## My use case
|
|
87
90
|
|
|
88
|
-
I
|
|
91
|
+
I needed the following:
|
|
89
92
|
|
|
90
|
-
-
|
|
91
|
-
-
|
|
93
|
+
- Backup my workstation to a remote server
|
|
94
|
+
- Backup primarily photos, home made video and different types of documents
|
|
95
|
+
- 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
|
|
92
96
|
|
|
93
|
-
I
|
|
97
|
+
- Backup cloud storage (cloud is convenient, but I want control over my backups)
|
|
98
|
+
- A non-privileged user can perform a mount
|
|
99
|
+
- A privileged user cannot look into the filesystem --> a backup script running as root is not suitable
|
|
94
100
|
|
|
95
|
-
- Backup my cloud storage to something local (cloud is convenient, but I want control over my backups)
|
|
96
|
-
- Backup primarily photos, video and different types of documents
|
|
97
101
|
- 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.
|
|
98
102
|
- During backup archives must be tested and a restore test (however small) performed
|
|
99
103
|
- Archives stored on a server with a reliable file system (easy to mount a directory over sshfs)
|
|
@@ -101,11 +105,252 @@ I have cloud storage mounted on a directory within my home dir. The filesystem i
|
|
|
101
105
|
|
|
102
106
|
I do not need the encryption features of dar, as all storage is already encrypted.
|
|
103
107
|
|
|
108
|
+
## Features
|
|
109
|
+
|
|
110
|
+
- The battle tested [dar](https://github.com/Edrusb/DAR) Disk Archiver is used for the actual backups - it comes highly recommended.
|
|
111
|
+
- Backup with test of backup and (configurable) restore tests of files with comparison to source
|
|
112
|
+
- [Redundancy files](#par2) created for patching bitrot of the archives (size configurable)
|
|
113
|
+
- Simple [backup definitions](#backup-definition-example) defining what to backup (as many as you need)
|
|
114
|
+
- [Backup catalogs](#dar-manager-databases) in databases, optionally on a disk different from the backups
|
|
115
|
+
- Flexible and precise logging
|
|
116
|
+
- Bash and zsh shell autocompletion for a nice CLI experience, [available completions](#shell-autocompletion):
|
|
117
|
+
|
|
118
|
+
- Options for `dar-backup`, `cleanup`, `manager`
|
|
119
|
+
- Backup definitions
|
|
120
|
+
- Archives - filtered to backup definition if given
|
|
121
|
+
- Catalogs - filtered to backup definition if given
|
|
122
|
+
|
|
123
|
+
- `dar-backup` is easy to install and configure.
|
|
124
|
+
|
|
125
|
+
- ✅ The author has used dar-backup since > 4 years, and has been saved multiple times.
|
|
126
|
+
|
|
104
127
|
## License
|
|
105
128
|
|
|
106
129
|
These scripts are licensed under the GPLv3 license.
|
|
107
130
|
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.
|
|
108
131
|
|
|
132
|
+
## Quick Guide
|
|
133
|
+
|
|
134
|
+
This purpose of this quick guide is to show how `dar-backup` works in a few simple steps.
|
|
135
|
+
|
|
136
|
+
The package include a `demo`application, that can help you set up `dar-backup` quickly.
|
|
137
|
+
|
|
138
|
+
> ⚠️ **Assumption**
|
|
139
|
+
>
|
|
140
|
+
> The demo program uses these directories in your home directory:
|
|
141
|
+
>
|
|
142
|
+
> - $HOME/dar-backup
|
|
143
|
+
> - $HOME/.config/dar-backup
|
|
144
|
+
>
|
|
145
|
+
> It is assumed they **do not exist** before running the demo.
|
|
146
|
+
>
|
|
147
|
+
> Python **>= 3.9** is required
|
|
148
|
+
|
|
149
|
+
<br>
|
|
150
|
+
|
|
151
|
+
**Let's roll** with installation, backup, list backup content, restore & restore check
|
|
152
|
+
|
|
153
|
+
The demo is known to work on an Ubuntu 24.04 clean VM as delivered from `Multipass`
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
sudo apt -y install dar par2 python3 python3-venv
|
|
157
|
+
INSTALL_DIR=/tmp/dar-backup
|
|
158
|
+
mkdir "$INSTALL_DIR"
|
|
159
|
+
cd "$INSTALL_DIR"
|
|
160
|
+
python3 -m venv venv # create the virtual environment
|
|
161
|
+
. venv/bin/activate # activate the virtual environment
|
|
162
|
+
pip install dar-backup # run pip to install `dar-backup` into the virtual environment
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
<details>
|
|
166
|
+
|
|
167
|
+
<summary>🎯 Install details</summary>
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
(venv) $ INSTALL_DIR=/tmp/dar-backup
|
|
171
|
+
mkdir "$INSTALL_DIR"
|
|
172
|
+
cd "$INSTALL_DIR"
|
|
173
|
+
python3 -m venv venv # create the virtual environment
|
|
174
|
+
. venv/bin/activate # activate the virtual environment
|
|
175
|
+
pip install dar-backup # run pip to install `dar-backup`
|
|
176
|
+
Collecting dar-backup
|
|
177
|
+
Downloading dar_backup-0.6.21-py3-none-any.whl.metadata (88 kB)
|
|
178
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 88.5/88.5 kB 3.7 MB/s eta 0:00:00
|
|
179
|
+
Collecting argcomplete>=3.6.2 (from dar-backup)
|
|
180
|
+
Using cached argcomplete-3.6.2-py3-none-any.whl.metadata (16 kB)
|
|
181
|
+
Collecting inputimeout>=1.0.4 (from dar-backup)
|
|
182
|
+
Using cached inputimeout-1.0.4-py3-none-any.whl.metadata (2.2 kB)
|
|
183
|
+
Collecting rich>=13.0.0 (from dar-backup)
|
|
184
|
+
Using cached rich-14.0.0-py3-none-any.whl.metadata (18 kB)
|
|
185
|
+
Collecting markdown-it-py>=2.2.0 (from rich>=13.0.0->dar-backup)
|
|
186
|
+
Using cached markdown_it_py-3.0.0-py3-none-any.whl.metadata (6.9 kB)
|
|
187
|
+
Collecting pygments<3.0.0,>=2.13.0 (from rich>=13.0.0->dar-backup)
|
|
188
|
+
Using cached pygments-2.19.1-py3-none-any.whl.metadata (2.5 kB)
|
|
189
|
+
Collecting mdurl~=0.1 (from markdown-it-py>=2.2.0->rich>=13.0.0->dar-backup)
|
|
190
|
+
Using cached mdurl-0.1.2-py3-none-any.whl.metadata (1.6 kB)
|
|
191
|
+
Downloading dar_backup-0.6.21-py3-none-any.whl (101 kB)
|
|
192
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 101.9/101.9 kB 16.2 MB/s eta 0:00:00
|
|
193
|
+
Using cached argcomplete-3.6.2-py3-none-any.whl (43 kB)
|
|
194
|
+
Using cached inputimeout-1.0.4-py3-none-any.whl (4.6 kB)
|
|
195
|
+
Using cached rich-14.0.0-py3-none-any.whl (243 kB)
|
|
196
|
+
Using cached markdown_it_py-3.0.0-py3-none-any.whl (87 kB)
|
|
197
|
+
Using cached pygments-2.19.1-py3-none-any.whl (1.2 MB)
|
|
198
|
+
Using cached mdurl-0.1.2-py3-none-any.whl (10.0 kB)
|
|
199
|
+
Installing collected packages: pygments, mdurl, inputimeout, argcomplete, markdown-it-py, rich, dar-backup
|
|
200
|
+
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
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
</details>
|
|
204
|
+
|
|
205
|
+
Setup the demo configurations and show a few operations
|
|
206
|
+
|
|
207
|
+
<br>
|
|
208
|
+
|
|
209
|
+
```bash
|
|
210
|
+
# see reference section for options tweaking the install
|
|
211
|
+
demo --install
|
|
212
|
+
|
|
213
|
+
# create catalog database
|
|
214
|
+
manager --create-db
|
|
215
|
+
|
|
216
|
+
# do a FULL backup of the installed backup definition called `demo`
|
|
217
|
+
dar-backup --full-backup
|
|
218
|
+
|
|
219
|
+
# list the contents of the backup
|
|
220
|
+
dar-backup --list-contents $(dar-backup --list |tail -n 1 | cut -d " " -f1)
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
<details>
|
|
224
|
+
|
|
225
|
+
<summary>🎯 --list details</summary>
|
|
226
|
+
|
|
227
|
+
```bash
|
|
228
|
+
(venv) $ demo --install
|
|
229
|
+
Directories created.
|
|
230
|
+
File generated at '/home/user/.config/dar-backup/backup.d/demo'
|
|
231
|
+
File generated at '/home/user/.config/dar-backup/dar-backup.conf'
|
|
232
|
+
1. Now run `manager --create-db` to create the catalog database.
|
|
233
|
+
2. Then you can run `dar-backup --full-backup` to create a backup.
|
|
234
|
+
3. List backups with `dar-backup --list`
|
|
235
|
+
4. List contents of a backup with `dar-backup --list-contents <backup-name>`
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
(venv) $ manager --create-db
|
|
240
|
+
========== Startup Settings ==========
|
|
241
|
+
manager.py: 0.7.1
|
|
242
|
+
Config file: /home/user/.config/dar-backup/dar-backup.conf
|
|
243
|
+
Logfile: /home/user/dar-backup/dar-backup.log
|
|
244
|
+
dar_manager: /home/user/.local/dar/bin/dar_manager
|
|
245
|
+
dar_manager v.: 1.9.0
|
|
246
|
+
======================================
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
(venv) $ dar-backup --full-backup
|
|
251
|
+
========== Startup Settings ==========
|
|
252
|
+
dar-backup.py: 0.7.1
|
|
253
|
+
dar path: /home/user/.local/dar/bin/dar
|
|
254
|
+
dar version: 2.7.17
|
|
255
|
+
Script directory: /home/user/git/dar-backup/v2/src/dar_backup
|
|
256
|
+
Config file: /home/user/.config/dar-backup/dar-backup.conf
|
|
257
|
+
.darrc location: /home/user/git/dar-backup/v2/src/dar_backup/.darrc
|
|
258
|
+
======================================
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
(venv) $ dar-backup --list-contents $(dar-backup --list |tail -n 1 | cut -d " " -f1)
|
|
263
|
+
========== Startup Settings ==========
|
|
264
|
+
dar-backup.py: 0.7.1
|
|
265
|
+
dar path: /home/user/.local/dar/bin/dar
|
|
266
|
+
dar version: 2.7.17
|
|
267
|
+
Script directory: /home/user/git/dar-backup/v2/src/dar_backup
|
|
268
|
+
Config file: /home/user/.config/dar-backup/dar-backup.conf
|
|
269
|
+
.darrc location: /home/user/git/dar-backup/v2/src/dar_backup/.darrc
|
|
270
|
+
======================================
|
|
271
|
+
[Saved][-] [-L-][ 49%][ ] drwx------ user user 8 kio Sat May 17 13:13:59 2025 .config
|
|
272
|
+
[Saved][-] [-L-][ 49%][ ] drwxrwxr-x user user 8 kio Tue May 6 20:55:40 2025 .config/dar-backup
|
|
273
|
+
[Saved][-] [-L-][ 48%][ ] drwxrwxr-x user user 6 kio Sat May 17 13:26:21 2025 .config/dar-backup/backup.d
|
|
274
|
+
[Saved][ ] [-L-][ 40%][ ] -rw-rw-r-- user user 764 o Sun Feb 23 21:23:01 2025 .config/dar-backup/backup.d/media-files
|
|
275
|
+
[Saved][ ] [-L-][ 41%][ ] -rw-rw-r-- user user 933 o Sun Feb 23 21:23:15 2025 .config/dar-backup/backup.d/pCloudDrive
|
|
276
|
+
[Saved][ ] [-L-][ 48%][ ] -rw-rw-r-- user user 1 kio Sun Mar 16 10:40:29 2025 .config/dar-backup/backup.d/test
|
|
277
|
+
[Saved][ ] [-L-][ 48%][ ] -rw-rw-r-- user user 824 o Tue May 13 17:00:52 2025 .config/dar-backup/backup.d/default
|
|
278
|
+
[Saved][ ] [-L-][ 48%][ ] -rw-rw-r-- user user 1 kio Sat May 3 10:40:33 2025 .config/dar-backup/backup.d/user-homedir
|
|
279
|
+
[Saved][ ] [-L-][ 54%][ ] -rw-rw-r-- user user 1 kio Sat May 17 18:17:40 2025 .config/dar-backup/backup.d/demo
|
|
280
|
+
[Saved][ ] [-L-][ 55%][ ] -rw-rw-r-- user user 1 kio Sat May 17 18:17:40 2025 .config/dar-backup/dar-backup.conf
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
</details>
|
|
284
|
+
|
|
285
|
+
<br>
|
|
286
|
+
|
|
287
|
+
Perform a restore and show the restored files
|
|
288
|
+
|
|
289
|
+
```bash
|
|
290
|
+
# restore all files in the backup
|
|
291
|
+
dar-backup --restore $(dar-backup --list |tail -n 1 | cut -d " " -f1) --verbose
|
|
292
|
+
|
|
293
|
+
# prove the files have been restored to directory as configured
|
|
294
|
+
find $HOME/dar-backup/restore
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
<details>
|
|
298
|
+
|
|
299
|
+
<summary>🎯 --restore details</summary>
|
|
300
|
+
|
|
301
|
+
```bash
|
|
302
|
+
(venv) $ dar-backup --verbose --restore $(dar-backup --list |tail -n 1 | cut -d " " -f1)
|
|
303
|
+
========== Startup Settings ==========
|
|
304
|
+
dar-backup.py: 0.7.1
|
|
305
|
+
dar path: /home/user/.local/dar/bin/dar
|
|
306
|
+
dar version: 2.7.17
|
|
307
|
+
Script directory: /home/user/git/dar-backup/v2/src/dar_backup
|
|
308
|
+
Config file: /home/user/.config/dar-backup/dar-backup.conf
|
|
309
|
+
.darrc location: /home/user/git/dar-backup/v2/src/dar_backup/.darrc
|
|
310
|
+
Backup.d dir: /home/user/.config/dar-backup/backup.d
|
|
311
|
+
Backup dir: /home/user/dar-backup/backups
|
|
312
|
+
Restore dir: /home/user/dar-backup/restore
|
|
313
|
+
Logfile location: /home/user/dar-backup/dar-backup.log
|
|
314
|
+
PAR2 enabled: True
|
|
315
|
+
--do-not-compare: False
|
|
316
|
+
======================================
|
|
317
|
+
|
|
318
|
+
|
|
319
|
+
|
|
320
|
+
(venv) $ find ~/dar-backup/restore/
|
|
321
|
+
/home/user/dar-backup/restore/
|
|
322
|
+
/home/user/dar-backup/restore/.config
|
|
323
|
+
/home/user/dar-backup/restore/.config/dar-backup
|
|
324
|
+
/home/user/dar-backup/restore/.config/dar-backup/backup.d
|
|
325
|
+
/home/user/dar-backup/restore/.config/dar-backup/backup.d/media-files
|
|
326
|
+
/home/user/dar-backup/restore/.config/dar-backup/backup.d/pCloudDrive
|
|
327
|
+
/home/user/dar-backup/restore/.config/dar-backup/backup.d/test
|
|
328
|
+
/home/user/dar-backup/restore/.config/dar-backup/backup.d/default
|
|
329
|
+
/home/user/dar-backup/restore/.config/dar-backup/backup.d/user-homedir
|
|
330
|
+
/home/user/dar-backup/restore/.config/dar-backup/backup.d/demo
|
|
331
|
+
/home/user/dar-backup/restore/.config/dar-backup/dar-backup.conf
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
</details>
|
|
335
|
+
|
|
336
|
+
<br>
|
|
337
|
+
|
|
338
|
+
> ✅ **Next steps**
|
|
339
|
+
>
|
|
340
|
+
> Tinker with `demo's` options:
|
|
341
|
+
>
|
|
342
|
+
> - --root-dir (perhaps $HOME)
|
|
343
|
+
> - --dir-to-backup (perhaps Pictures)
|
|
344
|
+
> - --backup-dir (perhaps /media/user/big-disk)
|
|
345
|
+
>
|
|
346
|
+
> See log file: `cat "$HOME/dar-backup/dar-backup.log"`
|
|
347
|
+
>
|
|
348
|
+
> Checkout [systemd timers and services](#generate-systemd-files)
|
|
349
|
+
>
|
|
350
|
+
> Checkout [shell autocompletion (very nice !)](#shell-autocompletion)
|
|
351
|
+
>
|
|
352
|
+
> Checkout the [reference section](#reference)
|
|
353
|
+
|
|
109
354
|
## Status
|
|
110
355
|
|
|
111
356
|
As of August 8, 2024 I am using the alpha versions of `dar-backup` (alpha-0.5.9 onwards) in my automated backup routine.
|
|
@@ -281,7 +526,7 @@ See more [here](#gpg-signing-key).
|
|
|
281
526
|
|
|
282
527
|
### 1 - installation
|
|
283
528
|
|
|
284
|
-
Installation is currently in a venv. These commands are installed in the venv:
|
|
529
|
+
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:
|
|
285
530
|
|
|
286
531
|
- dar-back
|
|
287
532
|
- cleanup
|
|
@@ -293,15 +538,15 @@ Installation is currently in a venv. These commands are installed in the venv:
|
|
|
293
538
|
|
|
294
539
|
Note:
|
|
295
540
|
|
|
296
|
-
The
|
|
541
|
+
The modules `inputimeout`, `rich`and `argcomplete` are installed into the venv and used by `dar-backup`
|
|
297
542
|
|
|
298
|
-
To install
|
|
543
|
+
To install `dar-backup`, create a venv and run pip:
|
|
299
544
|
|
|
300
545
|
```bash
|
|
301
546
|
mkdir $HOME/tmp
|
|
302
547
|
cd $HOME/tmp
|
|
303
548
|
python3 -m venv venv # create the virtual environment
|
|
304
|
-
. venv/bin/activate # activate the virtual
|
|
549
|
+
. venv/bin/activate # activate the virtual environment
|
|
305
550
|
pip install dar-backup # run pip to install `dar-backup`
|
|
306
551
|
```
|
|
307
552
|
|
|
@@ -314,7 +559,7 @@ alias db=". ~/tmp/venv/bin/activate; dar-backup -v"
|
|
|
314
559
|
drop the alias into ~/.bashrc like this:
|
|
315
560
|
|
|
316
561
|
```bash
|
|
317
|
-
grep -qxF 'alias db="
|
|
562
|
+
grep -qxF 'alias db="' ~/.bashrc \
|
|
318
563
|
|| echo 'alias db=". ~/tmp/venv/bin/activate; dar-backup -v"' >> ~/.bashrc
|
|
319
564
|
|
|
320
565
|
source ~/.bashrc
|
|
@@ -333,7 +578,10 @@ See section 15 and section 16 in the supplied "LICENSE" file.
|
|
|
333
578
|
|
|
334
579
|
### 2 - configuration
|
|
335
580
|
|
|
336
|
-
The dar-backup
|
|
581
|
+
The dar-backup [demo](#demo-options) application can be used to demo how `dar-backup` works.
|
|
582
|
+
It creates some directories, installs a demo configuration file and puts a demo backup definition in place.
|
|
583
|
+
|
|
584
|
+
`demo` is non-destructive and stops if some of the default directories exist.
|
|
337
585
|
|
|
338
586
|
Run `demo`
|
|
339
587
|
|
|
@@ -363,22 +611,32 @@ Generate the archive catalog database(s).
|
|
|
363
611
|
manager --create-db
|
|
364
612
|
```
|
|
365
613
|
|
|
366
|
-
### 4 -
|
|
614
|
+
### 4 - give dar-backup a spin
|
|
367
615
|
|
|
368
|
-
|
|
369
|
-
[Backup definitions](#backup-definition-example) are in place in BACKUP.D_DIR (see [config file](#config-file)).
|
|
616
|
+
The `demo` application has put a demo [backup definition](#backup-definition-example) in place in BACKUP.D_DIR (see [config file](#config-file)).
|
|
370
617
|
|
|
371
|
-
You are ready to do backups
|
|
618
|
+
You are now ready to do backups as configured in the backup definition.
|
|
619
|
+
|
|
620
|
+
Give `dar-backup`a spin:
|
|
372
621
|
|
|
373
622
|
```bash
|
|
374
|
-
dar-backup --full-backup
|
|
623
|
+
dar-backup --full-backup --verbose
|
|
624
|
+
|
|
625
|
+
# list backups
|
|
626
|
+
dar-backup --list
|
|
627
|
+
|
|
628
|
+
# see some examples on usage
|
|
629
|
+
dar-backup --examples
|
|
630
|
+
|
|
631
|
+
# see the log file
|
|
632
|
+
cat "$HOME/dar-backup/dar-backup.log"
|
|
375
633
|
```
|
|
376
634
|
|
|
377
|
-
If you want to see dar-backup's log entries in the terminal, use the `--log-stdout` option.
|
|
635
|
+
If you want to see dar-backup's log entries in the terminal, use the `--log-stdout` option.
|
|
378
636
|
|
|
379
637
|
If you want more log messages, use the `--verbose` or `--log-level debug` for even more.
|
|
380
638
|
|
|
381
|
-
If you want a backup
|
|
639
|
+
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)).
|
|
382
640
|
|
|
383
641
|
```bash
|
|
384
642
|
dar-backup --full-backup -d <your backup definition>
|
|
@@ -386,7 +644,7 @@ dar-backup --full-backup -d <your backup definition>
|
|
|
386
644
|
|
|
387
645
|
### 5 - deactivate venv
|
|
388
646
|
|
|
389
|
-
Deactivate the virtual environment (venv)
|
|
647
|
+
Deactivate the virtual environment (venv).
|
|
390
648
|
|
|
391
649
|
```bash
|
|
392
650
|
deactivate
|
|
@@ -723,20 +981,20 @@ deactivate
|
|
|
723
981
|
gives something like
|
|
724
982
|
|
|
725
983
|
```text
|
|
726
|
-
[Saved][-] [-L-][ 0%][ ] drwxrwxr-x
|
|
727
|
-
[Saved][ ] [-L-][ 93%][ ] -rw-rw-r--
|
|
728
|
-
[Saved][-] [-L-][ 0%][ ] drwxrwxr-x
|
|
729
|
-
[Saved][-] [-L-][ 1%][ ] drwxrwxr-x
|
|
730
|
-
[Saved][ ] [-L-][ 1%][X] -rw-rw-r--
|
|
731
|
-
[Saved][ ] [-L-][ 1%][X] -rw-rw-r--
|
|
732
|
-
[Saved][ ] [-L-][ 1%][X] -rw-rw-r--
|
|
733
|
-
[Saved][ ] [-L-][ 1%][X] -rw-rw-r--
|
|
734
|
-
[Saved][ ] [-L-][ 1%][X] -rw-rw-r--
|
|
735
|
-
[Saved][ ] [-L-][ 1%][X] -rw-rw-r--
|
|
736
|
-
[Saved][ ] [-L-][ 1%][X] -rw-rw-r--
|
|
737
|
-
[Saved][ ] [-L-][ 91%][ ] -rw-rw-r--
|
|
738
|
-
[Saved][ ] [-L-][ 92%][ ] -rw-rw-r--
|
|
739
|
-
[Saved][ ] [-L-][ 91%][ ] -rw-rw-r--
|
|
984
|
+
[Saved][-] [-L-][ 0%][ ] drwxrwxr-x user user 2 Gio Sat May 10 14:15:07 2025 home/user
|
|
985
|
+
[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
|
|
986
|
+
[Saved][-] [-L-][ 0%][ ] drwxrwxr-x user user 2 Gio Fri May 9 12:49:04 2025 home/user/data/2025
|
|
987
|
+
[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
|
|
988
|
+
[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
|
|
989
|
+
[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
|
|
990
|
+
[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
|
|
991
|
+
[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
|
|
992
|
+
[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
|
|
993
|
+
[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
|
|
994
|
+
[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
|
|
995
|
+
[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
|
|
996
|
+
[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
|
|
997
|
+
[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
|
|
740
998
|
```
|
|
741
999
|
|
|
742
1000
|
## dar file selection examples
|
|
@@ -757,26 +1015,26 @@ This happens when the shell splits the quoted string or interprets globs before
|
|
|
757
1015
|
|
|
758
1016
|
### select a directory
|
|
759
1017
|
|
|
760
|
-
Select files and sub directories in `home/
|
|
1018
|
+
Select files and sub directories in `home/user/data/2025/2025-05-09-Roskilde-Nordisk-udstilling`
|
|
761
1019
|
|
|
762
1020
|
```bash
|
|
763
|
-
dar-backup --list-contents media-files_INCR_2025-05-10 --selection="-g 'home/
|
|
1021
|
+
dar-backup --list-contents media-files_INCR_2025-05-10 --selection="-g 'home/user/data/2025/2025-05-09-Roskilde-Nordisk-udstilling'"
|
|
764
1022
|
```
|
|
765
1023
|
|
|
766
1024
|
gives
|
|
767
1025
|
|
|
768
1026
|
```text
|
|
769
1027
|
...
|
|
770
|
-
[Saved][ ] [-L-][ 0%][X] -rw-rw-r--
|
|
771
|
-
[Saved][ ] [-L-][ 0%][X] -rw-rw-r--
|
|
772
|
-
[Saved][ ] [-L-][ 0%][X] -rw-rw-r--
|
|
773
|
-
[Saved][ ] [-L-][ 0%][X] -rw-rw-r--
|
|
774
|
-
[Saved][ ] [-L-][ 0%][X] -rw-rw-r--
|
|
775
|
-
[Saved][-] [-L-][ 1%][ ] drwxrwxr-x
|
|
776
|
-
[Saved][ ] [-L-][ 1%][X] -rw-rw-r--
|
|
777
|
-
[Saved][ ] [-L-][ 1%][X] -rw-rw-r--
|
|
778
|
-
[Saved][ ] [-L-][ 1%][X] -rw-rw-r--
|
|
779
|
-
[Saved][ ] [-L-][ 1%][X] -rw-rw-r--
|
|
1028
|
+
[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
|
|
1029
|
+
[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
|
|
1030
|
+
[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
|
|
1031
|
+
[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
|
|
1032
|
+
[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
|
|
1033
|
+
[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
|
|
1034
|
+
[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
|
|
1035
|
+
[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
|
|
1036
|
+
[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
|
|
1037
|
+
[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
|
|
780
1038
|
...
|
|
781
1039
|
```
|
|
782
1040
|
|
|
@@ -789,15 +1047,15 @@ dar-backup --list-contents media-files_INCR_2025-05-10 --selection="-I '*Z50*' -
|
|
|
789
1047
|
gives something like
|
|
790
1048
|
|
|
791
1049
|
```text
|
|
792
|
-
[Saved][-] [-L-][ 0%][ ] drwxrwxr-x
|
|
793
|
-
[Saved][-] [-L-][ 0%][ ] drwxrwxr-x
|
|
794
|
-
[Saved][-] [-L-][ 1%][ ] drwxrwxr-x
|
|
795
|
-
[Saved][-] [-L-][ 0%][ ] drwxrwxr-x
|
|
796
|
-
[Saved][ ] [-L-][ 0%][X] -rw-rw-r--
|
|
797
|
-
[Saved][ ] [-L-][ 0%][X] -rw-rw-r--
|
|
798
|
-
[Saved][ ] [-L-][ 0%][X] -rw-rw-r--
|
|
799
|
-
[Saved][ ] [-L-][ 0%][X] -rw-rw-r--
|
|
800
|
-
[Saved][ ] [-L-][ 0%][X] -rw-rw-r--
|
|
1050
|
+
[Saved][-] [-L-][ 0%][ ] drwxrwxr-x user user 2 Gio Sat May 10 14:15:07 2025 home/user
|
|
1051
|
+
[Saved][-] [-L-][ 0%][ ] drwxrwxr-x user user 2 Gio Fri May 9 12:49:04 2025 home/user/data/2025
|
|
1052
|
+
[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
|
|
1053
|
+
[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
|
|
1054
|
+
[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
|
|
1055
|
+
[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
|
|
1056
|
+
[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
|
|
1057
|
+
[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
|
|
1058
|
+
[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
|
|
801
1059
|
...
|
|
802
1060
|
```
|
|
803
1061
|
|
|
@@ -828,9 +1086,9 @@ When restoring and using `/tmp` for --restore-dir, the restored files can be fou
|
|
|
828
1086
|
|
|
829
1087
|
### a single file
|
|
830
1088
|
|
|
831
|
-
```
|
|
1089
|
+
```bash
|
|
832
1090
|
. <the virtual env>/bin/activate
|
|
833
|
-
dar-backup --restore <archive_name> --selection
|
|
1091
|
+
dar-backup --restore <archive_name> --selection="-g path/to/file"
|
|
834
1092
|
deactivate
|
|
835
1093
|
```
|
|
836
1094
|
|
|
@@ -838,15 +1096,23 @@ deactivate
|
|
|
838
1096
|
|
|
839
1097
|
```bash
|
|
840
1098
|
. <the virtual env>/bin/activate
|
|
841
|
-
dar-backup --restore <archive_name> --selection
|
|
1099
|
+
dar-backup --restore <archive_name> --selection="-g path/to/directory"
|
|
842
1100
|
deactivate
|
|
843
1101
|
```
|
|
844
1102
|
|
|
845
1103
|
### .NEF from a specific date
|
|
846
1104
|
|
|
1105
|
+
The backed up directory contains \*.NEF and \*.xmp files.
|
|
1106
|
+
|
|
1107
|
+
Filtering:
|
|
1108
|
+
|
|
1109
|
+
- Include files with "2024-06-16" in file name
|
|
1110
|
+
- Exclude files with file names ending in ".xmp"
|
|
1111
|
+
- Files must be in directory "home/user/tmp/LUT-play", compared to the file root (`-R`option) in the backup.
|
|
1112
|
+
|
|
847
1113
|
```bash
|
|
848
1114
|
. <the virtual env>/bin/activate
|
|
849
|
-
dar-backup --restore <archive_name> --selection
|
|
1115
|
+
dar-backup --restore <archive_name> --selection="-I '*2024-06-16*' -X '*.xmp' -g home/user/tmp/LUT-play"
|
|
850
1116
|
deactivate
|
|
851
1117
|
```
|
|
852
1118
|
|
|
@@ -912,13 +1178,13 @@ One way to do that, is to let dar create a FULL archive from scratch, another is
|
|
|
912
1178
|
I do backups of my homedir. Here it is shown how a FULL archive is merged with a DIFF, creating a new FULL archive.
|
|
913
1179
|
|
|
914
1180
|
```bash
|
|
915
|
-
dar --merge
|
|
1181
|
+
dar --merge user-homedir_FULL_2021-09-12 -A user-homedir_FULL_2021-06-06 -@user-homedir_DIFF_2021-08-29 -s 12G
|
|
916
1182
|
|
|
917
1183
|
# test the new FULL archive
|
|
918
|
-
dar -t
|
|
1184
|
+
dar -t user-homedir_FULL_2021-09-12
|
|
919
1185
|
|
|
920
1186
|
# create Par2 redundancy files
|
|
921
|
-
for file in
|
|
1187
|
+
for file in user-homedir_FULL_yyyy-mm-dd.*.dar; do
|
|
922
1188
|
par2 c -r5 -n1 "$file"
|
|
923
1189
|
done
|
|
924
1190
|
```
|
|
@@ -1053,8 +1319,8 @@ Try auto completion in your session:
|
|
|
1053
1319
|
eval "$(register-python-argcomplete dar-backup)"
|
|
1054
1320
|
eval "$(register-python-argcomplete cleanup)"
|
|
1055
1321
|
eval "$(register-python-argcomplete manager)"
|
|
1056
|
-
complete -o nosort -C 'python -m argcomplete cleanup' cleanup
|
|
1057
|
-
complete -o nosort -C 'python -m argcomplete manager' manager
|
|
1322
|
+
#complete -o nosort -C 'python -m argcomplete cleanup' cleanup
|
|
1323
|
+
#complete -o nosort -C 'python -m argcomplete manager' manager
|
|
1058
1324
|
```
|
|
1059
1325
|
|
|
1060
1326
|
To make it persistent across sessions, add this to your ~/.bashrc:
|
|
@@ -1065,8 +1331,8 @@ eval "$(register-python-argcomplete dar-backup)"
|
|
|
1065
1331
|
eval "$(register-python-argcomplete cleanup)"
|
|
1066
1332
|
eval "$(register-python-argcomplete manager)"
|
|
1067
1333
|
# This disables bash sorting, so sorting is by <backup definition> and <date>
|
|
1068
|
-
complete -o nosort -C 'python -m argcomplete cleanup' cleanup
|
|
1069
|
-
complete -o nosort -C 'python -m argcomplete manager' manager
|
|
1334
|
+
#complete -o nosort -C 'python -m argcomplete cleanup' cleanup
|
|
1335
|
+
#complete -o nosort -C 'python -m argcomplete manager' manager
|
|
1070
1336
|
```
|
|
1071
1337
|
|
|
1072
1338
|
If you're using a virtual environment and register-python-argcomplete isn't in your global PATH, use:
|
|
@@ -1139,7 +1405,7 @@ One backup definition per file
|
|
|
1139
1405
|
| [clean-log](#clean-log-options) | Clean up excessive log output from dar command logs |
|
|
1140
1406
|
| [dar-backup-systemd](#dar-backup-systemd-options) | Generate (and optionally install) systemd timers and services for automated backups |
|
|
1141
1407
|
| [installer](#installer-options) | Set up directories and optionally create catalog databases according to a config file |
|
|
1142
|
-
| [demo](#demo-options) | Set up required directories and
|
|
1408
|
+
| [demo](#demo-options) | Set up required directories and config files for a demo|
|
|
1143
1409
|
|
|
1144
1410
|
### test coverage
|
|
1145
1411
|
|
|
@@ -1270,10 +1536,12 @@ Sets up `dar-backup` according to provided config file.
|
|
|
1270
1536
|
The installer creates the necessary backup catalog databases if `--create-db` is given.
|
|
1271
1537
|
|
|
1272
1538
|
```bash
|
|
1273
|
-
--config
|
|
1274
|
-
--create-db
|
|
1275
|
-
-
|
|
1276
|
-
-
|
|
1539
|
+
--config Sets up `dar-backup`.
|
|
1540
|
+
--create-db Create backup catalog databases. Add it to --config
|
|
1541
|
+
--install-autocompletion Add bash or zsh auto completion - idempotent
|
|
1542
|
+
--remove-autocompletion Remove the auto completion from bash or zsh
|
|
1543
|
+
-v, --version Display version and licensing information.
|
|
1544
|
+
-h, --help Displays usage info
|
|
1277
1545
|
```
|
|
1278
1546
|
|
|
1279
1547
|
### Demo options
|
|
@@ -1296,7 +1564,14 @@ Sets up demo config files:
|
|
|
1296
1564
|
- ~/.config/dar-backup/backup.d/default
|
|
1297
1565
|
|
|
1298
1566
|
```bash
|
|
1299
|
-
-i, --install
|
|
1300
|
-
-
|
|
1301
|
-
-
|
|
1567
|
+
-i, --install Sets up `dar-backup`.
|
|
1568
|
+
--root-dir Specify the root directory for the backup.
|
|
1569
|
+
--dir-to-backup Directory to backup, relative to the root directory.
|
|
1570
|
+
--backup-dir Directory where backups and redundancy files are put.
|
|
1571
|
+
--override By default, the script will not overwrite existing files or directories.
|
|
1572
|
+
Use this option to override this behavior.
|
|
1573
|
+
--generate Generate config files and put them in /tmp/ for inspection
|
|
1574
|
+
without writing to $HOME.
|
|
1575
|
+
-v, --version Display version and licensing information.
|
|
1576
|
+
-h, --help Displays usage info
|
|
1302
1577
|
```
|
dar_backup/__about__.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
__version__ = "0.
|
|
1
|
+
__version__ = "0.7.1"
|
|
2
2
|
|
|
3
3
|
__license__ = '''Licensed under GNU GENERAL PUBLIC LICENSE v3, see the supplied file "LICENSE" for details.
|
|
4
4
|
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW, not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|