Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 14 Apr 2011 05:22:02 -0400 (EDT)
From:      "J. Hellenthal" <jhell@DataIX.net>
To:        FreeBSD-gnats-submit@freebsd.org
Cc:        stable@freebsd.org
Subject:   Make 220.backup-pkgdb cd(1) and backup only the package database.
Message-ID:  <201104140922.p3E9M246053052@DataIX.net>

next in thread | raw e-mail | index | archive | help

>Submitter-Id:	current-users
>Originator:	J. Hellenthal
>Organization:	
>Confidential:	no 
>Synopsis:	Make 220.backup-pkgdb cd(1) and backup only the package database.
>Severity:	non-critical
>Priority:	medium
>Category:	conf
>Class:		change-request
>Release:	FreeBSD 8.2-STABLE i386
>Environment:
System: FreeBSD 8.2-STABLE #0 r220564M Tue Apr 12 10:02:17 EDT 2011 i386

	
>Description:
Currently the backup script archives a full path starting from '/' and then strips the leading slash off of the path which is correct. Upon extraction that full path without the leading slash is extracted in the current directory as var/db/pkg/<contents> with the first two and possibly more directories left empty.

If a user has a different PKG_DBDIR as designated by ports(7) that is larger this can lead to frustration with the length of emptiness in the archive with the leading paths.
	
>How-To-Repeat:
Run ( /etc/periodic/daily/220.backup-pkgdb ) and extract the archive located in /var/backups/
	
>Fix:
This patch makes 220.backup-pkgdb respectifully cd to where the pkgdb is located and create the archive from the relative path so there is only the pkgdb directory and contents upon extraction.

http://patches.jhell.googlecode.com/hg/220.backup-pkgdb_cd.patch?r=f60df831e62d64fd336b6c6612a6619eaf17a17f

diff -r aa37d382121b -r 3fbae1ba29a4 etc/periodic/daily/220.backup-pkgdb
--- a/etc/periodic/daily/220.backup-pkgdb
+++ b/etc/periodic/daily/220.backup-pkgdb
@@ -33,7 +33,8 @@
 
 	new_bak_file=`mktemp ${bak_file}-XXXXX`
 
-	if tar -cjf "${new_bak_file}" "$pkg_dbdir"; then
+	cd $pkg_dbdir/..
+	if tar -cjf "${new_bak_file}" "$(basename $pkg_dbdir)"; then
 	    chmod 644 "${new_bak_file}"
 
 	    if [ -e "${bak_file}.2" -a -e "${bak_file}" ]; then

	





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201104140922.p3E9M246053052>