#! /bin/bash set -ex t=/tmp/backup-rpm.$$ trap "rm -rf $t" EXIT rm -rf $t mkdir $t rpm -qal|sort -u >$t/rpm-qal (set +e;rpm -Va >$t/rpm-Va) rpm -qa|sort >$t/rpm-qa ( (find / -xdev -print -type d -print;cat $t/rpm-qal)|sort|uniq -u sed 's#^[^/]*##' <$t/rpm-Va touch $t/patch.list echo $t/rpm-qa for orig in `find / -xdev -name "*-orig"`;do base="`echo $orig|sed 's/-orig$//'`" if [ ! -f "$base" ];then continue;fi (set +e;diff -u "$orig" "$base" >"$base".patch) echo "$orig" echo "$base" echo "$base".patch|tee -a $t/patch.list done )|grep -v '^\(/boot/\|/dev/\|/etc/rc[.]d/rc[0-9][.]d/\|/lib/modules/[^/]*/modules[.]\|/root/\|/tmp/\|/usr/lib/perl5/\|/usr/src/redhat/RPMS/\|/var/cache/\|/var/lib/rpm/\|/var/log/\|/var/run/\|/var/spool/\|/var/lock/\|/usr/share/ntop/\|/usr/lib/locale/locale-archive\|/var/lib/slocate/slocate.db\)' \ |grep -v '^(contains no files)$' \ |sort -u|(set +e;xargs tar cvvf -) cat $t/patch.list|xargs rm -f