Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Mirroring script for Raspbian repos
#!/bin/bash
#
#
## Setting variables with explanations.
# Set root working directory for where you want to store your mirrors
MIRRORBASE=/home/kenneth/mirror
mkdir -p $MIRRORBASE
#
# Don't touch the user's keyring, have our own instead
#
export GNUPGHOME=$MIRRORBASE/keyring
mkdir -p $GNUPGHOME
wget -O $GNUPGHOME/raspberrypi.gpg.key http://archive.raspberrypi.org/debian/raspberrypi.gpg.key
gpg --no-default-keyring --keyring $GNUPGHOME/trustedkeys.gpg --import $GNUPGHOME/raspberrypi.gpg.key
# Arch= -a # Architecture. For Ubuntu can be i386, powerpc or amd64.
# sparc, only starts in dapper, it is only the later models of sparc.
#
arch=armhf
# Minimum Ubuntu system requires main, restricted
# Section= -s # Section (One of the following - main/restricted/universe/multiverse).
# You can add extra file with $Section/debian-installer. ex: main/debian-installer,universe/debian-installer,multiverse/debian-installer,restricted/debian-installer
#
section=main,ui
# Release= -d # Release of the system (...Hardy, Intrepid... Lucid, Precise, Quantal, Saucy, Trusty ), and the -updates and -security ( -backports can be added if desired)
# List of updated releases in: https://wiki.ubuntu.com/Releases
#
release=stretch
# Server= -h # Server name, minus the protocol and the path at the end
# CHANGE "*" to equal the mirror you want to create your mirror from. au. in Australia ca. in Canada.
# This can be found in your own /etc/apt/sources.list file, assuming you have Ubuntu installed.
#
server=archive.raspberrypi.org
# Dir= -r # Path from the main server, so http://my.web.server/$dir, Server dependant
#
inPath=/debian
# Proto= --method= # Protocol to use for transfer (http, ftp, hftp, rsync)
# Choose one - http is most usual the service, and the service must be available on the server you point at.
#
proto=http
# Outpath= # Directory to store the mirror in
# Make this a full path to where you want to mirror the material.
#
outPath=$MIRRORBASE/archive.raspberrypi.org/debian
# The --nosource option only downloads debs and not deb-src's
# The --progress option shows files as they are downloaded
# --source \ in the place of --no-source \ if you want sources also.
# --nocleanup Do not clean up the local mirror after mirroring is complete. Use this option to keep older repository
# Start script
#
debmirror -a $arch \
--no-source \
-s $section \
-h $server \
-d $release \
-r $inPath \
--progress \
--method=$proto \
$outPath
# Mirror the raspbian repo using rsync because it's supported and more complete
#
# THIS WILL TAKE A STUPID LONG TIME THE FIRST TIME YOU RUN IT
rsync --archive --delete --delete-delay --delay-updates -v archive.raspbian.org::archive $MIRRORBASE/archive.raspbian.org
echo
echo "Mirrors created; now symlink them to your http server's folder"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.