summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Bächler <thomas@archlinux.org>2008-02-03 18:27:29 +0100
committerThomas Bächler <thomas@archlinux.org>2008-02-03 18:27:29 +0100
commit410d14a1f9f22bf3f52a58f732305020c29e3141 (patch)
tree3863adc6cb921da578d7a0c41c3796c5463a7333
parent9a4215ec61c7ae438695d51651665cc0e2fa0a28 (diff)
downloaddbscripts-410d14a1f9f22bf3f52a58f732305020c29e3141.tar.gz
dbscripts-410d14a1f9f22bf3f52a58f732305020c29e3141.tar.xz
Adding cleanup scripts so they don't get lost:
cleanup.sh: Iterates through the db file and lists dupes and missing files. cleanup2.sh: Iterates through the ftp directory and finds files that don't correspond to any package in the db. They currently only list files, but don't delete anything.
-rwxr-xr-xcleanup-scripts/cleanup.sh53
-rwxr-xr-xcleanup-scripts/cleanup2.sh46
2 files changed, 99 insertions, 0 deletions
diff --git a/cleanup-scripts/cleanup.sh b/cleanup-scripts/cleanup.sh
new file mode 100755
index 0000000..cdb0cef
--- /dev/null
+++ b/cleanup-scripts/cleanup.sh
@@ -0,0 +1,53 @@
+#!/bin/bash
+
+usage() {
+ echo "Usage: $0 repo architecture"
+}
+
+getpkgname() {
+ local tmp
+
+ tmp=${1##*/}
+ tmp=${tmp%.pkg.tar.gz}
+ tmp=${tmp%-i686}
+ tmp=${tmp%-x86_64}
+ echo ${tmp%-*-*}
+}
+
+FTPBASEDIR="/home/ftp"
+FTPDIR=${FTPBASEDIR}/${1}/os/${2}
+DBFILE=${FTPDIR}/${1}.db.tar.gz
+MISSINGFILES=""
+DELETEFILES=""
+
+if [ $# -lt 2 -o ! -f ${DBFILE} ]; then
+ usage
+ exit 1
+fi
+
+TMPDIR=$(mktemp -d /tmp/cleanup.XXXXXX) || exit 1
+
+cd ${TMPDIR}
+tar xzf ${DBFILE}
+for pkg in *; do
+ filename=$(grep -A1 '^%FILENAME%$' ${pkg}/desc | tail -n1)
+ [ -z "${filename}" ] && filename="${pkg}.pkg.tar.gz"
+ if [ ! -f ${FTPDIR}/${filename} ]; then
+ MISSINGFILES="${MISSINGFILES} ${filename}"
+ else
+ pkgname="$(getpkgname ${filename})"
+ for otherfile in ${FTPDIR}/${pkgname}-*; do
+ otherfile="$(basename ${otherfile})"
+ if [ "${otherfile}" != "${filename}" -a "${pkgname}" = "$(getpkgname ${otherfile})" ]; then
+ DELETEFILES="${DELETEFILES} ${otherfile}"
+ fi
+ done
+ fi
+done
+
+cd - >/dev/null
+rm -rf ${TMPDIR}
+
+echo -ne "DIRECTORY:\n${FTPDIR}\n\n"
+echo -ne "DELETEFILES:\n${DELETEFILES}\n\n"
+echo -ne "MISSINGFILES:\n${MISSINGFILES}\n\n"
diff --git a/cleanup-scripts/cleanup2.sh b/cleanup-scripts/cleanup2.sh
new file mode 100755
index 0000000..4a79654
--- /dev/null
+++ b/cleanup-scripts/cleanup2.sh
@@ -0,0 +1,46 @@
+#!/bin/bash
+
+usage() {
+ echo "Usage: $0 repo architecture"
+}
+
+getpkgname() {
+ local tmp
+
+ tmp=${1##*/}
+ tmp=${tmp%.pkg.tar.gz}
+ tmp=${tmp%-i686}
+ tmp=${tmp%-x86_64}
+ echo ${tmp%-*-*}
+}
+
+FTPBASEDIR="/home/ftp"
+FTPDIR=${FTPBASEDIR}/${1}/os/${2}
+DBFILE=${FTPDIR}/${1}.db.tar.gz
+OBSOLETEFILES=""
+
+if [ $# -lt 2 -o ! -f ${DBFILE} ]; then
+ usage
+ exit 1
+fi
+
+TMPDIR=$(mktemp -d /tmp/cleanup.XXXXXX) || exit 1
+cd ${TMPDIR}
+tar xzf ${DBFILE}
+
+cd ${FTPDIR}
+for pkgfile in *.pkg.tar.gz; do
+ pkgname="$(getpkgname ${pkgfile})"
+ for p in ${FTPDIR}/${pkgname}-*; do
+ if [ "$(getpkgname $(basename ${p}))" = "${pkgname}" ]; then
+ continue 2
+ fi
+ done
+ OBSOLETEFILES="${OBSOLETEFILES} ${pkgfile}"
+done
+
+cd - >/dev/null
+rm -rf ${TMPDIR}
+
+echo -ne "DIRECTORY:\n${FTPDIR}\n\n"
+echo -ne "OBSOLETEFILES:\n${OBSOLETEFILES}\n\n"