While trying to backup to a newly created tce2, I got an error stating "Error: Unable to rename mydata.tgz to mydatabk.tgz". Strangely, subsequent attempts to backup via Control Panel tool revealed that the backup target had been changed to 'sdd1/tce2-b'. Changing the backup device listed in /opt/.backup_device back to sdd1/tce2 and retrying ended with the same results..."Error: Unable to rename mydata.tgz to mydatabk.tgz", and /opt/.backup_device now listed sdd1/tce2-b.
After examining filetool.sh, I realized the reason for the failure...mydata.tgz did not exist yet...because this was a new TCE that I had just booted into for the first time...and filetool.sh does not check if mydata.tgz or mydata.tgz.bfe exist before trying to rename them to mydatabk.tgz or mydatabk.tgz.bfe, respectively.
The fact that filetool.sh dumps the standard error from the mv operation to /dev/nul makes it a little more cryptic and hard to figure out what the cause is as well. Consider "mv: can't rename 'mydata.tgz': No such file or directory.", what get's dumped to /dev/null in this instance, vs. "Error: Unable to rename mydata.tgz to mydatabk.tgz", what is shown instead.
To make matters worse, anyone encountering this bug is then told to check /tmp/backup_status for clues, but since standard error was dumped to /dev/null instead of /tmp/backup_status, /tmp/backup_status does not exist!
I was able to fix this bug by testing for the existence of mydata.tgz or mydata.tgz.bfe before attempting to rename the file. This allows the backup to be created and seems to have resolved the strange side-effect where the target backup device was getting -b appended to it. I also dump standard error to /tmp/backup_status in the event that some actual problem prevents the mv operation from completing, one isn't left scratching their head.
The original code and the modified code follow.
Excerpt from original filetool.sh
if [ "$BACKUP" ] ; then
sed -i /^$/d /opt/.filetool.lst
if [ "$SAFE" ]; then
sudo mv -f $MOUNTPOINT/"$FULLPATH"/${MYDATA}.tgz $MOUNTPOINT/"$FULLPATH"/${MYDATA}bk.tgz 2>/dev/null || sudo mv -f $MOUNTPOINT/"$FULLPATH"/${MYDATA}.tgz.bfe $MOUNTPOINT/"$FULLPATH"/${MYDATA}bk.tgz.bfe 2>/dev/null
if [ "$?" != 0 ]; then
echo "Error: Unable to rename ${MYDATA}.tgz to ${MYDATA}bk.tgz"
exit 2
fi
fi
Excerpt from modified filetool.sh with Fix
if [ "$BACKUP" ] ; then
sed -i /^$/d /opt/.filetool.lst
if [ "$SAFE" ]; then
if [ -r $MOUNTPOINT/"$FULLPATH"/${MYDATA}.tgz.bfe -o -r $MOUNTPOINT/"$FULLPATH"/${MYDATA}.tgz ]; then
echo -n "${BLUE}Copying existing backup to ${GREEN}$MOUNTPOINT/"$FULLPATH"/${MYDATA}bk.[tgz|tgz.bfe]${NORMAL} .. "
sudo mv -f $MOUNTPOINT/"$FULLPATH"/${MYDATA}.tgz $MOUNTPOINT/"$FULLPATH"/${MYDATA}bk.tgz 2>/tmp/backup_status || sudo mv -f $MOUNTPOINT/"$FULLPATH"/${MYDATA}.tgz.bfe $MOUNTPOINT/"$FULLPATH"/${MYDATA}bk.tgz.bfe 2>/tmp/backup_status
echo "${GREEN}Done."
if [ "$?" != 0 ]; then
echo "Error: Unable to rename ${MYDATA}.tgz to ${MYDATA}bk.tgz"
exit 2
fi
else
echo "Neither ${MYDATA}.tgz nor ${MYDATA}.tgz.bfe exist. Proceeding with creation of initial backup ..."
fi
fi
edited title to more accurately reflect suggestion.