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.
|