#!/bin/bash # bkup_dpkg.sh # backup the current list of package for precautionary rollback # created: July 3, 2014 # updated: November 1, 2018 - autocreate dir and provide final message dirbase="/root/BKUP" mkdir -p $dirbase savenum=9 # first delete any tar.gz files older than the last $savenum # to avoid first-run error on num_files=ls numbkups=`find $dirbase -type f |wc -l` if [ $numbkups != "0" ]; then num_files=`ls $dirbase |grep tar.gz |wc -l` while [ $num_files -gt $savenum ] do deleteme=` ls -t $dirbase/*.tar.gz |tail -n1` # echo "deleteme = $deleteme" rm $deleteme # reevaluate the number of files remaining num_files=`ls $dirbase |grep tar.gz |wc -l` done fi # datestring=`date +%Y%m%d | tr '\n|\r' ' ' | sed 's/\s$//'` datestring=$(date +"%Y%m%d") todaybdir="d_$datestring" dirfull=$dirbase dirfull+='/' dirfull+=$todaybdir dirfull+='/' mkdir -p $dirfull pckg=$dirfull srcs=$dirfull rkeys=$dirfull pckg+="package.list${datestring}" srcs+="sources.list${datestring}" rkeys+="repo.keys${datestring}" dpkg --get-selections | grep -v deinstall > $pckg cp /etc/apt/sources.list $srcs apt-key exportall > $rkeys tarfile="$todaybdir.tar.gz" cd $dirbase tar czf $tarfile $todaybdir -C $dirbase 2>/dev/null rm -rf $dirfull echo "Package backup complete. See file ${dirbase}/${tarfile}