Index: trunk/DataStore/scripts/dsget
===================================================================
--- trunk/DataStore/scripts/dsget	(revision 17774)
+++ trunk/DataStore/scripts/dsget	(revision 19602)
@@ -3,5 +3,5 @@
 # Copyright (C) 2006-2008  Joshua Hoblitt
 #
-# $Id: dsget,v 1.30 2008-05-22 20:04:46 jhoblitt Exp $
+# $Id: dsget,v 1.31 2008-09-18 23:39:36 jhoblitt Exp $
 
 use strict;
@@ -21,4 +21,5 @@
 my ($uri,
     $bytes,
+    $copies,
     $md5,
     $nebulous,
@@ -35,4 +36,5 @@
     'uri|u=s'       => \$uri,
     'bytes|m=s'     => \$bytes,
+    'copies=d'      => \$copies,
     'nebulous|n'    => \$nebulous,
     'volume|v=s'    => \$volume,
@@ -61,4 +63,14 @@
     $nebulous ||=1;
 } 
+
+if (defined $copies) {
+    if (not defined $nebulous) {
+        warn "--copies is meanless without --nebulous or --volume";
+        undef $copies;
+    }
+    if ($copies < 1) {
+        die "--copies must be >= 1";
+    }
+}
 
 if ($compress) {
@@ -178,4 +190,12 @@
     $fh->sync or die "can't sync nebulous filehandle: $!";
     close($fh) or die "can't close nebulous filehandle: $!";
+
+    # make any required copies
+    if (defined $copies and $copies > 1) {
+        foreach (1 .. ($copies - 1)) {
+            $neb->replicate($filename)
+                or die "failed to replicate $filename failed: $!";
+        }
+    }
 } else {
     $tmp->flush or die "can't flush filehandle: $!";
@@ -200,5 +220,5 @@
 
     dsget --uri <uri> --filename <filename> [--bytes <nbytes>] [--md5 <hex>]
-        [--compress] [--nebulous] [--volume <volume name>]
+        [--compress] [--nebulous] [--volume <volume name>] [--copies <n>]
 
 =head1 DESCRIPTION
@@ -251,4 +271,10 @@
 The ammount of time (in seconds) to wait for a response from the DataStore
 after making an HTTP request.  The default is 30s.
+
+Optional.
+
+=item * --copies <n>
+
+If C<--nebulous> is in use, the number of Nebulous replications to make.
 
 Optional.
