aboutsummaryrefslogtreecommitdiffsponsor

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