--- /dev/null
+#! /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