diff options
author | dougb <dougb@FreeBSD.org> | 2011-03-26 03:01:48 +0000 |
---|---|---|
committer | dougb <dougb@FreeBSD.org> | 2011-03-26 03:01:48 +0000 |
commit | 4eab0bcd9d53bb5c86710b319487ea4842ac1fd7 (patch) | |
tree | e0024489f4c1946c17d21985748c1949a8b69922 /etc/periodic/daily | |
parent | 272da29f27c14c3f8374a54da951c5713883c82a (diff) | |
download | FreeBSD-src-4eab0bcd9d53bb5c86710b319487ea4842ac1fd7.zip FreeBSD-src-4eab0bcd9d53bb5c86710b319487ea4842ac1fd7.tar.gz |
Add a daily period script to back up /var/db/pkg
The final product contains work from the originator, and
Florent Thoumie <florent.thoumie@gmail.com>. The final
product contains considerable re-working by me, so all
responsibility for bugs rests under my pointy hat.
PR: ports/145957
Submitted by: Eitan Adler <EitanAdlerList@gmail.com>
Diffstat (limited to 'etc/periodic/daily')
-rwxr-xr-x | etc/periodic/daily/220.backup-pkgdb | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/etc/periodic/daily/220.backup-pkgdb b/etc/periodic/daily/220.backup-pkgdb new file mode 100755 index 0000000..8a37b1c --- /dev/null +++ b/etc/periodic/daily/220.backup-pkgdb @@ -0,0 +1,50 @@ +#!/bin/sh +# +# $FreeBSD$ +# + +# If there is a global system configuration file, suck it in. +# +if [ -r /etc/defaults/periodic.conf ] +then + . /etc/defaults/periodic.conf + source_periodic_confs +fi + +rc=0 + +case "$daily_backup_pkgdb_enable" in + [Yy][Ee][Ss]) + bak="${daily_backup_pkgdb_dir:-/var/backups}" + bak_file="${bak}/pkgdb.bak.tbz" + + pkg_dbdir=`make -f/usr/share/mk/bsd.port.mk -V PKG_DBDIR 2>/dev/null` + + if [ ! -d "$bak" ] + then + install -d -o root -g wheel -m 750 $bak || { + echo '$daily_backup_pkgdb_enable is enabled but' \ + "$daily_backup_pkgdb_dbdir doesn't exist" ; + exit 2 ; } + fi + + echo '' + echo 'Backing up package db directory:' + + new_bak_file=`mktemp ${bak_file}-XXXXX` + + if tar -cjf "${new_bak_file}" "$pkg_dbdir"; then + chmod 644 "${new_bak_file}" + + if [ -e "${bak_file}.2" -a -e "${bak_file}" ]; then + unlink "${bak_file}.2" + mv "${bak_file}" "${bak_file}.2" + fi + [ -e "${bak_file}" ] && mv "${bak_file}" "${bak_file}.2" + mv "${new_bak_file}" "${bak_file}" + else + rc=3 + fi ;; +esac + +exit $rc |