backup_paradise 1.3.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +452 -0
- data/backup_paradise.gemspec +50 -0
- data/bin/backup_for_ingrid +10 -0
- data/bin/backup_paradise +7 -0
- data/bin/windows_backup_paradise +9 -0
- data/doc/README.gen +390 -0
- data/doc/TODO.md +130 -0
- data/img/BackupParadise_Logo.png +0 -0
- data/lib/backup_paradise/actions/README.md +2 -0
- data/lib/backup_paradise/actions/backup.rb +62 -0
- data/lib/backup_paradise/base/base.rb +529 -0
- data/lib/backup_paradise/base/colours.rb +137 -0
- data/lib/backup_paradise/base/namespace.rb +16 -0
- data/lib/backup_paradise/base/tab.rb +47 -0
- data/lib/backup_paradise/colours/colours.rb +88 -0
- data/lib/backup_paradise/constants/constants.rb +162 -0
- data/lib/backup_paradise/gui/glimmer/libui/backup_for_ingrid/backup_for_ingrid.rb +87 -0
- data/lib/backup_paradise/gui/gtk2/OLD_backup.rb +165 -0
- data/lib/backup_paradise/gui/libui/backup_for_ingrid/backup_for_ingrid.rb +99 -0
- data/lib/backup_paradise/gui/shared_code/simple_backup_widget/simple_backup_widget_module.rb +0 -0
- data/lib/backup_paradise/gui/tk/backup.rb +108 -0
- data/lib/backup_paradise/gui/universal_widgets/simple_backup_widget/simple_backup_widget.rb +921 -0
- data/lib/backup_paradise/images/BACKUP_IMAGE.png +0 -0
- data/lib/backup_paradise/images/right_arrow.png +0 -0
- data/lib/backup_paradise/project/project.rb +40 -0
- data/lib/backup_paradise/requires/require_the_backup_paradise_project.rb +18 -0
- data/lib/backup_paradise/requires/require_yaml.rb +7 -0
- data/lib/backup_paradise/tab/tab.rb +87 -0
- data/lib/backup_paradise/toplevel_methods/cliner.rb +16 -0
- data/lib/backup_paradise/toplevel_methods/config.rb +86 -0
- data/lib/backup_paradise/toplevel_methods/create_and_remove.rb +63 -0
- data/lib/backup_paradise/toplevel_methods/e.rb +16 -0
- data/lib/backup_paradise/toplevel_methods/esystem.rb +19 -0
- data/lib/backup_paradise/toplevel_methods/files_and_directories.rb +181 -0
- data/lib/backup_paradise/toplevel_methods/help.rb +93 -0
- data/lib/backup_paradise/toplevel_methods/misc.rb +153 -0
- data/lib/backup_paradise/toplevel_methods/mountpoint.rb +188 -0
- data/lib/backup_paradise/toplevel_methods/opnn.rb +27 -0
- data/lib/backup_paradise/utility_scripts/backup/backup.rb +1942 -0
- data/lib/backup_paradise/version/version.rb +19 -0
- data/lib/backup_paradise/windows/README.md +1 -0
- data/lib/backup_paradise/windows/windows.rb +101 -0
- data/lib/backup_paradise/www/backup.cgi +63 -0
- data/lib/backup_paradise/yaml/config.yml +82 -0
- data/lib/backup_paradise.rb +5 -0
- data/test/testing_toplevel_functionality.rb +11 -0
- metadata +192 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 263753b9cc84a3c5a223a9465d19a63b7347fb1a6755ceaea522f709a1c9408c
|
4
|
+
data.tar.gz: c5945d57b90f13d43225c1e96029240ff890519408e7e8822b2e35d115bfec4a
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 2c8bcd79156abebe708f605b8d4c8cf9f32b03129d369a0169326be050f51f69308c26d235d78af76985edd34ca092e54d0ac16dd004b92b862e403dedfc25a7
|
7
|
+
data.tar.gz: 9e1f5dac3d5715327b21f64fe3c79a75ae4250cf061b89849a52a2435883399a164d8107f613280dcfa38fd12b9217a8f4341f85328dcd91760e18ea7c84a6a7
|
data/README.md
ADDED
@@ -0,0 +1,452 @@
|
|
1
|
+
[![forthebadge](https://forthebadge.com/images/badges/built-with-love.svg)](https://www.gobolinux.org/)
|
2
|
+
[![forthebadge](https://forthebadge.com/images/badges/made-with-ruby.svg)](https://www.ruby-lang.org/en/)
|
3
|
+
[![Gem Version](https://badge.fury.io/rb/backup_paradise.svg)](https://badge.fury.io/rb/backup_paradise)
|
4
|
+
|
5
|
+
This gem was <b>last updated</b> on the <span style="color: darkblue; font-weight: bold">20.01.2024</span> (dd.mm.yyyy notation), at <span style="color: steelblue; font-weight: bold">18:58:06</span> o'clock.
|
6
|
+
|
7
|
+
<img src="https://i.imgur.com/Imkvsgs.png" style="margin: 1em">
|
8
|
+
|
9
|
+
# The Backup Paradise project
|
10
|
+
|
11
|
+
This project attempts to assist you - and me - in backing up data
|
12
|
+
to an **external USB** device specifically.
|
13
|
+
|
14
|
+
The project is mostly catering to my own use cases, so it may not
|
15
|
+
be very useful to other ruby users. I will try to make adjustments
|
16
|
+
so that other ruby users can use it (see the file called
|
17
|
+
**config.yml**), but this is an ongoing effort that may take
|
18
|
+
some time.
|
19
|
+
|
20
|
+
The project is primarily just a fancy **recursive copy** operation,
|
21
|
+
but it will do some minor additional notifications on the commandline,
|
22
|
+
make use of colours (if the colours gem has been installed),
|
23
|
+
automatically create some log files and even provide ruby-gtk3
|
24
|
+
bindings, as well as tk-bindings (although the latter ones are
|
25
|
+
currently incomplete).
|
26
|
+
|
27
|
+
So it is a **recursive copy** script with some add-ons really,
|
28
|
+
nothing really sophisticated aside from this on top.
|
29
|
+
|
30
|
+
The project has **one major goal** and a **few minor goals**.
|
31
|
+
|
32
|
+
The **major goal** is **to be usable as a backup-assistant**,
|
33
|
+
on both linux, but also on windows systems.
|
34
|
+
|
35
|
+
The **minor goals** include:
|
36
|
+
|
37
|
+
- **Flexibility**, to also allow us to back up only
|
38
|
+
individual files or individual directories. The user should
|
39
|
+
be able to specify **what** has to be backed up.
|
40
|
+
|
41
|
+
- Notify the user about the status of the backup-operation
|
42
|
+
and prior backup-operations.
|
43
|
+
|
44
|
+
- Provide some **simple GUI bindings** to use this project,
|
45
|
+
in particular for both ruby-gtk and ruby-tk. The latter
|
46
|
+
so that we can use this on windows.
|
47
|
+
|
48
|
+
## General usage of the BackupParadise project - backing up data via ruby
|
49
|
+
|
50
|
+
For the time being, I have aliased the main executable at
|
51
|
+
**bin/backup_paradise** onto:
|
52
|
+
|
53
|
+
backup_paradise
|
54
|
+
|
55
|
+
To then use this, I can issue the following commands:
|
56
|
+
|
57
|
+
backup_paradise usb1
|
58
|
+
backup_paradise usb2
|
59
|
+
backup_paradise tousb1
|
60
|
+
backup_paradise tousb2
|
61
|
+
backup_paradise tousb3
|
62
|
+
backup_paradise tousb4
|
63
|
+
|
64
|
+
Depending on where the **external USB device** is mounted.
|
65
|
+
|
66
|
+
What does an argument, such as **usb1**, imply?
|
67
|
+
|
68
|
+
This used to refer to the hardcoded path at <b>/Mount/USB1/</b>
|
69
|
+
on my home system. **usb2** would then point at
|
70
|
+
<b>/Mount/USB2/</b> and so forth.
|
71
|
+
|
72
|
+
These 'main aliases' can also be accessed via some shortcuts,
|
73
|
+
such as "tousb1", without the quotes. See the examples listed
|
74
|
+
above.
|
75
|
+
|
76
|
+
I adopted this scheme after having used **GoboLinux**. Note that
|
77
|
+
this used to be valid from **December 2018** up to **May 2021**.
|
78
|
+
|
79
|
+
In **May 2021** this approach was changed. While I still use
|
80
|
+
the above instructions, such as via **backup_paradise usb1**,
|
81
|
+
a .yml file now decides the target directory. So, usb1,
|
82
|
+
usb2 and so forth, are now simply aliases to whatever the
|
83
|
+
.yml file specifies. The advantage of this approach is that
|
84
|
+
other users can re-define the targets there - simply have
|
85
|
+
a look at the **config.yml** file and change it if you
|
86
|
+
would like to. (Of course overruling this via the commandline
|
87
|
+
still works, so you don't really need to have to modify the
|
88
|
+
config.yml file.)
|
89
|
+
|
90
|
+
Other mount points can also be used, although not with a
|
91
|
+
convenience shortcut. Have a look at the option
|
92
|
+
**--backup-to=/opt/** documented elsewhere in this
|
93
|
+
file, to specify another base-directory to use.
|
94
|
+
|
95
|
+
## The configuration file called config.yml
|
96
|
+
|
97
|
+
The **BackupParadise project** comes with a small configuration file,
|
98
|
+
called **config.yml**, in the **yaml/** subdirectory.
|
99
|
+
|
100
|
+
This is an optional file, though - if it does not exist then the
|
101
|
+
project will ignore this file completely and use internal
|
102
|
+
defaults as-is. But if it is available, and it can be found by
|
103
|
+
ruby, then it will be used as **the default configuration**.
|
104
|
+
|
105
|
+
Since as of **September 2021* the **config.yml** file
|
106
|
+
has the following **five main configuration settings**:
|
107
|
+
|
108
|
+
use_this_program_to_rename_tabs: String
|
109
|
+
show_popup_notification: Boolean
|
110
|
+
use_system_cp: Boolean
|
111
|
+
backup_these_directories: Array
|
112
|
+
local_audio_directory: String
|
113
|
+
|
114
|
+
The first three entries are not so important, but the fourth
|
115
|
+
entry is quite important, because this Array specifies which
|
116
|
+
directories we want to back up and thus copy. The fifth entry
|
117
|
+
can be used to denote your local collection of audio files,
|
118
|
+
if these are kept in a directory. I use **/home/x/songs/** for
|
119
|
+
this.
|
120
|
+
|
121
|
+
More options may be added in the future, but I will try to only
|
122
|
+
add options that make sense, rather than overwhelm users with
|
123
|
+
lots of configuration options.
|
124
|
+
|
125
|
+
The individual aliases, such as usb1, usb2, and so forth, are
|
126
|
+
also specified now:
|
127
|
+
|
128
|
+
usb1: /Mount/USB1/
|
129
|
+
usb2: /Mount/USB2/
|
130
|
+
usb3: /Mount/USB3/
|
131
|
+
usb4: /Mount/USB4/
|
132
|
+
usb5: /Mount/USB5/
|
133
|
+
|
134
|
+
The rationale for these default to my home setup, where I
|
135
|
+
mount devices to these directories (on Linux).
|
136
|
+
|
137
|
+
## Log files
|
138
|
+
|
139
|
+
The BackupParadise project will try to log as to what has happened,
|
140
|
+
since as of **May 2018**. Several different log files may be created.
|
141
|
+
|
142
|
+
If there is more than one log file stored at the target device
|
143
|
+
then the current behaviour is to delete all but one log file.
|
144
|
+
|
145
|
+
Another log file that may commonly be used is the one
|
146
|
+
that targets the file <b>/Depot/Temp/backup.log</b>. This
|
147
|
+
will, however had, only work if the directory **/Depot/Temp/**
|
148
|
+
exists, which is the case on my home system. The whole gem here
|
149
|
+
is heavily tailored to my own needs - I can adapt it to meet
|
150
|
+
other people's wishes if necessary, of course.
|
151
|
+
|
152
|
+
The **format** of the log file going into **backup.log** is
|
153
|
+
simply how long it took to make the backup, in seconds, and
|
154
|
+
the exact date when that particular log file was created. This
|
155
|
+
is equal to when the backup-operation happened, too.
|
156
|
+
|
157
|
+
## Backing up individual directories
|
158
|
+
|
159
|
+
If you have a directory called **FOOBAR/**, then you can back
|
160
|
+
it up simply by issuing:
|
161
|
+
|
162
|
+
backup_paradise --FOOBAR
|
163
|
+
backup_paradise FOOBAR
|
164
|
+
|
165
|
+
Whichever variant you prefer. Note that this requires that the
|
166
|
+
external device has been mounted already. You can set where
|
167
|
+
the device should reside via:
|
168
|
+
|
169
|
+
BackupParadise.set_mounted_path()
|
170
|
+
|
171
|
+
Simply pass the directory that you may wish to use for backup
|
172
|
+
purpose there.
|
173
|
+
|
174
|
+
Note that **class AdvancedBackup** will assume a certain target
|
175
|
+
device automatically, tailored to my own system. This is usually
|
176
|
+
at **/Mount/USB1** for the first mounted USB device on my
|
177
|
+
system.
|
178
|
+
|
179
|
+
If you wish to overrule that and use another target, which you
|
180
|
+
may most likely want to do, then you can use any of the
|
181
|
+
following commandline flags for this:
|
182
|
+
|
183
|
+
backup_paradise --use-this-as-target-for-backup=/opt/
|
184
|
+
backup_paradise --use-this-as-target=/opt/
|
185
|
+
backup_paradise --backup-to=/opt/
|
186
|
+
|
187
|
+
In this case **/opt/** would be the target that you use as **source
|
188
|
+
directory** for the backup-operation.
|
189
|
+
|
190
|
+
If you wish to backup the **/Programs/** hierarchy, should you
|
191
|
+
keep an **AppDir layout** on your system, then this commandline
|
192
|
+
invocation may be of help:
|
193
|
+
|
194
|
+
backup_paradise --programs-dir
|
195
|
+
|
196
|
+
To backup the **/home/x/studium/** directory, the following
|
197
|
+
commands are possible:
|
198
|
+
|
199
|
+
backup_paradise --studium-dir
|
200
|
+
backup_paradise --studium-directory
|
201
|
+
backup_paradise --studium
|
202
|
+
|
203
|
+
To backup, on my home system, the **/AUTOGENERATED/**
|
204
|
+
directory, I do:
|
205
|
+
|
206
|
+
backup_paradise --autogenerated
|
207
|
+
|
208
|
+
## Miscellaneous comments
|
209
|
+
|
210
|
+
The **BackupParadise** project has been rewritten a few times already
|
211
|
+
over the years.
|
212
|
+
|
213
|
+
In the past there was an instance variable in class AdvancedBackup
|
214
|
+
called **@last_backup_directory**, which was pointing to an absolute
|
215
|
+
path such as **/Mount/USB1/last_backup-13.08.2018-21:11:15/**.
|
216
|
+
|
217
|
+
It is no longer in use, but I keep it as a reference hint to
|
218
|
+
myself - who knows what may be changed in the future.
|
219
|
+
|
220
|
+
## Specific examples
|
221
|
+
|
222
|
+
This subsection details some invocation examples in a short way.
|
223
|
+
|
224
|
+
Some of these will only work on my home system for the time being,
|
225
|
+
until I have sufficiently changed the project to allow more
|
226
|
+
flexibility in this regard.
|
227
|
+
|
228
|
+
Backup all audio-files to **/opt/**:
|
229
|
+
|
230
|
+
backup_paradise --backup-to=/opt/ --audio-dir
|
231
|
+
|
232
|
+
Backup all relevant entries into the default chroot target (on
|
233
|
+
my home system):
|
234
|
+
|
235
|
+
backup_paradise --chroot
|
236
|
+
|
237
|
+
## How do I make use of this project
|
238
|
+
|
239
|
+
I make use of the **backup_paradise** project to back up relevant
|
240
|
+
data on my home system. For example, all source-archives that
|
241
|
+
are registered within the **RBT project** I also keep available
|
242
|
+
locally. Then there is my ruby code, other files, and possibly
|
243
|
+
books, papers and tutorials stored in .pdf format.
|
244
|
+
|
245
|
+
In **September 2020**, the regular backup size was **54G** per
|
246
|
+
backup-action, mostly owing to the source archives (krita
|
247
|
+
alone occupies more than 167 MB, for example). This is way too
|
248
|
+
much, in my opinion, because it takes about **half an hour**
|
249
|
+
or so to back up on USB 2.0 already.
|
250
|
+
|
251
|
+
I will have to keep reducing file size and removing stuff that
|
252
|
+
I no longer need; aka do some clean-up. Or perhaps hope that
|
253
|
+
future USB variants will improve things here.
|
254
|
+
|
255
|
+
At any rate, this subsection shows just a bit how I may use
|
256
|
+
the project.
|
257
|
+
|
258
|
+
My usual go-to alias is:
|
259
|
+
|
260
|
+
rbackup usb1
|
261
|
+
|
262
|
+
to backup to the mount point /Mount/USB1.
|
263
|
+
|
264
|
+
This is the command invocation I tend to use most frequently
|
265
|
+
so.
|
266
|
+
|
267
|
+
## class BackupParadise::Backup
|
268
|
+
|
269
|
+
This class is the main interface for the BackupParadise project.
|
270
|
+
|
271
|
+
For a list of documented options, pass in **--help**.
|
272
|
+
|
273
|
+
A few examples will be mentioned here as well, in a succinct
|
274
|
+
manner:
|
275
|
+
|
276
|
+
rbackup --pwd # backup into the current working directory
|
277
|
+
|
278
|
+
## BackupParadise.simple_backup
|
279
|
+
|
280
|
+
**BackupParadise.simple_backup** can be used as a simpler alternative
|
281
|
+
to class BackupParadise::Backup. While the latter class is very
|
282
|
+
feature-rich, sometimes you may want to use
|
283
|
+
**BackupParadise.simple_backup()** instead.
|
284
|
+
|
285
|
+
Usage examples:
|
286
|
+
|
287
|
+
BackupParadise.simple_backup(:audio, '/Mount/HDD1/')
|
288
|
+
BackupParadise.simple_backup(:audio, :usb1)
|
289
|
+
|
290
|
+
## Backup time (statistics)
|
291
|
+
|
292
|
+
This subsection is just a remainder for me how long backing up all
|
293
|
+
my dataset (which is a LOT) takes. These times are gathered on
|
294
|
+
Linux.
|
295
|
+
|
296
|
+
Ideally this time should be as small as possible, but evidently,
|
297
|
+
the more time that has to be transferred, the longer it will
|
298
|
+
take. This refers to about 100 GB or more right now. I am open
|
299
|
+
for any suggestions to cut the time down.
|
300
|
+
|
301
|
+
The measurements happen when there is a low CPU load.
|
302
|
+
|
303
|
+
04.06.2021: 39.17 minutes
|
304
|
+
|
305
|
+
## GUI components
|
306
|
+
|
307
|
+
Right now the **GTK3 version** (ruby-gtk3) is the most advanced GUI
|
308
|
+
component of this project - but it is still rather limited. The
|
309
|
+
primary point of the gtk-widgets for the project is to demonstrate
|
310
|
+
what **could** be done: we want to show what is possible, in
|
311
|
+
the event that others may want to build upon these ideas.
|
312
|
+
|
313
|
+
Additionally I am working on **ruby-tk** code as well, just so
|
314
|
+
that this project can be used on windows (addendum in August
|
315
|
+
2021: this has been superceded by ruby-libui, which is a LOT
|
316
|
+
simpler to use on windows). The priority for ruby-tk is lower
|
317
|
+
than that of the ruby-gtk3 code. (In the future, one
|
318
|
+
day, we may try to use the same, unified code base for
|
319
|
+
GUIs, but this is a minor, additional goal.)
|
320
|
+
|
321
|
+
Yet another use case is ruby-libui, so in the long run it is
|
322
|
+
planned to add at the least three different widget sets,
|
323
|
+
as well as "GUIs" for the world wide web, such as via
|
324
|
+
<b>sinatra</b>.
|
325
|
+
|
326
|
+
You can try to invoke the **GUI components** from the commandline,
|
327
|
+
possibly via any of the following flags:
|
328
|
+
|
329
|
+
backup_paradise --gui
|
330
|
+
backup_paradise --gtk # This variant now defaults to ruby-gtk3.
|
331
|
+
|
332
|
+
Or more specifically:
|
333
|
+
|
334
|
+
backup_paradise --gtk3
|
335
|
+
|
336
|
+
There used to be gtk2-bindings, but they currently (**May 2021**)
|
337
|
+
do not work very well. In **August 2021** I abandoned the ruby-gtk2
|
338
|
+
code completely - new GUI code will be written either in ruby-gtk3
|
339
|
+
and/or in ruby-libui. ruby-gtk2 is still nice, but ruby-gtk3 allows
|
340
|
+
for more flexibility, in particular in regards to **CSS**.
|
341
|
+
|
342
|
+
In **September 2021** I rewrote the old ruby-gtk3 code. The current
|
343
|
+
iteration now looks like this:
|
344
|
+
|
345
|
+
<img src="https://i.imgur.com/g1dxzAb.png" style="margin-left: 2em">
|
346
|
+
|
347
|
+
The code base for that class is now largely a module, which I use
|
348
|
+
for libui-bindings too. In the long run I would like to have
|
349
|
+
ruby-tk and fxruby support as well as for the www (via sinatra
|
350
|
+
and .cgi files). Stay tuned in this regard, but don't expect this
|
351
|
+
to come too soon.
|
352
|
+
|
353
|
+
## Automounting
|
354
|
+
|
355
|
+
Since as of <b>March 2023</b> it is possible to automount a
|
356
|
+
second harddisc (should it exist). This is currently only
|
357
|
+
the case when the underlying system is a roebe-system,
|
358
|
+
and when the default mount target /Mount/HDD, is NOT
|
359
|
+
mounted yet. If this is the case then automounting will
|
360
|
+
occur, using a hardcoded command.
|
361
|
+
|
362
|
+
In the future this may be improved, including automounting
|
363
|
+
of USB-devices. This has to be revisited eventually; for
|
364
|
+
now the code that was added has to suffice.
|
365
|
+
|
366
|
+
## Using the backup_paradise gem on Windows
|
367
|
+
|
368
|
+
On Linux the code I write in ruby tends to work just fine. On Windows,
|
369
|
+
this is a bit more difficult. For instance, Windows does not know
|
370
|
+
symlinks in the way that Linux does. I tried this recently in July
|
371
|
+
2023, and had awkward error messages - for instance, if you have
|
372
|
+
a directory called <b>C++</b> or <b>Cpp</b> and then symlink to
|
373
|
+
it via C++ or Cpp. The C++ symlink in particular led to some oddities
|
374
|
+
on windows where I could not copy the whole directory. This was
|
375
|
+
very confusing. Removing the symlink suddenly allowd the copy-operation.
|
376
|
+
Windows is strange.
|
377
|
+
|
378
|
+
At any rate, since symlinks are not so useful on windows, and may lead
|
379
|
+
to errors, since as of August 2023 the backup_paradise gem will
|
380
|
+
remove all symlinks found in the backup-target IF a NTFS file system
|
381
|
+
is used. Not everyone may want this behaviour by default, but for my
|
382
|
+
use case, I found it to work better. I document this behaviour here
|
383
|
+
in the event that other users may want to change this for their own
|
384
|
+
use cases.
|
385
|
+
|
386
|
+
## Licence
|
387
|
+
|
388
|
+
Since as of **August 2021** the MIT licence is used for new releases of
|
389
|
+
this gem. While the GPL is a fine licence in and by itself, I simply do
|
390
|
+
not have the time or willingness to want to enforce it for such a simple
|
391
|
+
project like **backup_paradise**. MIT is much simpler to adhere to as
|
392
|
+
well, so there we go.
|
393
|
+
|
394
|
+
|
395
|
+
## Contact information and mandatory 2FA (no longer) coming up in 2022 / 2023
|
396
|
+
|
397
|
+
If your creative mind has ideas and specific suggestions to make this gem
|
398
|
+
more useful in general, feel free to drop me an email at any time, via:
|
399
|
+
|
400
|
+
shevy@inbox.lt
|
401
|
+
|
402
|
+
Before that email I used an email account at Google gmail, but in **2021** I
|
403
|
+
decided to slowly abandon gmail, for various reasons. In order to limit the
|
404
|
+
explanation here, allow me to just briefly state that I do not feel as if I
|
405
|
+
want to promote any Google service anymore when the user becomes the end
|
406
|
+
product (such as via data collection by upstream services, including other
|
407
|
+
proxy-services). My feeling is that this is a hugely flawed business model
|
408
|
+
to begin with, and I no longer wish to support this in any way, even if
|
409
|
+
only indirectly so, such as by using services of companies that try to
|
410
|
+
promote this flawed model.
|
411
|
+
|
412
|
+
In regards to responding to emails: please keep in mind that responding
|
413
|
+
may take some time, depending on the amount of work I may have at that
|
414
|
+
moment. So it is not that emails are ignored; it is more that I have not
|
415
|
+
(yet) found the time to read and reply. This means there may be a delay
|
416
|
+
of days, weeks and in some instances also months. There is, unfortunately,
|
417
|
+
not much I can do when I need to prioritise my time investment, but I try
|
418
|
+
to consider <b>all</b> feedback as an opportunity to improve my projects
|
419
|
+
nonetheless.
|
420
|
+
|
421
|
+
In <b>2022</b> rubygems.org decided to make 2FA mandatory for every
|
422
|
+
gem owner eventually:
|
423
|
+
|
424
|
+
see
|
425
|
+
https://blog.rubygems.org/2022/06/13/making-packages-more-secure.html
|
426
|
+
|
427
|
+
Mandatory 2FA will eventually be extended to all rubygems.org developers and
|
428
|
+
maintainers. As I can not use 2FA, for reasons I will skip explaining here,
|
429
|
+
this means that my projects will eventually be removed, as I no longer
|
430
|
+
have any control over my projects hosted on rubygems.org (because I
|
431
|
+
can not use 2FA).
|
432
|
+
|
433
|
+
At that point, I no longer have any control what is done to my projects
|
434
|
+
since whoever is controlling the gems ecosystem took away our control
|
435
|
+
here. I am not sure at which point ruby became corporate-controlled -
|
436
|
+
that was not the case several years ago, so something has
|
437
|
+
changed.
|
438
|
+
|
439
|
+
Ruby also only allows 2FA users to participate on the issue tracker these
|
440
|
+
days:
|
441
|
+
|
442
|
+
https://bugs.ruby-lang.org/issues/18800
|
443
|
+
|
444
|
+
But this has been reverted some months ago, so it is no longer applicable.
|
445
|
+
Suffice to say that I do not think that we should only be allowed to
|
446
|
+
interact on the world wide web when some 'authority' authenticated us,
|
447
|
+
such as via mandatory 2FA, so I hope this won't come back again.
|
448
|
+
|
449
|
+
Fighting spam is a noble goal, but when it also means you lock out
|
450
|
+
real human people then this is definitely NOT a good situation
|
451
|
+
to be had.
|
452
|
+
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# =========================================================================== #
|
2
|
+
# Gemspec for Project BackupParadise.
|
3
|
+
# =========================================================================== #
|
4
|
+
require 'backup_paradise/version/version.rb'
|
5
|
+
require 'roebe'
|
6
|
+
|
7
|
+
Gem::Specification.new { |s|
|
8
|
+
|
9
|
+
s.name = 'backup_paradise'
|
10
|
+
s.version = BackupParadise::VERSION
|
11
|
+
s.date = Time.now.strftime('%Y-%m-%d')
|
12
|
+
|
13
|
+
DESCRIPTION = <<-EOF
|
14
|
+
|
15
|
+
This project can be used for backup-related tasks, although it is
|
16
|
+
primarily adjusted to my own personal use cases, so it may not
|
17
|
+
be of much use to other ruby users. Still - in the event that someone
|
18
|
+
wants to give it a try or re-use existing ideas for inspiration,
|
19
|
+
feel free to have a look at it.
|
20
|
+
|
21
|
+
For more documentation have a look at the official
|
22
|
+
homepage, at:
|
23
|
+
|
24
|
+
https://www.rubydoc.info/gems/backup_paradise/
|
25
|
+
|
26
|
+
EOF
|
27
|
+
|
28
|
+
s.summary = DESCRIPTION
|
29
|
+
s.description = DESCRIPTION
|
30
|
+
|
31
|
+
s.executables = Dir['bin/*'].map { |f| File.basename(f) }
|
32
|
+
|
33
|
+
s.authors = ['Robert A. Heiler']
|
34
|
+
s.email = Roebe.email?
|
35
|
+
s.files = Dir['**/*']
|
36
|
+
s.license = 'MIT'
|
37
|
+
s.homepage = 'https://rubygems.org/gems/backup_paradise'
|
38
|
+
|
39
|
+
s.required_ruby_version = '>= '+Roebe.third_most_stable_version_of_ruby
|
40
|
+
s.required_rubygems_version = '>= '+Gem::VERSION
|
41
|
+
s.rubygems_version = '>= '+Gem::VERSION
|
42
|
+
|
43
|
+
s.add_dependency 'colours'
|
44
|
+
s.add_dependency 'convert_global_env'
|
45
|
+
s.add_dependency 'mountpoints'
|
46
|
+
s.add_dependency 'opn'
|
47
|
+
s.add_dependency 'roebe'
|
48
|
+
s.add_dependency 'save_file'
|
49
|
+
|
50
|
+
}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# This file is only for a certain person; it will not be hugely useful
|
6
|
+
# for other ruby users of this gem.
|
7
|
+
# =========================================================================== #
|
8
|
+
require 'backup_paradise/gui/libui/backup_for_ingrid/backup_for_ingrid.rb'
|
9
|
+
|
10
|
+
BackupParadise::GUI::LibUI::BackupForIngrid.new
|
data/bin/backup_paradise
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# This is the variant that should specifically work on windows.
|
6
|
+
# =========================================================================== #
|
7
|
+
require 'backup_paradise'
|
8
|
+
|
9
|
+
BackupParadise::Backup.new(ARGV) { :we_are_on_windows }
|