new backupscripts
This commit is contained in:
parent
f64b9cffa3
commit
68ed344892
25
BackupScript/sysmatt.rpi.backup.gtar
Normal file
25
BackupScript/sysmatt.rpi.backup.gtar
Normal file
@ -0,0 +1,25 @@
|
||||
#!/bin/bash
|
||||
# 20140804-1708 Matthew E Hoskins / Twitter: @sysmatt (c) GNU GPL
|
||||
|
||||
set -x # debugging
|
||||
|
||||
bomb () {
|
||||
echo "BOMB: ${1}"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Default destination directory
|
||||
DSTDIR=/home/pi/ServerBackups/DeskPi
|
||||
DEFAULT_DFILE="${DSTDIR}/pi.`uname -n`.`date +%Y%m%d%H%M%S`.backup.tar.gz"
|
||||
|
||||
# If we get a filename on the command line, use it instead of the default.
|
||||
DFILE="${1:-$DEFAULT_DFILE}"
|
||||
DEST_DIR_SANITY=`dirname "${DFILE}"`
|
||||
|
||||
# Make sure the destination exists
|
||||
[ -d "${DEST_DIR_SANITY}" ] || bomb "Destination directory ${DEST_DIR_SANITY} does not exist"
|
||||
|
||||
# Run the tar archive
|
||||
tar --exclude="${DFILE}" --one-file-system -cvzf "${DFILE}" / /boot
|
||||
|
||||
echo "Created archive: ${DFILE}"
|
128
BackupScript/sysmatt.rpi.restore.sd.card
Normal file
128
BackupScript/sysmatt.rpi.restore.sd.card
Normal file
@ -0,0 +1,128 @@
|
||||
#!/bin/bash
|
||||
# 20140804-1708 Matthew E Hoskins / Twitter: @sysmatt (c) GNU GPL
|
||||
|
||||
SDCARD_DEVICE="${1:?You must specify one SD CARD DEVICE to destroy}"
|
||||
PI_BACKUP_SLASH="${2:?You must specify one PI BACKUP SLASH GTAR file}"
|
||||
shift; shift;
|
||||
# Any remaining args are added to TAR command line
|
||||
|
||||
# Extra operations which can be done in ENV Vars
|
||||
# PI_OVERWRITE_ETC_HOSTNAME="new-hostname"
|
||||
# PI_OPENVPN_CONFIG_FILE="/some/source/client.conf"
|
||||
|
||||
|
||||
|
||||
# Temp random mountpoint under /tmp
|
||||
MOUNTPOINT="/tmp/pi.sd.${RANDOM}${$}"
|
||||
|
||||
bomb (){
|
||||
echo "BOMB: ${1}"
|
||||
exit 1
|
||||
}
|
||||
|
||||
[ -x "/sbin/mkfs.vfat" ] || bomb "/sbin/mkfs.vfat Missing"
|
||||
|
||||
echo ""
|
||||
echo "=== ${SDCARD_DEVICE} Current Partition Table - To be destroyed! ==="
|
||||
parted --script ${SDCARD_DEVICE} "print"
|
||||
echo ""
|
||||
read -p "PRESS ENTER to DESTROY ${SDCARD_DEVICE}, Press CTRL-c to abort"
|
||||
|
||||
parted --script "${SDCARD_DEVICE}" "mklabel msdos"
|
||||
parted --script "${SDCARD_DEVICE}" "mkpart primary fat16 1MiB 64MB"
|
||||
parted --script "${SDCARD_DEVICE}" "mkpart primary ext4 64MB -1s"
|
||||
parted --script "${SDCARD_DEVICE}" print
|
||||
mkfs.vfat "${SDCARD_DEVICE}1"
|
||||
mkfs.ext4 -F -j "${SDCARD_DEVICE}2"
|
||||
mkdir -p "${MOUNTPOINT}"
|
||||
mount "${SDCARD_DEVICE}2" "${MOUNTPOINT}"
|
||||
mkdir -p "${MOUNTPOINT}/boot"
|
||||
mount "${SDCARD_DEVICE}1" "${MOUNTPOINT}/boot"
|
||||
df -h "${MOUNTPOINT}"
|
||||
df -h "${MOUNTPOINT}/boot"
|
||||
read -p "Press ENTER To begin image restore"
|
||||
tar $@ -xvzf "${PI_BACKUP_SLASH}" -C "${MOUNTPOINT}"
|
||||
|
||||
# Begin NOOBS fixup / Recommended by @KevinSidwar / 20140829-1744-MEH
|
||||
ORIG_SLASHDEV_FOUND=`cat "${MOUNTPOINT}/etc/fstab"| grep " / " |grep -v "^#" |awk '{ print $1; }'`
|
||||
ORIG_BOOTDEV_FOUND=`cat "${MOUNTPOINT}/etc/fstab"| grep " /boot " |grep -v "^#" |awk '{ print $1; }'`
|
||||
|
||||
# Hardcoded
|
||||
NEW_SLASHDEV="/dev/mmcblk0p2"
|
||||
NEW_BOOTDEV="/dev/mmcblk0p1"
|
||||
|
||||
# Defaults just in case the above search of fstab is a miss
|
||||
ORIG_SLASHDEV="${ORIG_SLASHDEV_FOUND:-$NEW_SLASHDEV}"
|
||||
ORIG_BOOTDEV="${ORIG_BOOTDEV_FOUND:-$NEW_BOOTDEV}"
|
||||
|
||||
|
||||
echo "ORIG_SLASHDEV[${ORIG_SLASHDEV}] NEW_SLASHDEV[${NEW_SLASHDEV}] ORIG_BOOTDEV[${ORIG_BOOTDEV}] NEW_BOOTDEV[${NEW_BOOTDEV}]"
|
||||
|
||||
FILE_FSTAB="${MOUNTPOINT}/etc/fstab"
|
||||
FILE_CMDLINE="${MOUNTPOINT}/boot/cmdline.txt"
|
||||
FILE_OS_CONFIG_JSON="${MOUNTPOINT}/boot/os_config.json"
|
||||
|
||||
if [ "${ORIG_SLASHDEV}" != "${NEW_SLASHDEV}" -o "${ORIG_BOOTDEV}" != "${NEW_BOOTDEV}" ]
|
||||
then
|
||||
echo "CONFIGURATION CONVERSION NECESSARY - Devices do not match, modifying files. "
|
||||
|
||||
THISFILE="${FILE_FSTAB}"
|
||||
if [ -e "${THISFILE}" ]
|
||||
then
|
||||
echo "Fixing ${THISFILE}"
|
||||
cp -f "${THISFILE}" "${THISFILE}.old"
|
||||
cat "${THISFILE}.old" |sed -e "s#${ORIG_SLASHDEV}#%NEW_SLASHDEV%# ; s#${ORIG_BOOTDEV}#%NEW_BOOTDEV%#" > "${THISFILE}.i"
|
||||
cat "${THISFILE}.i" |sed -e "s#%NEW_SLASHDEV%#${NEW_SLASHDEV}# ; s#%NEW_BOOTDEV%#${NEW_BOOTDEV}#" >"${THISFILE}"
|
||||
rm -f "${THISFILE}.i"
|
||||
fi
|
||||
|
||||
THISFILE="${FILE_CMDLINE}"
|
||||
if [ -e "${THISFILE}" ]
|
||||
then
|
||||
echo "Fixing ${THISFILE}"
|
||||
cp -f "${THISFILE}" "${THISFILE}.old"
|
||||
cat "${THISFILE}.old" |sed -e "s#${ORIG_SLASHDEV}#%NEW_SLASHDEV%# ; s#${ORIG_BOOTDEV}#%NEW_BOOTDEV%#" > "${THISFILE}.i"
|
||||
cat "${THISFILE}.i" |sed -e "s#%NEW_SLASHDEV%#${NEW_SLASHDEV}# ; s#%NEW_BOOTDEV%#${NEW_BOOTDEV}#" >"${THISFILE}"
|
||||
rm -f "${THISFILE}.i"
|
||||
fi
|
||||
|
||||
THISFILE="${FILE_OS_CONFIG_JSON}"
|
||||
if [ -e "${THISFILE}" ]
|
||||
then
|
||||
echo "Fixing ${THISFILE}"
|
||||
cp -f "${THISFILE}" "${THISFILE}.old"
|
||||
cat "${THISFILE}.old" |sed -e "s#${ORIG_SLASHDEV}#%NEW_SLASHDEV%# ; s#${ORIG_BOOTDEV}#%NEW_BOOTDEV%#" > "${THISFILE}.i"
|
||||
cat "${THISFILE}.i" |sed -e "s#%NEW_SLASHDEV%#${NEW_SLASHDEV}# ; s#%NEW_BOOTDEV%#${NEW_BOOTDEV}#" >"${THISFILE}"
|
||||
rm -f "${THISFILE}.i"
|
||||
fi
|
||||
|
||||
fi
|
||||
# End Noobs fixup
|
||||
if [ -n "${PI_OVERWRITE_ETC_HOSTNAME}" ]
|
||||
then
|
||||
# Write a new /etc/hostname
|
||||
echo "Writing new /etc/hostname with [${PI_OVERWRITE_ETC_HOSTNAME}] to ${MOUNTPOINT}/etc/hostname"
|
||||
echo "${PI_OVERWRITE_ETC_HOSTNAME}" > "${MOUNTPOINT}/etc/hostname"
|
||||
fi
|
||||
|
||||
if [ -e "${PI_OPENVPN_CONFIG_FILE}" ]
|
||||
then
|
||||
echo "Writing OpenVPN config [${PI_OPENVPN_CONFIG_FILE}] to ${MOUNTPOINT}/etc/openvpn/"
|
||||
rm -f ${MOUNTPOINT}/etc/openvpn/*.conf
|
||||
cp -f "${PI_OPENVPN_CONFIG_FILE}" "${MOUNTPOINT}/etc/openvpn/"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo ""
|
||||
echo =DONE=
|
||||
echo "The SD is mounted at: ${MOUNTPOINT}"
|
||||
echo "Now would be a good time to make modifications in another shell session..."
|
||||
read -p "Press ENTER To unmount or CTRL-c to exit leaving mounted."
|
||||
echo ""
|
||||
echo "Working. This may take a moment..."
|
||||
echo ""
|
||||
set -x
|
||||
umount "${MOUNTPOINT}/boot"
|
||||
umount "${MOUNTPOINT}"
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user