Bug#736503: flash-kernel: Backup mtdblocks after every flash-kernel execution
Package: flash-kernel
Version: 3.13
Severity: wishlist
Dear Mantainer,
After solving a boot problem I had, I've considered very useful to have an up-to-date backup of mtdblock partitions, that could be used to restore the SPI NOR Flash in case of disaster. I think this would be useful to pretty much everyone, not just me.
To achieve this, and not wanting to fiddle with flash-kernel source at this point, I've created the following script (pardon my poor scripting skills) and linked to it on /etc/initramfs/post-update.d/, but I think it should be integrated in flash-kernel.
I understand the impact in terms of flash-kernel execution time, but, IMO, is well worth it.
Could you please consider including this functionality in flash-kernel?
Thank you!
Ruben
---------- Begin of Script ----------
#!/bin/sh
BACKUP_KEEP_AT_MOST=5
BACKUP_DIRECTORY=/var/backups
BACKUP_SUBDIRECTORY=flash-kernel
backup_mtdblocks() {
[ ! -d "$BACKUP_DIRECTORY" ] && return 0
local PARTITION_COUNT=$('ls' -1 /dev/mtdblock* | 'wc' -l)
if [ "$PARTITION_COUNT" != "0" ]; then
local TIME=$(date +"%Y-%m-%d_%H-%M-%S")
rm -fr $BACKUP_DIRECTORY/$BACKUP_SUBDIRECTORY/$TIME > /dev/null 2>&1
mkdir -p $BACKUP_DIRECTORY/$BACKUP_SUBDIRECTORY/$TIME > /dev/null 2>&1
echo "Backing up $PARTITION_COUNT /dev/mtdblock* partition(s) to $BACKUP_DIRECTORY/$BACKUP_SUBDIRECTORY/$TIME..."
echo "Generated at $TIME. Contents are as follows:" > $BACKUP_DIRECTORY/$BACKUP_SUBDIRECTORY/$TIME/description
for PARTITION in $('ls' -dtr1 /dev/mtdblock*); do
local FILE=$('basename' $PARTITION)
echo -n "$FILE... "
cat $PARTITION > $BACKUP_DIRECTORY/$BACKUP_SUBDIRECTORY/$TIME/$FILE
echo "Ok!"
echo -n "$FILE: " >> $BACKUP_DIRECTORY/$BACKUP_SUBDIRECTORY/$TIME/description
'file' -b $BACKUP_DIRECTORY/$BACKUP_SUBDIRECTORY/$TIME/$FILE >> $BACKUP_DIRECTORY/$BACKUP_SUBDIRECTORY/$TIME/description
done
fi
echo -n "Keeping only last $BACKUP_KEEP_AT_MOST backups... "
'ls' -dtr1 $BACKUP_DIRECTORY/$BACKUP_SUBDIRECTORY/*/ | 'head' -n -$BACKUP_KEEP_AT_MOST | 'xargs' rm -fr
echo "Ok! Current backups are:"
'ls' -dtr1 $BACKUP_DIRECTORY/$BACKUP_SUBDIRECTORY/*/ | sort
echo "Done!"
return 0
}
backup_mtdblocks
exit $?
---------- End of Script ----------
-- System Information:
Debian Release: jessie/sid
APT prefers unstable
APT policy: (500, 'unstable')
Architecture: armel (armv5tel)
Kernel: Linux 3.12-1-kirkwood
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages flash-kernel depends on:
ii devio 1.2-1+b1
ii initramfs-tools 0.115
ii linux-base 3.5
flash-kernel recommends no packages.
Versions of packages flash-kernel suggests:
ii u-boot-tools 2013.10-3
-- no debconf information
Reply to: