Hi,
using flexbackup 1.2.1 with "star", I wasn't able to restore correct UIDs, 
GIDs and ACLs for the directories contained in the created archives.
I guess this could be due to the "-dirmode" flag passed to star
and to the "-depth" flag passed to find.
I attach a small patch that should help.

Ciao,
Marco

-- 
Marco Pantaleoni

elastiC language developer
http://www.elasticworld.org
diff -Naur flexbackup-1.2.1.orig/flexbackup flexbackup-1.2.1.modified/flexbackup
--- flexbackup-1.2.1.orig/flexbackup	2003-10-10 16:12:09.000000000 +0200
+++ flexbackup-1.2.1.modified/flexbackup	2005-09-14 20:05:36.000000000 +0200
@@ -1462,7 +1462,7 @@
     $cmd .= "-l ";
     $cmd .= "-D ";
     $cmd .= "-B ";
-    $cmd .= "-dirmode ";
+    $cmd .= "$::star_dirmode_flag ";
     if ($cfg::label ne 'false') {
 	$cmd .= "VOLHDR=\"$title\" ";
     }
@@ -2073,6 +2073,8 @@
 	}
 	$cmd .= "-p ";
 	$cmd .= "$::star_fifo_flag ";
+	$cmd .= "$::star_xdir_flag ";
+	$cmd .= "$::star_acl_flag ";
 	$cmd .= "$::star_verb_flag ";
 	$cmd .= "$::star_sparse_flag ";
 	$cmd .= "$::star_blocknum_flag ";
@@ -2724,6 +2726,7 @@
     &checkvar(\$cfg::staticlogs,'staticlogs','bool','false');
     &checkvar(\$cfg::prefix,'prefix','exist','');
     &checkvar(\$cfg::sprefix,'sprefix','exist','');
+    &checkvar(\$cfg::usedepth,'use_depth','bool','false');
 
     if (@::errors) {
 	print $::msg "Errors:\n";
@@ -3332,6 +3335,8 @@
 
     } elsif ($cfg::type eq 'star') {
 
+	&checkvar(\$cfg::star_dirmode,'star_dirmode','bool','false');
+	&checkvar(\$cfg::star_xdir,'star_xdir','bool','true');
 	&checkvar(\$cfg::star_acl,'star_acl','bool','true');
 	&checkvar(\$cfg::star_fifo,'star_fifo','bool','true');
 	&checkvar(\$cfg::star_format,'star_format','tar star gnutar ustar pax xstar xustar exustar suntar','exustar');
@@ -3348,6 +3353,20 @@
 	    }
 	}
 
+	# star dirmode flag
+	if ($cfg::star_dirmode eq "true") {
+	    $::star_dirmode_flag = "-dirmode";
+	} else {
+	    $::star_dirmode_flag = "";
+	}
+
+	# star xdir flag
+	if ($cfg::star_xdir eq "true") {
+	    $::star_xdir_flag = "-xdir";
+	} else {
+	    $::star_xdir_flag = "";
+	}
+
 	# ACL flag
 	if ($cfg::star_acl eq "true") {
 	    $::star_acl_flag = "-acl";
@@ -4858,7 +4877,9 @@
 	# Can't use find -depth with -prune (see single unix spec etc)
 	# (not toally required anyway, only if you are archiving dirs you
 	# don't have permissions on and are running as non-root)
-	$cmd .= "-depth ";
+	if ($cfg::usedepth eq 'true') {
+	    $cmd .= "-depth ";
+	}
     }
 
     $cmd .= "$::mountpoint_flag ";
diff -Naur flexbackup-1.2.1.orig/flexbackup.conf flexbackup-1.2.1.modified/flexbackup.conf
--- flexbackup-1.2.1.orig/flexbackup.conf	2003-09-22 00:59:58.000000000 +0200
+++ flexbackup-1.2.1.modified/flexbackup.conf	2005-09-14 20:05:02.000000000 +0200
@@ -173,12 +173,27 @@
 # Handle ACLs?
 $star_acl = 'true';
 
+# star '-dirmode'
+# default was 'false' before, but it seems that ACLs on directories
+# don't get set correctly on extraction if this flag is present.
+$star_dirmode = 'false';     # default was true before, but ACLs seems
+
+# star '-xdir'
+# (this didn't exist before, but it seems that ACLs on directories
+#  require this flag).
+$star_xdir = 'true';         # default was false before
+
 # Format of star archive
 $star_format = 'exustar';
 
 # True to show block numbers
 $star_echo_block_num = 'false';
 
+# find '-depth' flag
+# omit it to correctly save/restore permissions and/or ACLs for
+# directories
+$use_depth = 'false';
+
 # ----------------------------------------------------------------------
 # Parameters for 'pax' only
 

Attachment: pgpwnvUCiw0VY.pgp
Description: PGP signature

Reply via email to