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"