Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 7 Sep 2000 18:05:50 +0200 (CEST)
From:      s.moeding@ndh.net
To:        FreeBSD-gnats-submit@freebsd.org
Subject:   bin/21093: New option for restore (patch)
Message-ID:  <200009071605.e87G5o001105@esprit.firekeys.org>

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

>Number:         21093
>Category:       bin
>Synopsis:       New option for restore (patch)
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Thu Sep 07 09:10:00 PDT 2000
>Closed-Date:
>Last-Modified:
>Originator:     Stefan Moeding
>Release:        FreeBSD 4.1-STABLE i386
>Organization:
FreeBSD: The Power to Serve
>Environment:

	FreeBSD 4.1-STABLE i386

>Description:

	The vrestore command in Compaqs Tru64 Unix has an option '-D',
	which allows the vrestore command to perform a chdir into a
	given directory before performing the restore.  This allows the
	simpler command line

		dump -0af - /usr | restore -rf - -D /mnt

	instead of

		dump -0 -a -f - /usr | (cd /mnt; restore -r -f -)

>How-To-Repeat:

>Fix:

	The attached patch adds the '-D' flag to the restore command.

	Stefan

==============================================================================
diff -ruN restore/main.c /usr/src/sbin/restore/main.c
--- restore/main.c	Wed Sep  6 21:58:51 2000
+++ /usr/src/sbin/restore/main.c	Thu Sep  7 17:41:01 2000
@@ -52,6 +52,7 @@
 #include <protocols/dumprestore.h>
 
 #include <err.h>
+#include <errno.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
@@ -99,9 +100,9 @@
 		inputdev = _PATH_DEFTAPE;
 	obsolete(&argc, &argv);
 #ifdef KERBEROS
-#define	optlist "b:cdf:hikmNRrs:tuvxy"
+#define	optlist "b:cD:df:hikmNRrs:tuvxy"
 #else
-#define	optlist "b:cdf:himNRrs:tuvxy"
+#define	optlist "b:cD:df:himNRrs:tuvxy"
 #endif
 	while ((ch = getopt(argc, argv, optlist)) != -1)
 		switch(ch) {
@@ -117,6 +118,12 @@
 		case 'c':
 			cvtflag = 1;
 			break;
+		case 'D':
+			if (chdir(optarg) < 0)
+				errx(1,
+				     "error accessing file system %s; %s",
+				     optarg, strerror(errno));
+			break;
 		case 'd':
 			dflag = 1;
 			break;
@@ -293,11 +300,11 @@
 usage()
 {
 	(void)fprintf(stderr, "usage:\t%s\n\t%s\n\t%s\n\t%s\n\t%s\n",
-	  "restore -i [-chkmuvy] [-b blocksize] [-f file] [-s fileno]",
-	  "restore -r [-ckuvy] [-b blocksize] [-f file] [-s fileno]",
-	  "restore -R [-ckuvy] [-b blocksize] [-f file] [-s fileno]",
-	  "restore -x [-chkmuvy] [-b blocksize] [-f file] [-s fileno] [file ...]",
-	  "restore -t [-chkuvy] [-b blocksize] [-f file] [-s fileno] [file ...]");
+	  "restore -i [-chkmuvy] [-b blocksize] [-D path] [-f file] [-s fileno]",
+	  "restore -r [-ckuvy] [-b blocksize] [-D path] [-f file] [-s fileno]",
+	  "restore -R [-ckuvy] [-b blocksize] [-D path] [-f file] [-s fileno]",
+	  "restore -x [-chkmuvy] [-b blocksize] [-D path] [-f file] [-s fileno] [file ...]",
+	  "restore -t [-chkuvy] [-b blocksize] [-D path] [-f file] [-s fileno] [file ...]");
 	done(1);
 }
 
diff -ruN restore/restore.8 /usr/src/sbin/restore/restore.8
--- restore/restore.8	Wed Sep  6 21:58:51 2000
+++ /usr/src/sbin/restore/restore.8	Thu Sep  7 17:31:00 2000
@@ -44,24 +44,28 @@
 .Fl i
 .Op Fl chkmNuvy
 .Op Fl b Ar blocksize
+.Op Fl D Ar path
 .Op Fl f Ar file
 .Op Fl s Ar fileno
 .Nm restore
 .Fl R
 .Op Fl ckNuvy
 .Op Fl b Ar blocksize
+.Op Fl D Ar path
 .Op Fl f Ar file
 .Op Fl s Ar fileno
 .Nm restore
 .Fl r
 .Op Fl ckNuvy
 .Op Fl b Ar blocksize
+.Op Fl D Ar path
 .Op Fl f Ar file
 .Op Fl s Ar fileno
 .Nm restore
 .Fl t
 .Op Fl chkNuvy
 .Op Fl b Ar blocksize
+.Op Fl D Ar path
 .Op Fl f Ar file
 .Op Fl s Ar fileno
 .Op file ...
@@ -69,6 +73,7 @@
 .Fl x
 .Op Fl chkmNuvy
 .Op Fl b Ar blocksize
+.Op Fl D Ar path
 .Op Fl f Ar file
 .Op Fl s Ar fileno
 .Op file ...
@@ -275,6 +280,11 @@
 .Fl c
 flag disables this check, and only allows reading a dump in the old
 format.
+.It Fl D Ar path
+Specifies the destination path of where to restore the files.
+Without the
+.Fl D
+flag, the files are restored to the current directory.
 .It Fl f Ar file
 Read the backup from
 .Ar file ;
@@ -422,6 +432,17 @@
 owner, mode, and time stamps for directories.
 .It Pa \&./restoresymtable
 information passed between incremental restores.
+.El
+.Sh EXAMPLES
+The dump and
+.Nm restore
+commands may be used in a pipeline expression to copy file systems.
+The following are typical commands, both equivalent:
+.Bd -literal -offset indent
+dump -0 -a -f - /usr | (cd /mnt; restore -r -f -)
+dump -0af - /usr | restore -rf - -D /mnt
+.Ed
+.Pp
 .El
 .Sh SEE ALSO
 .Xr dump 8 ,





>Release-Note:
>Audit-Trail:
>Unformatted:


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




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