Skip to content

Commit b21dee6

Browse files
committed
readme: Tidy up & improve
Signed-off-by: Paul Barker <paul@pbarker.dev> Ref: #25
1 parent 4f088d4 commit b21dee6

File tree

1 file changed

+69
-45
lines changed

1 file changed

+69
-45
lines changed

README.md

+69-45
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,40 @@
1+
# mirrorshades
2+
13
<!--
24
Copyright (c) 2020-2022 Paul Barker <paul@pbarker.dev>
35
SPDX-License-Identifier: CC-BY-4.0
46
-->
57

6-
[![pre-commit.ci status](https://results.pre-commit.ci/badge/github/unnecessary-abstraction/mirrorshades/main.svg)](https://results.pre-commit.ci/latest/github/unnecessary-abstraction/mirrorshades/main)
7-
[![PyPI](https://img.shields.io/pypi/v/mirrorshades)](https://pypi.org/project/mirrorshades/)
8-
9-
# mirrorshades
10-
11-
[mirrorshades](https://github.com/unnecessary-abstraction/mirrorshades)
12-
is a tool for mirroring data from remote sources.
8+
[![pre-commit.ci status][pre-commit badge]][pre-commit link]
9+
[![PyPI][pypi badge]][pypi link]
1310

14-
Copyright (c) 2020-2022 Paul Barker.
11+
[pre-commit badge]: https://results.pre-commit.ci/badge/github/unnecessary-abstraction/mirrorshades/main.svg
12+
[pre-commit link]: https://results.pre-commit.ci/latest/github/unnecessary-abstraction/mirrorshades/main
13+
[pypi badge]: https://img.shields.io/pypi/v/mirrorshades
14+
[pypi link]: https://pypi.org/project/mirrorshades/
1515

16-
In this repository,
17-
code files are distributed under the
18-
[Apache 2.0 License](https://tldrlegal.com/license/apache-license-2.0-(apache-2.0)),
19-
documentation files are distributed under the
20-
[CC BY 4.0 License](https://tldrlegal.com/license/creative-commons-attribution-4.0-international-(cc-by-4))
21-
and trivial data files are distributed under the
22-
[CC0 1.0 License](https://tldrlegal.com/license/creative-commons-cc0-1.0-universal).
23-
24-
## Summary
16+
An easily extensible tool for mirroring data from git repositories, cloud
17+
storage, mail servers and other remote sources.
2518

2619
Mirrorshades was written to help maintain mirrors and backups by regularly
27-
pulling content from remote locations. Tools such as rsync, rclone, `git clone
28-
--mirror`, etc already exist and can easily be used to create local mirrors of
29-
remote content. What mirrorshades provides is a single command to update a set
30-
of mirrors of different types of content from various remote sources. For
31-
example, the author uses mirrorshades to sync content from Dropbox, GitLab and
32-
multiple mail servers to a local mirror on a nightly basis for disaster
33-
recovery purposes.
34-
35-
All the details of how to pull down the desired content are stored in the
36-
configuration file, it is intended that command line arguments to mirrorshades
37-
remain as minimal as possible and that the config file is the single source of
38-
truth to control the operation of the utility. This makes it very easy to invoke
39-
mirrorshades regularly and reliably using cron, systemd timers or any other
40-
automation mechanism.
20+
pulling content from remote locations. Tools such as rsync, rclone and `git
21+
clone --mirror` already exist, but what this tool provides is integration and
22+
automation. A single invocation of mirrorshades can update a set of mirrors of
23+
different types of content from various remote sources. For example, the author
24+
uses this tool to sync content from Dropbox, GitLab and multiple mail servers
25+
to a local mirror on a nightly basis for disaster recovery purposes.
26+
27+
A configuration file is used to control the operation of mirrorshades, and
28+
command line arguments are kept to a minimum. This makes it easy to invoke the
29+
tool regularly and reliably. In line with the [Unix philosophy][], mirrorshades
30+
does not include any way to schedule when mirrors are updated. Instead, it is
31+
expected that [systemd timers][] or a cron implementation (such as [cronie][] or
32+
[yacron][]) will be used if scheduling is required.
33+
34+
[Unix philosophy]: https://en.wikipedia.org/wiki/Unix_philosophy
35+
[systemd timers]: https://opensource.com/article/20/7/systemd-timers
36+
[cronie]: https://github.com/cronie-crond/cronie
37+
[yacron]: https://pypi.org/project/yacron/
4138

4239
Mirrorshades is intended to be trivial to extend to handle new types of remote
4340
source. Users familiar with Python are encouraged to look at the source code
@@ -48,25 +45,32 @@ appreciate them!
4845

4946
## Installation
5047

51-
Mirrorshades is published on [PyPI](https://pypi.org/) so the following command
52-
is usually sufficient to install the application:
48+
Mirrorshades is published on [PyPI][] so the following command is usually
49+
sufficient to install the application:
5350

54-
```
51+
[pypi]: https://pypi.org/
52+
53+
```shell
5554
pip install mirrorshades
5655
```
5756

5857
The following mirroring agents have additional dependencies which must be
5958
installed if you wish to use them in your configuration:
6059

61-
* `git`: Requires the [git](https://git-scm.com/) command line tool.
60+
* `git`: Requires the [git][] command line tool.
6261

63-
* `github`: Requires the Python module [PyGithub](https://pypi.org/project/PyGithub/)
64-
and the [git](https://git-scm.com/) command line tool.
62+
* `github`: Requires the Python module [PyGithub][] and the [git][] command line
63+
tool.
6564

66-
* `gitlab`: Requires the Python module [python-gitlab](https://pypi.org/project/python-gitlab/)
67-
and the [git](https://git-scm.com/) command line tool.
65+
* `gitlab`: Requires the Python module [python-gitlab][] and the [git][] command
66+
line tool.
6867

69-
* `rclone`: Requires the [rclone](https://rclone.org/) command line tool.
68+
* `rclone`: Requires the [rclone][] command line tool.
69+
70+
[git]: https://git-scm.com/
71+
[pygithub]: https://pypi.org/project/PyGithub/
72+
[python-gitlab]: https://pypi.org/project/python-gitlab/
73+
[rclone]: https://rclone.org/
7074

7175
## Usage
7276

@@ -75,7 +79,7 @@ Command line arguments may optionally be used to specify the config file to use
7579
and to select one source defined in the config file to mirror (instead of
7680
mirroring all sources defined in the config file).
7781

78-
```
82+
```text
7983
usage: mirrorshades [-h] [--source SOURCE] [--version] [config_path]
8084
8185
Data mirroring tool
@@ -268,15 +272,35 @@ sources:
268272
attempts: 5
269273
```
270274
275+
## Maintainers
276+
277+
* Paul Barker [:envelope:](mailto:paul@pbarker.dev)
278+
271279
## Contribution
272280
273281
mirrorshades is developed on GitHub at
274282
<https://github.com/unnecessary-abstraction/mirrorshades>.
275283
276284
If you find any bugs or have a feature request feel free to open a ticket in the
277-
[issue tracker](https://github.com/unnecessary-abstraction/mirrorshades/issues).
285+
[issue tracker][].
278286
279287
To submit patches to mirrorshades please fork the repository on GitHub and open
280-
a [pull request](https://github.com/unnecessary-abstraction/mirrorshades/pulls)
281-
where your changes are ready to merge. Pull requests should generally be
282-
targeted at the `main` branch.
288+
a [pull request][] where your changes are ready to merge. Pull requests should
289+
generally be targeted at the `main` branch.
290+
291+
[issue tracker]: https://github.com/unnecessary-abstraction/mirrorshades/issues
292+
[pull request]: https://github.com/unnecessary-abstraction/mirrorshades/pulls
293+
294+
## License
295+
296+
Copyright (c) 2020-2023, mirrorshades contributors.
297+
298+
* Code files are distributed under the [Apache-2.0 License][].
299+
300+
* Documentation files are distributed under the [CC-BY-4.0 License][].
301+
302+
* Trivial data files are distributed under the [CC0-1.0 License][].
303+
304+
[Apache-2.0 License]: https://tldrlegal.com/license/apache-license-2.0-(apache-2.0)
305+
[CC-BY-4.0 License]: https://tldrlegal.com/license/creative-commons-attribution-4.0-international-(cc-by-4)
306+
[CC0-1.0 License]: https://tldrlegal.com/license/creative-commons-cc0-1.0-universal

0 commit comments

Comments
 (0)