Files
bpfire/src/scripts/backupiso
Adolf Belka c799e441a4 backupiso: Update to ISO file naming - bug#12932
- commit https://git.ipfire.org/?p=ipfire-2.x.git;a=commit;h=fbd0608c2cb5372fff7857065ec7e605b1bf9cf7
   aligned the ISO file name to the image file name. This change also needed to be added
   to backupiso as the filename is used to download the iso from the IPFire server when
   creating an ISO backup.

Fixes: Bug#12932
Suggested-by: Matthias Fischer <matthias.fischer@ipfire.org>
Tested-by: Adolf Belka <adolf.belka@ipfire.org>
Signed-off-by: Adolf Belka <adolf.belka@ipfire.org>
Reviewed-by: Bernhard Bitsch <bbitsch@ipfire.org>
2022-09-19 12:36:52 +00:00

126 lines
3.7 KiB
Bash

#!/bin/sh
###############################################################################
# #
# IPFire.org - A linux based firewall #
# Copyright (C) 2007-2022 IPFire Team <info@ipfire.org> #
# #
# This program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
# the Free Software Foundation, either version 3 of the License, or #
# (at your option) any later version. #
# #
# This program is distributed in the hope that it will be useful, #
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
# GNU General Public License for more details. #
# #
# You should have received a copy of the GNU General Public License #
# along with this program. If not, see <http://www.gnu.org/licenses/>. #
# #
###############################################################################
# FIXME: edit this lines before release
IPFVER=2.27
COREVER=$(cat /opt/pakfire/db/core/mine)
arch=$(uname -m)
case "${arch}" in
aarch64|x86_64)
;;
*)
echo "Arch is not supported" >&2
exit 1
;;
esac
URL="https://downloads.ipfire.org/releases/ipfire-2.x/$IPFVER-core$COREVER/"
ISO="ipfire-$IPFVER-core$COREVER-$arch.iso"
makeiso() {
local dir="${1}"
local output="${2}"
local args=
# Add EFI options when EFI image is present
if [ -e "${dir}/boot/isolinux/efiboot.img" ]; then
args="${args} -eltorito-alt-boot -e boot/isolinux/efiboot.img -no-emul-boot"
fi
# Compose ISO
mkisofs -J -r -V "IPFire ${IPFVER} ${arch}" \
-b boot/isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table \
-c boot/isolinux/boot.catalog \
${args} ${dir} > ${output}
# Add DOS paritition table
if [ -e "${dir}/boot/isolinux/efiboot.img" ]; then
isohybrid --uefi ${output}
else
isohybrid ${output}
fi
return 0
}
if [ -z $1 ]; then
echo usage: $0 backup-file
exit
fi
TS=$1
mkdir -p /var/tmp/backupiso
cd /var/tmp/backupiso
if [ ! -f ${ISO} ]
then
echo "Fetching ${URL}${ISO}"
wget --quiet -c ${URL}${ISO}
fi
echo "Fetching ${URL}${ISO}.b2"
wget --quiet -O ${ISO}.b2 ${URL}${ISO}.b2
echo "Checking BLAKE2 checksum of ${ISO}"
b2sum --status -c ${ISO}.b2
if [ $? -eq 0 ] || [ $? -eq 24 ]
then
echo "BLAKE2 checksum is OK"
else
echo "BLAKE2 checksum mismatch"
echo "Fetching again ${URL}${ISO}"
wget --quiet -O ${ISO} ${URL}${ISO}
echo "Checking BLAKE2 checksum of ${ISO} again"
b2sum --status -c ${ISO}.b2
if [ $? -eq 0 ] || [ $? -eq 24 ]
then
echo "BLAKE2 checksum is OK"
else
echo "BLAKE2 checksum mismatch"
echo "aborting backup because BLAKE2 checksum mismatch"
exit 1
fi
fi
rm ${ISO}.b2
echo "Remastering iso"
mkdir -p backupiso.tmp.${TS}
mount -o loop ${ISO} backupiso.tmp.${TS}
cp -pr backupiso.tmp.${TS} backupiso.${TS}
umount backupiso.tmp.${TS}
rm -r backupiso.tmp.${TS}
# Copy backup file to disk
cp "/var/ipfire/backup/${TS}.ipf" "backupiso.${TS}/backup.ipf"
# Add a version tag
touch "backupiso.${TS}/backup-${TS}.media"
echo "Running mkisofs"
makeiso backupiso.${TS} $(basename ${ISO} .iso)-${TS}.iso
echo "Cleaning up"
rm -rf backupiso.${TS}