[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: