on 28/06/2012 11:16 Karli Sjöberg said the following:
> Hi!
> 
> I am a storage-technician working at the Swedish University of Agriculture 
> and we are using zfs-snapshot-mgmt to create scheduled snapshots, but are 
> failing on our disaster-recovery machine because of:
> 
> /usr/local/bin/zfs-snapshot-mgmt:130:in `join': can't convert nil into String 
> (TypeError)
> from /usr/local/bin/zfs-snapshot-mgmt:130:in `snapshots'
> from /usr/local/bin/zfs-snapshot-mgmt:137:in `snapshots_to_remove'
> from /usr/local/bin/zfs-snapshot-mgmt:145:in `remove_snapshots'
> from /usr/local/bin/zfs-snapshot-mgmt:213
> from /usr/local/bin/zfs-snapshot-mgmt:210:in `each'
> from /usr/local/bin/zfs-snapshot-mgmt:210
> 
> Now, since this is a disaster-recovery unit, I would rather not have to have 
> all filesystems mounted for the script to function as we have many servers 
> with many file systems backing up towards this unit, which would result in 
> quite alot of mounts that are completely unnecessary to the backup server 
> itself. I also consider it a potential security risk having all these file 
> systems, from all of these different machines mounted in the same 
> place(server). I mean, if someone would like to steal as much valuable data 
> as possible, why crack hundreds of servers and steal it piece by piece when 
> you could just crack one and have it all, right? That doesn´t really make 
> sense because if someone were to crack the backup server they could just 
> mount all filesystems themselves, but only if they knew they were there. But 
> also having them mounted feels like just handing it to them.
> 
> Unfortunately I know nothing about programming so I can´t be of any help, 
> besides testing patches, but do you think this can be done? Change the script 
> so that it doesn´t require the file systems to be mounted for it to be able 
> to take snapshots?

How about this?

--- zfs-snapshot-mgmt   2010-06-02 05:31:28.759931924 +0300
+++ zfs-snapshot-mgmt   2010-06-01 01:49:46.665034414 +0300
@@ -127,8 +127,10 @@
   end

   def snapshots(prefix)
-    path = File.join(@mount_point, '.zfs', 'snapshot')
-    Dir.open(path).select do |name|
+#    path = File.join(@mount_point, '.zfs', 'snapshot')
+#    Dir.open(path).select do |name|
+    s = IO.popen('zfs list -r -t snapshot -H -o name ' +
@name).readlines.collect.select { |item| item[0, @name.length + 1] == @name +
'@' }.map { |item| item[@name.length + 1 .. -1] }
+    s.select do |name|
       name[0, prefix.length] == prefix
     end.map { |name| SnapshotInfo.new(name, @name, prefix) }
   end



-- 
Andriy Gapon

_______________________________________________
freebsd-ports@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to "freebsd-ports-unsubscr...@freebsd.org"

Reply via email to