[Midnightbsd-cvs] mports: mports/sysutils: A fast ufs copy utility
laffer1 at midnightbsd.org
laffer1 at midnightbsd.org
Sun Aug 24 17:45:23 EDT 2008
Log Message:
-----------
A fast ufs copy utility
Modified Files:
--------------
mports/sysutils:
Makefile (r1.74 -> r1.75)
Added Files:
-----------
mports/sysutils/ufs_copy:
Makefile (r1.1)
distinfo (r1.1)
pkg-descr (r1.1)
pkg-plist (r1.1)
mports/sysutils/ufs_copy/files:
patch-ufs_copy.c (r1.1)
-------------- next part --------------
Index: Makefile
===================================================================
RCS file: /home/cvs/mports/sysutils/Makefile,v
retrieving revision 1.74
retrieving revision 1.75
diff -L sysutils/Makefile -L sysutils/Makefile -u -r1.74 -r1.75
--- sysutils/Makefile
+++ sysutils/Makefile
@@ -73,6 +73,7 @@
SUBDIR += timemon
SUBDIR += tracker
SUBDIR += ucspi-tcp
+ SUBDIR += ufs_copy
SUBDIR += wmbsdbatt
SUBDIR += yawho
--- /dev/null
+++ sysutils/ufs_copy/pkg-descr
@@ -0,0 +1,5 @@
+The ufs_copy copies a UFS filesystem image like dd(1).
+It doesn't copy free blocks for speed and it generates a sparse destination
+file for saving space.
+
+WWW: http://people.freebsd.org/~simokawa/ufs/
--- /dev/null
+++ sysutils/ufs_copy/pkg-plist
@@ -0,0 +1,3 @@
+sbin/ufs_copy
+%%PORTDOCS%%%%DOCSDIR%%/README
+%%PORTDOCS%%@dirrm %%DOCSDIR%%
--- /dev/null
+++ sysutils/ufs_copy/Makefile
@@ -0,0 +1,28 @@
+# New ports collection makefile for: ufs_copy
+# Date created: 3 July 2005
+# Whom: MANTANI Nobutaka <nobutaka at freebsd.org>
+#
+# $MidnightBSD: mports/sysutils/ufs_copy/Makefile,v 1.1 2008/08/24 21:45:21 laffer1 Exp $
+# $FreeBSD: ports/sysutils/ufs_copy/Makefile,v 1.4 2008/03/23 15:26:35 nobutaka Exp $
+#
+
+PORTNAME= ufs_copy
+PORTVERSION= 20060921
+CATEGORIES= sysutils
+MASTER_SITES= http://people.freebsd.org/~simokawa/ufs/
+DISTNAME= ufs-${PORTVERSION}
+
+MAINTAINER= ports at MidnightBSD.org
+COMMENT= Fast copy utility for UFS filesystem
+LICENSE= bsd4
+
+WRKSRC= ${WRKDIR}/ufs
+MAKE_ARGS= BINDIR=${PREFIX}/sbin
+
+post-install:
+.if !defined(NOPORTDOCS)
+ ${MKDIR} ${DOCSDIR}
+ ${INSTALL_DATA} ${WRKSRC}/README ${DOCSDIR}
+.endif
+
+.include <bsd.port.mk>
--- /dev/null
+++ sysutils/ufs_copy/distinfo
@@ -0,0 +1,3 @@
+MD5 (ufs-20060921.tar.gz) = 1f02fc571e3c35d2ccf36df50847762c
+SHA256 (ufs-20060921.tar.gz) = 0dc787a8c10334fa7bbfc56b166498a3057f6adff34dac4f6454a88c75d967ed
+SIZE (ufs-20060921.tar.gz) = 9734
--- /dev/null
+++ sysutils/ufs_copy/files/patch-ufs_copy.c
@@ -0,0 +1,60 @@
+--- ufs_copy.c.orig 2006-09-21 15:28:09.000000000 +0900
++++ ufs_copy.c 2007-12-27 23:28:55.000000000 +0900
+@@ -111,9 +111,11 @@
+ main(int argc, char *argv[])
+ {
+ struct fstab *fs;
+- int ch, eval=0;
++ int ch, eval=0, md;
+ char *snapshot = NULL;
+- char *src, *dst;
++ char *src, *dst, *snap = NULL;
++ char mddev[256];
++ FILE *readp;
+
+ #ifdef USEMMAP
+ while ((ch = getopt(argc, argv, "aBb:ceMms:v")) != -1)
+@@ -174,6 +176,21 @@
+ eval = system(buf);
+ if (eval)
+ errx(eval, "mksnap_ffs failed");
++
++ snprintf(buf, sizeof(buf),
++ "/sbin/mdconfig -a -n -t vnode -f %s", src);
++ fprintf(stderr, "%s\n", buf);
++ readp = popen(buf, "r");
++ if (readp == NULL)
++ errx(eval, "mdconfig failed");
++ eval = fscanf(readp, "%d", &md);
++ if (eval != 1)
++ errx(eval, "mdconfig failed");
++ pclose(readp);
++ snprintf(mddev, sizeof(mddev), "/dev/md%d", md);
++ snap = src;
++ src = mddev;
++ fprintf(stderr, "attached %s as memory disk %s\n", snap, mddev);
+ }
+
+ if ((fs = getfsfile(src)) == NULL) {
+@@ -188,9 +205,19 @@
+ }
+
+ if (snapshot) {
+- fprintf(stderr, "removing snapshot file %s ... ", src);
++ char buf[1024];
++
++ snprintf(buf, sizeof(buf),
++ "/sbin/mdconfig -d -u %d", md);
++ fprintf(stderr, "%s\n", buf);
++ eval = system(buf);
++ if (eval)
++ errx(eval, "mdconfig failed");
++ fprintf(stderr, "detached memory disk %s\n", mddev);
++
++ fprintf(stderr, "removing snapshot file %s ... ", snap);
+ fflush(stderr);
+- if (unlink(src) == 0)
++ if (unlink(snap) == 0)
+ fprintf(stderr, "done\n");
+ else
+ fprintf(stderr, "failed\n");
More information about the Midnightbsd-cvs
mailing list