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
97
98
99
100
101
102
|
# 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.
## 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 depnendencies:
```
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/bin
```
sudo GOBIN=/usr/local/sbin go build ./cmd/...
```
## Configuration
Configuration is provided via json file format.
- `min-interval` is the minimum time to wait before mirroring a project.
- `max-interval` is the maximum time to wait before mirroring a project.
- `mirrors` is the list of projects you want mirrored and how.
- `rsync` for mirroring files.
- `git` for mirroring project source code.
- `github-assets` for mirroring Github project assets.
Refer to the following example. Mirror will mirror each project at a random
interval between 1 and 24 hours.
```
{
"min-interval": "1h",
"max-interval": "24h",
"mirrors": [
{
"method": "rsync",
"from": "rsync://mirrors.kernel.org/slackware/slackware64-15.0",
"to": "/mirror/slackware/slackware64-15.0"
},
{
"method": "rsync",
"from": "rsync://mirrors.kernel.org/slackware/slackware-iso/slackware64-15.0-iso",
"to": "/mirror/slackware/slackware64-15.0-iso"
},
{
"method": "rsync",
"from": "rsync://mirrors.kernel.org/slackware/slackware64-current",
"to": "/mirror/slackware/slackware64-current"
},
{
"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"
},
{
"method": "github-assets",
"from": "https://github.com/ytdl-org/youtube-dl",
"to": "/mirror/youtube-dl"
}
]
}
```
|