aboutsummaryrefslogtreecommitdiffsponsor
path: root/README.md
blob: 307829bbb02a0670c1f42c71e21997294fe11f02 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# Mirror

Mirror free and open-source projects you like with minimal effort.

Use this project as a service to keep a local or hosted copy of the projects
source code or their assets.

## Status

This project is in pre-alpha and under active development.  Expect rapid and
breaking changes.

Planned improvements and known bugs are listed on the project's
[todo](https://git.server.ky/slackcoder/mirror/tree?h=todo) branch.

## Requirements

The following applications are required on your system.

 - Golang >= 1.22.4
 - git
 - rsync

## Verification

Verify the project and its assets using the GPG Key included in the project.

```
gpg --import GPG-KEY
git commit verify-commit HEAD
```

To verify the projects vendored dependencies:

```
go mod verify
```

## Building and Installation

### Slackware

You can create a package using the Slackbuild script provided with the project.

```
cd contrib/slackbuild
sudo sh *.SlackBuild
```

### Other Unix-like systems

Standard practice is to install under /usr/local/sbin

```
go build ./cmd/...
sudo mv mirror /usr/local/sbin
sudo chmod +x /usr/local/sbin/mirror
```

You will then need to integrate it into your system's service management to
your liking.

## Configuration

Configuration is provided via [TOML](https://toml.io) file format.

Refer to the following example.  Mirror will mirror each project at a random
interval between 1 and 24 hours.

```
[global]
# The minimum time to wait before mirroring.
min_interval = "1h"
# The maximum time to wait before mirroring.
max_interval = "24h"

[[mirrors]]
method = "rsync"
from = "rsync://mirrors.kernel.org/slackware/slackware64-current"
to = "/mirror/slackware/slackware64-current"

[[mirrors]]
method = "git"
from = "https://github.com/ytdl-org/youtube-dl"
to = "/srv/git/slackcoder/youtube-dl"
description = "Command-line program to download videos from YouTube.com and other video sites"

[[mirrors]]
method = "github-assets"
from = "https://github.com/ytdl-org/youtube-dl"
to = "/mirror/youtube-dl"
```

Configuration may also be split across files in a directory.  By default
loads configuration from /etc/mirror/mirror.toml and the /etc/mirror/conf.d
directory.