'''
Created on Mar 19, 2013

@author: rudd-o
'''
import unittest
from zfstools.models import PoolSet
from zfstools import sync

def x(string):
    return "\n".join(
         [ "\t".join(x.split()) for x in string.splitlines() ]
    )


class TestRecursiveReplicate(unittest.TestCase):

    maxDiff = None

    def test_does_nothing(self):
        src = PoolSet()
        dst = PoolSet()
        src.parse_zfs_r_output(
x('''karen   1359351119
karen/ROOT      1359351169
karen/ROOT/fedora       1359351172
karen/ROOT/fedora/home  1359351174
karen/plonezeo  1360136643
''')
        )
        dst.parse_zfs_r_output(
x('''target   1359351109
target/karen   1359351119
target/karen/ROOT      1359351169
target/karen/ROOT/fedora       1359351172
target/karen/ROOT/fedora/home  1359351174
target/karen/plonezeo  1360136643
''')
        )
        
        result = sync.recursive_replicate(
            src.lookup("karen"),
            dst.lookup("target/karen")
        )
        self.assertFalse(result)

    def test_replicates_one_snapshot_fully(self):
        src = PoolSet()
        dst = PoolSet()
        src.parse_zfs_r_output(
x('''karen   1359351119
karen/ROOT      1359351169
karen/ROOT/fedora       1359351172
karen/ROOT/fedora/home  1359351174
karen/plonezeo  1360136643
karen/plonezeo@zfs-auto-snap_hourly-2013-03-19-0000     1363676402
''')
        )
        dst.parse_zfs_r_output(
x('''target   1359351109
target/karen   1359351119
target/karen/ROOT      1359351169
target/karen/ROOT/fedora       1359351172
target/karen/ROOT/fedora/home  1359351174
target/karen/plonezeo  1360136643
''')
        )
        
        result = sync.recursive_replicate(
            src.lookup("karen"),
            dst.lookup("target/karen")
        )
        self.assertEquals(
            result,
            [('full',
              src.lookup("karen/plonezeo"),
              dst.lookup("target/karen/plonezeo"),
              None,
              src.lookup("karen/plonezeo@zfs-auto-snap_hourly-2013-03-19-0000")
            )]
        )
        self.assertEquals(
            sync.optimize_coalesce(result),
            [('full',
              src.lookup("karen/plonezeo"),
              dst.lookup("target/karen/plonezeo"),
              None,
              src.lookup("karen/plonezeo@zfs-auto-snap_hourly-2013-03-19-0000")
            )]
        )

    def test_are_in_sync(self):
        src = PoolSet()
        dst = PoolSet()
        src.parse_zfs_r_output(
x('''karen   1359351119
karen/ROOT      1359351169
karen/ROOT/fedora       1359351172
karen/ROOT/fedora/home  1359351174
karen/plonezeo  1360136643
karen/plonezeo@zfs-auto-snap_hourly-2013-03-19-0000     1363676402
''')
        )
        dst.parse_zfs_r_output(
x('''target   1359351109
target/karen   1359351119
target/karen/ROOT      1359351169
target/karen/ROOT/fedora       1359351172
target/karen/ROOT/fedora/home  1359351174
target/karen/plonezeo  1360136643
target/karen/plonezeo@zfs-auto-snap_hourly-2013-03-19-0000     1363676402
''')
        )
        
        result = sync.recursive_replicate(
            src.lookup("karen"),
            dst.lookup("target/karen")
        )
        self.assertFalse(result)

    def test_replicates_one_snapshot_incrementally(self):
        src = PoolSet()
        dst = PoolSet()
        src.parse_zfs_r_output(
x('''karen   1359351119
karen/ROOT      1359351169
karen/ROOT/fedora       1359351172
karen/ROOT/fedora/home  1359351174
karen/plonezeo  1360136643
karen/plonezeo@zfs-auto-snap_hourly-2013-03-19-0000     1363676402
karen/plonezeo@zfs-auto-snap_hourly-2013-03-20-0000     1363686402
''')
        )
        dst.parse_zfs_r_output(
x('''target   1359351109
target/karen   1359351119
target/karen/ROOT      1359351169
target/karen/ROOT/fedora       1359351172
target/karen/ROOT/fedora/home  1359351174
target/karen/plonezeo  1360136643
target/karen/plonezeo@zfs-auto-snap_hourly-2013-03-19-0000     1363676402
''')
        )
        
        result = sync.recursive_replicate(
            src.lookup("karen"),
            dst.lookup("target/karen")
        )
        self.assertEquals(
            result,
            [('incremental',
              src.lookup("karen/plonezeo"),
              dst.lookup("target/karen/plonezeo"),
              src.lookup("karen/plonezeo@zfs-auto-snap_hourly-2013-03-19-0000"),
              src.lookup("karen/plonezeo@zfs-auto-snap_hourly-2013-03-20-0000")
            )]
        )

    def test_replicates_siblings_incrementally(self):
        src = PoolSet()
        dst = PoolSet()
        src.parse_zfs_r_output(
x('''s   1359351119
s/a  1360136643
s/a@1     1363676402
s/a@2     1363686402
s/b@1     1363676402
s/b@2     1363686402
''')
        )
        dst.parse_zfs_r_output(
x('''t   1359351109
t/s   1359351119
t/s/a  1360136643
t/s/a@1     1363676402
t/s/b  1360136643
t/s/b@1     1363676402
''')
        )
        expected = \
            [
             ('incremental',
              src.lookup("s/a"),
              dst.lookup("t/s/a"),
              src.lookup("s/a@1"),
              src.lookup("s/a@2")
             ),
             ('incremental',
              src.lookup("s/b"),
              dst.lookup("t/s/b"),
              src.lookup("s/b@1"),
              src.lookup("s/b@2")
             ),
            ]
        
        real = sync.recursive_replicate(
            src.lookup("s"),
            dst.lookup("t/s")
        )
        self.assertEquals(expected,real)
        self.assertEquals(expected, sync.optimize_coalesce(real))

    def test_replicates_unequal_siblings(self):
        src = PoolSet()
        dst = PoolSet()
        src.parse_zfs_r_output(
x('''s   1359351119
s/a  1360136643
s/a@1     1363676402
s/a@2     1363686402
s/b@1     1363676402
s/b@2     1363686402
s/b@3     1363686402
''')
        )
        dst.parse_zfs_r_output(
x('''t   1359351109
t/s   1359351119
t/s/a  1360136643
t/s/a@1     1363676402
t/s/b  1360136643
t/s/b@1     1363676402
''')
        )
        expected = \
            [
             ('incremental',
              src.lookup("s/a"),
              dst.lookup("t/s/a"),
              src.lookup("s/a@1"),
              src.lookup("s/a@2")
             ),
             ('incremental',
              src.lookup("s/b"),
              dst.lookup("t/s/b"),
              src.lookup("s/b@1"),
              src.lookup("s/b@2")
             ),
             ('incremental',
              src.lookup("s/b"),
              dst.lookup("t/s/b"),
              src.lookup("s/b@2"),
              src.lookup("s/b@3")
             ),
            ]
        expected_coalesced = expected[0:1] + \
            [
             ('incremental',
              src.lookup("s/b"),
              dst.lookup("t/s/b"),
              src.lookup("s/b@1"),
              src.lookup("s/b@3")
             ),
            ]
        
        real = sync.recursive_replicate(
            src.lookup("s"),
            dst.lookup("t/s")
        )
        self.assertEquals(expected,real)

        real_coalesced = sync.optimize_coalesce(real)
        self.assertEquals(expected_coalesced,real_coalesced)

    def test_replicates_recursive_snapshots_with_exceptions(self):
        src = PoolSet()
        dst = PoolSet()
        src.parse_zfs_r_output(
x('''s   1359351119
s@1     1363676402
s@2     1363676403
s/a  1360136643
s/a@1     1363676402
s/a@2     1363686403
s/b  1360136643
s/b@1     1363676402
s/b@2     1363686403
s/b@3     1363686404
s/c  1360136643
''')
        )
        dst.parse_zfs_r_output(
x('''t   1359351109
t/s   1359351119
t/s@1     1363676402
t/s/a  1360136643
t/s/a@1     1363676402
t/s/b  1360136643
t/s/b@1     1363676402
''')
        )
        expected = \
            [
             ('incremental',
              src.lookup("s"),
              dst.lookup("t/s"),
              src.lookup("s@1"),
              src.lookup("s@2")
             ),
             ('incremental',
              src.lookup("s/a"),
              dst.lookup("t/s/a"),
              src.lookup("s/a@1"),
              src.lookup("s/a@2")
             ),
             ('incremental',
              src.lookup("s/b"),
              dst.lookup("t/s/b"),
              src.lookup("s/b@1"),
              src.lookup("s/b@2")
             ),
             ('incremental',
              src.lookup("s/b"),
              dst.lookup("t/s/b"),
              src.lookup("s/b@2"),
              src.lookup("s/b@3")
             ),
             ('create_stub',
              src.lookup("s/c"),
              None,
              None,
              None
             ),
            ]
        expected_coalesced = expected[0:2] + \
            [
             ('incremental',
              src.lookup("s/b"),
              dst.lookup("t/s/b"),
              src.lookup("s/b@1"),
              src.lookup("s/b@3")
             ),
            ] + expected[-1:]
        
        real = sync.recursive_replicate(
            src.lookup("s"),
            dst.lookup("t/s")
        )
        self.assertEquals(expected,real)

        real_coalesced = sync.optimize_coalesce(real)
        self.assertEquals(expected_coalesced,real_coalesced)

    def test_replicates_recursive_but_dest_parent_is_not_snapshotted(self):
        src = PoolSet()
        dst = PoolSet()
        src.parse_zfs_r_output(\
x('''s   1359351119
s@1     1363676402
s@2     1363676403
s/a  1360136643
s/a@1     1363676402
s/a@2     1363686403
s/b  1360136643
s/b@1     1363676402
s/b@2     1363686403
s/b@3     1363686404
s/c  1360136643
''')
        )
        dst.parse_zfs_r_output(
x('''t   1359351109
t/s   1359351119
t/s/a  1360136643
t/s/a@1     1363676402
t/s/b  1360136643
t/s/b@1     1363676402
''')
        )
        expected = \
            [
             ('full',
              src.lookup("s"),
              dst.lookup("t/s"),
              None,
              src.lookup("s@1")
             ),
             ('incremental',
              src.lookup("s"),
              dst.lookup("t/s"),
              src.lookup("s@1"),
              src.lookup("s@2")
             ),
             ('incremental',
              src.lookup("s/a"),
              dst.lookup("t/s/a"),
              src.lookup("s/a@1"),
              src.lookup("s/a@2")
             ),
             ('incremental',
              src.lookup("s/b"),
              dst.lookup("t/s/b"),
              src.lookup("s/b@1"),
              src.lookup("s/b@2")
             ),
             ('incremental',
              src.lookup("s/b"),
              dst.lookup("t/s/b"),
              src.lookup("s/b@2"),
              src.lookup("s/b@3")
             ),
             ('create_stub',
              src.lookup("s/c"),
              None,
              None,
              None
             ),
            ]
        expected_coalesced = expected[0:3] + \
            [
             ('incremental',
              src.lookup("s/b"),
              dst.lookup("t/s/b"),
              src.lookup("s/b@1"),
              src.lookup("s/b@3")
             ),
            ] + expected[-1:]

        real = sync.recursive_replicate(
            src.lookup("s"),
            dst.lookup("t/s")
        )
        self.assertEquals(expected,real)

        real_coalesced = sync.optimize_coalesce(real)
        self.assertEquals(expected_coalesced,real_coalesced)

    # this test is the problematic one that causes the optimizer to fail when transforming it
    # into the recursive replication which shadows unsnapshotted children
    def test_replicates_recursive_and_child_of_replicant_has_no_snapshots(self):
        src = PoolSet()
        dst = PoolSet()
        src.parse_zfs_r_output(
x('''s   1359351119
s@1     1363676402
s@2     1363676403
s@3     1363676404
s/a  1360136643
s/a@1     1363676402
s/a@2     1363686403
s/a@3     1363686404
s/a/x  1360136643
s/a/x@1     1363676402
s/a/x@2     1363686403
s/a/x@3     1363686404
s/b  1360136643
s/b@1     1363676402
s/b@2     1363686403
s/b@3     1363686404
s/b/x  1360136643
s/b  1360136643
s/c  1360136643
''')
        )
        dst.parse_zfs_r_output(
x('''t   1359351109
t/s   1359351119
t/s@1     1363676402
t/s/a  1360136643
t/s/a@1     1363676402
t/s/a/x  1360136643
t/s/a/x@1     1363676402
t/s/b  1360136643
t/s/b@1     1363676402
''')
        )
        expected = \
            [
             ('incremental',
              src.lookup("s"),
              dst.lookup("t/s"),
              src.lookup("s@1"),
              src.lookup("s@2")
             ),
             ('incremental',
              src.lookup("s"),
              dst.lookup("t/s"),
              src.lookup("s@2"),
              src.lookup("s@3")
             ),
             ('incremental',
              src.lookup("s/a"),
              dst.lookup("t/s/a"),
              src.lookup("s/a@1"),
              src.lookup("s/a@2")
             ),
             ('incremental',
              src.lookup("s/a"),
              dst.lookup("t/s/a"),
              src.lookup("s/a@2"),
              src.lookup("s/a@3")
             ),
             ('incremental',
              src.lookup("s/a/x"),
              dst.lookup("t/s/a/x"),
              src.lookup("s/a/x@1"),
              src.lookup("s/a/x@2")
             ),
             ('incremental',
              src.lookup("s/a/x"),
              dst.lookup("t/s/a/x"),
              src.lookup("s/a/x@2"),
              src.lookup("s/a/x@3")
             ),
             ('incremental',
              src.lookup("s/b"),
              dst.lookup("t/s/b"),
              src.lookup("s/b@1"),
              src.lookup("s/b@2")
             ),
             ('incremental',
              src.lookup("s/b"),
              dst.lookup("t/s/b"),
              src.lookup("s/b@2"),
              src.lookup("s/b@3")
             ),
             ('create_stub',
              src.lookup("s/b/x"),
              None,
              None,
              None
             ),
             ('create_stub',
              src.lookup("s/c"),
              None,
              None,
              None
             ),
            ]
        expected_coalesced = \
            [
             ('incremental',
              src.lookup("s"),
              dst.lookup("t/s"),
              src.lookup("s@1"),
              src.lookup("s@3")
             ),
             ('incremental',
              src.lookup("s/a"),
              dst.lookup("t/s/a"),
              src.lookup("s/a@1"),
              src.lookup("s/a@3")
             ),
             ('incremental',
              src.lookup("s/a/x"),
              dst.lookup("t/s/a/x"),
              src.lookup("s/a/x@1"),
              src.lookup("s/a/x@3")
             ),
             ('incremental',
              src.lookup("s/b"),
              dst.lookup("t/s/b"),
              src.lookup("s/b@1"),
              src.lookup("s/b@3")
             ),
            ] + expected[-2:]
        expected_coalesced_recursivized = \
            [
             ('incremental',
              src.lookup("s"),
              dst.lookup("t/s"),
              src.lookup("s@1"),
              src.lookup("s@3")
             ),
             ('incremental_recursive',
              src.lookup("s/a"),
              dst.lookup("t/s/a"),
              src.lookup("s/a@1"),
              src.lookup("s/a@3")
             ),
             ('incremental',
              src.lookup("s/b"),
              dst.lookup("t/s/b"),
              src.lookup("s/b@1"),
              src.lookup("s/b@3")
             ),
            ]

        real = sync.recursive_replicate(
            src.lookup("s"),
            dst.lookup("t/s")
        )
        self.assertEquals(expected,real)

        real_coalesced = sync.optimize_coalesce(real)
        self.assertEquals(expected_coalesced,real_coalesced)

        real_coalesced_recursivized = sync.optimize_recursivize(real_coalesced)
        self.assertEquals(expected_coalesced_recursivized,real_coalesced_recursivized)

    # this test checks no recursivization happens
    # for create_stub
    def test_replicates_without_recursivizing_stub_creation(self):
        src = PoolSet()
        dst = PoolSet()
        src.parse_zfs_r_output(
x('''s   1359351119
s/a  1360136643
s/a/x  1360136643
s/a/x/t  1360136643
s/a/x/t@1     1363676402
s/a/x/t@2     1363686403
s/a/x/t@3     1363686404
''')
        )
        dst.parse_zfs_r_output(
x('''t   1359351109
t/s   1359351119
''')
        )
        expected = \
            [
             ('create_stub',
              src.lookup("s/a"),
              None,
              None,
              None
             ),
             ('create_stub',
              src.lookup("s/a/x"),
              None,
              None,
              None
             ),
             ('full',
              src.lookup("s/a/x/t"),
              None,
              None,
              src.lookup("s/a/x/t@1")
             ),
             ('incremental',
              src.lookup("s/a/x/t"),
              None,
              src.lookup("s/a/x/t@1"),
              src.lookup("s/a/x/t@3")
             ),
            ]
        expected_coalesced = expected
        expected_coalesced_recursivized = expected_coalesced[:-2] + \
            [
             ('full_recursive',
              src.lookup("s/a/x/t"),
              None,
              None,
              src.lookup("s/a/x/t@1")
             ),
             ('incremental_recursive',
              src.lookup("s/a/x/t"),
              None,
              src.lookup("s/a/x/t@1"),
              src.lookup("s/a/x/t@3")
             ),
            ]


        real = sync.recursive_replicate(
            src.lookup("s"),
            dst.lookup("t/s")
        )
        self.assertEquals(expected,real)

        real_coalesced = sync.optimize_coalesce(real)
        self.assertEquals(expected_coalesced,real_coalesced)

        real_coalesced_recursivized = sync.optimize_recursivize(real_coalesced)
        self.assertEquals(expected_coalesced_recursivized,real_coalesced_recursivized)

    # this test failed horribly, so we port it here for more compliance testing
    def test_replicates_complex_datasets(self):
        src = PoolSet()
        dst = PoolSet()
        src.parse_zfs_r_output(
            x('karen\t1364533579\nkaren@zfs-auto-snap_monthly-2013-05-01-0300\t1367402402\nkaren@zfs-auto-snap_monthly-2013-06-01-0300\t1370080801\nkaren@zfs-auto-snap_monthly-2013-07-01-0300\t1372672801\nkaren@zfs-auto-snap_monthly-2013-08-01-0300\t1375351202\nkaren@zfs-auto-snap_daily-2013-08-24-0300\t1377338402\nkaren@zfs-auto-snap_daily-2013-08-25-0300\t1377424802\nkaren@zfs-auto-snap_daily-2013-08-26-0300\t1377511202\nkaren@zfs-auto-snap_daily-2013-08-27-0300\t1377597603\nkaren@zfs-auto-snap_daily-2013-08-28-0300\t1377684001\nkaren@zfs-auto-snap_daily-2013-08-29-0300\t1377770402\nkaren@zfs-auto-snap_hourly-2013-08-30-0100\t1377824401\nkaren@zfs-auto-snap_hourly-2013-08-30-0700\t1377846003\nkaren@zfs-auto-snap_daily-2013-08-30-1000\t1377856803\nkaren@zfs-auto-snap_hourly-2013-08-30-1300\t1377867602\nkaren@zfs-auto-snap_hourly-2013-08-30-1900\t1377889202\nkaren/ROOT\t1364534686\nkaren/ROOT@zfs-auto-snap_monthly-2013-05-01-0300\t1367402402\nkaren/ROOT@zfs-auto-snap_monthly-2013-06-01-0300\t1370080801\nkaren/ROOT@zfs-auto-snap_monthly-2013-07-01-0300\t1372672801\nkaren/ROOT@zfs-auto-snap_monthly-2013-08-01-0300\t1375351202\nkaren/ROOT@zfs-auto-snap_daily-2013-08-24-0300\t1377338402\nkaren/ROOT@zfs-auto-snap_daily-2013-08-25-0300\t1377424802\nkaren/ROOT@zfs-auto-snap_daily-2013-08-26-0300\t1377511202\nkaren/ROOT@zfs-auto-snap_daily-2013-08-27-0300\t1377597603\nkaren/ROOT@zfs-auto-snap_daily-2013-08-28-0300\t1377684001\nkaren/ROOT@zfs-auto-snap_daily-2013-08-29-0300\t1377770402\nkaren/ROOT@zfs-auto-snap_hourly-2013-08-30-0100\t1377824401\nkaren/ROOT@zfs-auto-snap_hourly-2013-08-30-0700\t1377846003\nkaren/ROOT@zfs-auto-snap_daily-2013-08-30-1000\t1377856803\nkaren/ROOT@zfs-auto-snap_hourly-2013-08-30-1300\t1377867602\nkaren/ROOT@zfs-auto-snap_hourly-2013-08-30-1900\t1377889202\nkaren/ROOT/fedora\t1364534686\nkaren/ROOT/fedora@zfs-auto-snap_monthly-2013-05-01-0300\t1367402402\nkaren/ROOT/fedora@zfs-auto-snap_monthly-2013-06-01-0300\t1370080801\nkaren/ROOT/fedora@zfs-auto-snap_monthly-2013-07-01-0300\t1372672801\nkaren/ROOT/fedora@zfs-auto-snap_monthly-2013-08-01-0300\t1375351202\nkaren/ROOT/fedora@zfs-auto-snap_daily-2013-08-24-0300\t1377338402\nkaren/ROOT/fedora@zfs-auto-snap_daily-2013-08-25-0300\t1377424802\nkaren/ROOT/fedora@zfs-auto-snap_daily-2013-08-26-0300\t1377511202\nkaren/ROOT/fedora@zfs-auto-snap_daily-2013-08-27-0300\t1377597603\nkaren/ROOT/fedora@zfs-auto-snap_daily-2013-08-28-0300\t1377684001\nkaren/ROOT/fedora@zfs-auto-snap_daily-2013-08-29-0300\t1377770402\nkaren/ROOT/fedora@zfs-auto-snap_hourly-2013-08-30-0100\t1377824401\nkaren/ROOT/fedora@zfs-auto-snap_hourly-2013-08-30-0700\t1377846003\nkaren/ROOT/fedora@zfs-auto-snap_daily-2013-08-30-1000\t1377856803\nkaren/ROOT/fedora@zfs-auto-snap_hourly-2013-08-30-1300\t1377867602\nkaren/ROOT/fedora@zfs-auto-snap_hourly-2013-08-30-1900\t1377889202\nkaren/ROOT/fedora/tmp\t1372565849\nkaren/home\t1364534798\nkaren/home@zfs-auto-snap_monthly-2013-05-01-0300\t1367402402\nkaren/home@zfs-auto-snap_monthly-2013-06-01-0300\t1370080801\nkaren/home@zfs-auto-snap_monthly-2013-07-01-0300\t1372672801\nkaren/home@zfs-auto-snap_monthly-2013-08-01-0300\t1375351202\nkaren/home@zfs-auto-snap_daily-2013-08-24-0300\t1377338402\nkaren/home@zfs-auto-snap_daily-2013-08-25-0300\t1377424802\nkaren/home@zfs-auto-snap_daily-2013-08-26-0300\t1377511202\nkaren/home@zfs-auto-snap_daily-2013-08-27-0300\t1377597603\nkaren/home@zfs-auto-snap_daily-2013-08-28-0300\t1377684001\nkaren/home@zfs-auto-snap_daily-2013-08-29-0300\t1377770402\nkaren/home@zfs-auto-snap_hourly-2013-08-30-0100\t1377824401\nkaren/home@zfs-auto-snap_hourly-2013-08-30-0700\t1377846003\nkaren/home@zfs-auto-snap_daily-2013-08-30-1000\t1377856803\nkaren/home@zfs-auto-snap_hourly-2013-08-30-1300\t1377867602\nkaren/home@zfs-auto-snap_hourly-2013-08-30-1900\t1377889202\nkaren/home/mail\t1374752037\nkaren/home/mail@zfs-auto-snap_monthly-2013-08-01-0300\t1375351202\nkaren/home/mail@zfs-auto-snap_daily-2013-08-24-0300\t1377338402\nkaren/home/mail@zfs-auto-snap_daily-2013-08-25-0300\t1377424802\nkaren/home/mail@zfs-auto-snap_daily-2013-08-26-0300\t1377511202\nkaren/home/mail@zfs-auto-snap_daily-2013-08-27-0300\t1377597603\nkaren/home/mail@zfs-auto-snap_daily-2013-08-28-0300\t1377684001\nkaren/home/mail@zfs-auto-snap_daily-2013-08-29-0300\t1377770402\nkaren/home/mail@zfs-auto-snap_hourly-2013-08-30-0100\t1377824401\nkaren/home/mail@zfs-auto-snap_hourly-2013-08-30-0700\t1377846003\nkaren/home/mail@zfs-auto-snap_daily-2013-08-30-1000\t1377856803\nkaren/home/mail@zfs-auto-snap_hourly-2013-08-30-1300\t1377867602\nkaren/home/mail@zfs-auto-snap_hourly-2013-08-30-1900\t1377889202\nkaren/plonezeo\t1364535620\nkaren/plonezeo@zfs-auto-snap_monthly-2013-05-01-0300\t1367402402\nkaren/plonezeo@zfs-auto-snap_monthly-2013-06-01-0300\t1370080801\nkaren/plonezeo@zfs-auto-snap_monthly-2013-07-01-0300\t1372672801\nkaren/plonezeo@zfs-auto-snap_monthly-2013-08-01-0300\t1375351202\nkaren/plonezeo@zfs-auto-snap_daily-2013-08-24-0300\t1377338402\nkaren/plonezeo@zfs-auto-snap_daily-2013-08-25-0300\t1377424802\nkaren/plonezeo@zfs-auto-snap_daily-2013-08-26-0300\t1377511202\nkaren/plonezeo@zfs-auto-snap_daily-2013-08-27-0300\t1377597603\nkaren/plonezeo@zfs-auto-snap_daily-2013-08-28-0300\t1377684001\nkaren/plonezeo@zfs-auto-snap_daily-2013-08-29-0300\t1377770402\nkaren/plonezeo@zfs-auto-snap_hourly-2013-08-30-0100\t1377824401\nkaren/plonezeo@zfs-auto-snap_hourly-2013-08-30-0700\t1377846003\nkaren/plonezeo@zfs-auto-snap_daily-2013-08-30-1000\t1377856803\nkaren/plonezeo@zfs-auto-snap_hourly-2013-08-30-1300\t1377867602\nkaren/plonezeo@zfs-auto-snap_hourly-2013-08-30-1900\t1377889202\nkaren/sekrit\t1371440813\nkaren/sekrit/f-business\t1371456850\nkaren/sekrit/f-proxy\t1371456866\nkaren/sekrit/f-storefront\t1371456856\nkaren/sekrit/f-template\t1371440847\nkaren/sekrit/f-template@initialsetup\t1371456786\nkaren/sekrit/f-tinc\t1371456889\nkaren/sekrit/f-vpn\t1371456860\nkaren/sekrit/f-wallet\t1371456846\nkaren/swap\t1368951906\n')
        )
        dst.parse_zfs_r_output(
            x('backup\t1361271440\nbackup/android.dragonfear\t1369114260\nbackup/android.dragonfear@zfs-auto-snap_monthly-2013-03-01-0101\t1362128463\nbackup/android.dragonfear@zfs-auto-snap_monthly-2013-03-01-0129\t1362130182\nbackup/android.dragonfear@zfs-auto-snap_monthly-2013-03-01-0444\t1362141887\nbackup/android.dragonfear@zfs-auto-snap_monthly-2013-04-01-0300\t1364810414\nbackup/android.dragonfear@zfs-auto-snap_monthly-2013-05-01-0300\t1367402418\nbackup/android.dragonfear@zfs-auto-snap_hourly-2013-05-20-0000\t1369033214\nbackup/android.dragonfear@zfs-auto-snap_hourly-2013-05-20-0600\t1369054841\nbackup/android.dragonfear@zfs-auto-snap_hourly-2013-05-20-1200\t1369076412\nbackup/android.dragonfear@zfs-auto-snap_hourly-2013-05-20-1800\t1369098013\nbackup/android.dragonfear@zfs-auto-snap_monthly-2013-07-01-0331\t1372674994\nbackup/android.dragonfear@zfs-auto-snap_daily-2013-07-14-0323\t1373797618\nbackup/android.dragonfear@zfs-auto-snap_daily-2013-07-15-0325\t1373884328\nbackup/android.dragonfear@zfs-auto-snap_daily-2013-07-16-0322\t1373970445\nbackup/android.dragonfear@zfs-auto-snap_daily-2013-07-17-0318\t1374056599\nbackup/android.dragonfear@zfs-auto-snap_daily-2013-07-18-0317\t1374142936\nbackup/android.dragonfear@zfs-auto-snap_daily-2013-07-21-0318\t1374402163\nbackup/android.dragonfear@zfs-auto-snap_daily-2013-07-22-0324\t1374488958\nbackup/android.dragonfear@zfs-auto-snap_daily-2013-07-23-0319\t1374575075\nbackup/android.dragonfear@zfs-auto-snap_daily-2013-07-24-0306\t1374660448\nbackup/android.dragonfear@zfs-auto-snap_daily-2013-07-25-0322\t1374748051\nbackup/android.dragonfear@zfs-auto-snap_daily-2013-07-26-0317\t1374834166\nbackup/android.dragonfear@zfs-auto-snap_daily-2013-07-27-0318\t1374920650\nbackup/android.dragonfear@zfs-auto-snap_daily-2013-07-28-0306\t1375006055\nbackup/android.dragonfear@zfs-auto-snap_daily-2013-07-30-0321\t1375180170\nbackup/android.dragonfear@zfs-auto-snap_daily-2013-07-31-0319\t1375266576\nbackup/android.dragonfear@zfs-auto-snap_daily-2013-08-02-0215\t1375435540\nbackup/android.dragonfear@zfs-auto-snap_daily-2013-08-02-1011\t1375464515\nbackup/android.dragonfear@zfs-auto-snap_daily-2013-08-12-0336\t1376304094\nbackup/android.dragonfear@zfs-auto-snap_daily-2013-08-13-0318\t1376389617\nbackup/android.dragonfear@zfs-auto-snap_daily-2013-08-14-0317\t1376476477\nbackup/android.dragonfear@zfs-auto-snap_daily-2013-08-15-0319\t1376562530\nbackup/android.dragonfear@zfs-auto-snap_daily-2013-08-17-0318\t1376735225\nbackup/android.dragonfear@zfs-auto-snap_daily-2013-08-18-0331\t1376822513\nbackup/android.dragonfear@zfs-auto-snap_daily-2013-08-19-0320\t1376908454\nbackup/android.dragonfear@zfs-auto-snap_daily-2013-08-22-0320\t1377167362\nbackup/android.dragonfear@zfs-auto-snap_daily-2013-08-25-0306\t1377425250\nbackup/android.dragonfear@zfs-auto-snap_daily-2013-08-26-0322\t1377513080\nbackup/android.dragonfear@zfs-auto-snap_daily-2013-08-27-0306\t1377598076\nbackup/android.dragonfear@zfs-auto-snap_daily-2013-08-29-0249\t1377770391\nbackup/android.dragonfear@zfs-auto-snap_daily-2013-08-29-0449\t1377777504\nbackup/android.dragonfear@zfs-auto-snap_daily-2013-08-30-0306\t1377857258\nbackup/julia.dragonfear\t1365363047\nbackup/julia.dragonfear/julia\t1377425184\nbackup/julia.dragonfear/julia@zfs-auto-snap_monthly-2013-05-01-0300\t1367402401\nbackup/julia.dragonfear/julia@zfs-auto-snap_monthly-2013-06-01-0300\t1370080801\nbackup/julia.dragonfear/julia@zfs-auto-snap_monthly-2013-07-01-0300\t1372672802\nbackup/julia.dragonfear/julia@zfs-auto-snap_daily-2013-07-29-1000\t1375092002\nbackup/julia.dragonfear/julia@zfs-auto-snap_daily-2013-07-30-1000\t1375178402\nbackup/julia.dragonfear/julia@zfs-auto-snap_daily-2013-07-31-1000\t1375264802\nbackup/julia.dragonfear/julia@zfs-auto-snap_monthly-2013-08-01-1000\t1375351201\nbackup/julia.dragonfear/julia@zfs-auto-snap_daily-2013-08-01-1000\t1375351202\nbackup/julia.dragonfear/julia@zfs-auto-snap_daily-2013-08-02-1000\t1375437602\nbackup/julia.dragonfear/julia@zfs-auto-snap_daily-2013-08-03-1000\t1375524002\nbackup/julia.dragonfear/julia@zfs-auto-snap_daily-2013-08-04-1000\t1375610402\nbackup/julia.dragonfear/julia@zfs-auto-snap_daily-2013-08-05-1000\t1375696802\nbackup/julia.dragonfear/julia@zfs-auto-snap_daily-2013-08-06-1000\t1375783203\nbackup/julia.dragonfear/julia@zfs-auto-snap_daily-2013-08-07-1000\t1375869602\nbackup/julia.dragonfear/julia@zfs-auto-snap_daily-2013-08-08-1000\t1375956002\nbackup/julia.dragonfear/julia@zfs-auto-snap_daily-2013-08-09-1000\t1376042402\nbackup/julia.dragonfear/julia@zfs-auto-snap_daily-2013-08-12-1000\t1376301603\nbackup/julia.dragonfear/julia@zfs-auto-snap_daily-2013-08-13-1000\t1376388002\nbackup/julia.dragonfear/julia@zfs-auto-snap_daily-2013-08-14-1000\t1376474403\nbackup/julia.dragonfear/julia@zfs-auto-snap_daily-2013-08-15-1000\t1376560802\nbackup/julia.dragonfear/julia@zfs-auto-snap_daily-2013-08-16-1000\t1376647202\nbackup/julia.dragonfear/julia@zfs-auto-snap_daily-2013-08-17-1000\t1376733602\nbackup/julia.dragonfear/julia@zfs-auto-snap_daily-2013-08-18-1000\t1376820002\nbackup/julia.dragonfear/julia@zfs-auto-snap_daily-2013-08-19-1000\t1376906402\nbackup/julia.dragonfear/julia@zfs-auto-snap_daily-2013-08-20-1000\t1376992802\nbackup/julia.dragonfear/julia@zfs-auto-snap_daily-2013-08-21-1000\t1377079202\nbackup/julia.dragonfear/julia@zfs-auto-snap_daily-2013-08-22-1000\t1377165602\nbackup/julia.dragonfear/julia@zfs-auto-snap_daily-2013-08-23-1000\t1377252002\nbackup/julia.dragonfear/julia@zfs-auto-snap_daily-2013-08-24-1000\t1377338402\nbackup/julia.dragonfear/julia@zfs-auto-snap_daily-2013-08-25-1000\t1377424802\nbackup/julia.dragonfear/julia@zfs-auto-snap_daily-2013-08-26-1000\t1377511202\nbackup/julia.dragonfear/julia@zfs-auto-snap_daily-2013-08-27-1000\t1377597602\nbackup/julia.dragonfear/julia@zfs-auto-snap_daily-2013-08-28-1000\t1377684002\nbackup/julia.dragonfear/julia@zfs-auto-snap_daily-2013-08-29-1000\t1377770402\nbackup/julia.dragonfear/julia@zfs-auto-snap_hourly-2013-08-29-1300\t1377781202\nbackup/julia.dragonfear/julia@zfs-auto-snap_hourly-2013-08-29-1900\t1377802801\nbackup/julia.dragonfear/julia@zfs-auto-snap_hourly-2013-08-30-0100\t1377824402\nbackup/julia.dragonfear/julia@zfs-auto-snap_hourly-2013-08-30-0700\t1377846002\nbackup/julia.dragonfear/julia@zfs-auto-snap_daily-2013-08-30-1000\t1377856802\nbackup/julia.dragonfear/julia/ROOT\t1377425278\nbackup/julia.dragonfear/julia/ROOT@zfs-auto-snap_monthly-2013-05-01-0300\t1367402401\nbackup/julia.dragonfear/julia/ROOT@zfs-auto-snap_monthly-2013-06-01-0300\t1370080801\nbackup/julia.dragonfear/julia/ROOT@zfs-auto-snap_monthly-2013-07-01-0300\t1372672802\nbackup/julia.dragonfear/julia/ROOT@zfs-auto-snap_daily-2013-07-29-1000\t1375092002\nbackup/julia.dragonfear/julia/ROOT@zfs-auto-snap_daily-2013-07-30-1000\t1375178402\nbackup/julia.dragonfear/julia/ROOT@zfs-auto-snap_daily-2013-07-31-1000\t1375264802\nbackup/julia.dragonfear/julia/ROOT@zfs-auto-snap_monthly-2013-08-01-1000\t1375351201\nbackup/julia.dragonfear/julia/ROOT@zfs-auto-snap_daily-2013-08-01-1000\t1375351202\nbackup/julia.dragonfear/julia/ROOT@zfs-auto-snap_daily-2013-08-02-1000\t1375437602\nbackup/julia.dragonfear/julia/ROOT@zfs-auto-snap_daily-2013-08-03-1000\t1375524002\nbackup/julia.dragonfear/julia/ROOT@zfs-auto-snap_daily-2013-08-04-1000\t1375610402\nbackup/julia.dragonfear/julia/ROOT@zfs-auto-snap_daily-2013-08-05-1000\t1375696802\nbackup/julia.dragonfear/julia/ROOT@zfs-auto-snap_daily-2013-08-06-1000\t1375783203\nbackup/julia.dragonfear/julia/ROOT@zfs-auto-snap_daily-2013-08-07-1000\t1375869602\nbackup/julia.dragonfear/julia/ROOT@zfs-auto-snap_daily-2013-08-08-1000\t1375956002\nbackup/julia.dragonfear/julia/ROOT@zfs-auto-snap_daily-2013-08-09-1000\t1376042402\nbackup/julia.dragonfear/julia/ROOT@zfs-auto-snap_daily-2013-08-12-1000\t1376301603\nbackup/julia.dragonfear/julia/ROOT@zfs-auto-snap_daily-2013-08-13-1000\t1376388002\nbackup/julia.dragonfear/julia/ROOT@zfs-auto-snap_daily-2013-08-14-1000\t1376474403\nbackup/julia.dragonfear/julia/ROOT@zfs-auto-snap_daily-2013-08-15-1000\t1376560802\nbackup/julia.dragonfear/julia/ROOT@zfs-auto-snap_daily-2013-08-16-1000\t1376647202\nbackup/julia.dragonfear/julia/ROOT@zfs-auto-snap_daily-2013-08-17-1000\t1376733602\nbackup/julia.dragonfear/julia/ROOT@zfs-auto-snap_daily-2013-08-18-1000\t1376820002\nbackup/julia.dragonfear/julia/ROOT@zfs-auto-snap_daily-2013-08-19-1000\t1376906402\nbackup/julia.dragonfear/julia/ROOT@zfs-auto-snap_daily-2013-08-20-1000\t1376992802\nbackup/julia.dragonfear/julia/ROOT@zfs-auto-snap_daily-2013-08-21-1000\t1377079202\nbackup/julia.dragonfear/julia/ROOT@zfs-auto-snap_daily-2013-08-22-1000\t1377165602\nbackup/julia.dragonfear/julia/ROOT@zfs-auto-snap_daily-2013-08-23-1000\t1377252002\nbackup/julia.dragonfear/julia/ROOT@zfs-auto-snap_daily-2013-08-24-1000\t1377338402\nbackup/julia.dragonfear/julia/ROOT@zfs-auto-snap_daily-2013-08-25-1000\t1377424802\nbackup/julia.dragonfear/julia/ROOT@zfs-auto-snap_daily-2013-08-26-1000\t1377511202\nbackup/julia.dragonfear/julia/ROOT@zfs-auto-snap_daily-2013-08-27-1000\t1377597602\nbackup/julia.dragonfear/julia/ROOT@zfs-auto-snap_daily-2013-08-28-1000\t1377684002\nbackup/julia.dragonfear/julia/ROOT@zfs-auto-snap_daily-2013-08-29-1000\t1377770402\nbackup/julia.dragonfear/julia/ROOT@zfs-auto-snap_hourly-2013-08-29-1300\t1377781202\nbackup/julia.dragonfear/julia/ROOT@zfs-auto-snap_hourly-2013-08-29-1900\t1377802801\nbackup/julia.dragonfear/julia/ROOT@zfs-auto-snap_hourly-2013-08-30-0100\t1377824402\nbackup/julia.dragonfear/julia/ROOT@zfs-auto-snap_hourly-2013-08-30-0700\t1377846002\nbackup/julia.dragonfear/julia/ROOT@zfs-auto-snap_daily-2013-08-30-1000\t1377856802\nbackup/julia.dragonfear/julia/ROOT/os\t1377425301\nbackup/julia.dragonfear/julia/ROOT/os@zfs-auto-snap_monthly-2013-05-01-0300\t1367402401\nbackup/julia.dragonfear/julia/ROOT/os@zfs-auto-snap_monthly-2013-06-01-0300\t1370080801\nbackup/julia.dragonfear/julia/ROOT/os@zfs-auto-snap_monthly-2013-07-01-0300\t1372672802\nbackup/julia.dragonfear/julia/ROOT/os@zfs-auto-snap_daily-2013-07-29-1000\t1375092002\nbackup/julia.dragonfear/julia/ROOT/os@zfs-auto-snap_daily-2013-07-30-1000\t1375178402\nbackup/julia.dragonfear/julia/ROOT/os@zfs-auto-snap_daily-2013-07-31-1000\t1375264802\nbackup/julia.dragonfear/julia/ROOT/os@zfs-auto-snap_monthly-2013-08-01-1000\t1375351201\nbackup/julia.dragonfear/julia/ROOT/os@zfs-auto-snap_daily-2013-08-01-1000\t1375351201\nbackup/julia.dragonfear/julia/ROOT/os@zfs-auto-snap_daily-2013-08-02-1000\t1375437602\nbackup/julia.dragonfear/julia/ROOT/os@zfs-auto-snap_daily-2013-08-03-1000\t1375524002\nbackup/julia.dragonfear/julia/ROOT/os@zfs-auto-snap_daily-2013-08-04-1000\t1375610402\nbackup/julia.dragonfear/julia/ROOT/os@zfs-auto-snap_daily-2013-08-05-1000\t1375696802\nbackup/julia.dragonfear/julia/ROOT/os@zfs-auto-snap_daily-2013-08-06-1000\t1375783203\nbackup/julia.dragonfear/julia/ROOT/os@zfs-auto-snap_daily-2013-08-07-1000\t1375869602\nbackup/julia.dragonfear/julia/ROOT/os@zfs-auto-snap_daily-2013-08-08-1000\t1375956002\nbackup/julia.dragonfear/julia/ROOT/os@zfs-auto-snap_daily-2013-08-09-1000\t1376042402\nbackup/julia.dragonfear/julia/ROOT/os@zfs-auto-snap_daily-2013-08-12-1000\t1376301603\nbackup/julia.dragonfear/julia/ROOT/os@zfs-auto-snap_daily-2013-08-13-1000\t1376388002\nbackup/julia.dragonfear/julia/ROOT/os@zfs-auto-snap_daily-2013-08-14-1000\t1376474403\nbackup/julia.dragonfear/julia/ROOT/os@zfs-auto-snap_daily-2013-08-15-1000\t1376560802\nbackup/julia.dragonfear/julia/ROOT/os@zfs-auto-snap_daily-2013-08-16-1000\t1376647202\nbackup/julia.dragonfear/julia/ROOT/os@zfs-auto-snap_daily-2013-08-17-1000\t1376733602\nbackup/julia.dragonfear/julia/ROOT/os@zfs-auto-snap_daily-2013-08-18-1000\t1376820002\nbackup/julia.dragonfear/julia/ROOT/os@zfs-auto-snap_daily-2013-08-19-1000\t1376906402\nbackup/julia.dragonfear/julia/ROOT/os@zfs-auto-snap_daily-2013-08-20-1000\t1376992802\nbackup/julia.dragonfear/julia/ROOT/os@zfs-auto-snap_daily-2013-08-21-1000\t1377079202\nbackup/julia.dragonfear/julia/ROOT/os@zfs-auto-snap_daily-2013-08-22-1000\t1377165602\nbackup/julia.dragonfear/julia/ROOT/os@zfs-auto-snap_daily-2013-08-23-1000\t1377252002\nbackup/julia.dragonfear/julia/ROOT/os@zfs-auto-snap_daily-2013-08-24-1000\t1377338402\nbackup/julia.dragonfear/julia/ROOT/os@zfs-auto-snap_daily-2013-08-25-1000\t1377424802\nbackup/julia.dragonfear/julia/ROOT/os@zfs-auto-snap_daily-2013-08-26-1000\t1377511202\nbackup/julia.dragonfear/julia/ROOT/os@zfs-auto-snap_daily-2013-08-27-1000\t1377597602\nbackup/julia.dragonfear/julia/ROOT/os@zfs-auto-snap_daily-2013-08-28-1000\t1377684002\nbackup/julia.dragonfear/julia/ROOT/os@zfs-auto-snap_daily-2013-08-29-1000\t1377770402\nbackup/julia.dragonfear/julia/ROOT/os@zfs-auto-snap_hourly-2013-08-29-1300\t1377781202\nbackup/julia.dragonfear/julia/ROOT/os@zfs-auto-snap_hourly-2013-08-29-1900\t1377802801\nbackup/julia.dragonfear/julia/ROOT/os@zfs-auto-snap_hourly-2013-08-30-0100\t1377824402\nbackup/julia.dragonfear/julia/ROOT/os@zfs-auto-snap_hourly-2013-08-30-0700\t1377846002\nbackup/julia.dragonfear/julia/ROOT/os@zfs-auto-snap_daily-2013-08-30-1000\t1377856802\nbackup/karen.dragonfear\t1361585987\nbackup/karen.dragonfear/karen\t1365331722\nbackup/karen.dragonfear/karen@zfs-auto-snap_monthly-2013-05-01-0300\t1367402402\nbackup/karen.dragonfear/karen@zfs-auto-snap_monthly-2013-06-01-0300\t1370080801\nbackup/karen.dragonfear/karen@zfs-auto-snap_monthly-2013-07-01-0300\t1372672801\nbackup/karen.dragonfear/karen@zfs-auto-snap_daily-2013-07-18-0300\t1374141602\nbackup/karen.dragonfear/karen@zfs-auto-snap_daily-2013-07-19-0300\t1374228002\nbackup/karen.dragonfear/karen@zfs-auto-snap_daily-2013-07-20-0300\t1374314401\nbackup/karen.dragonfear/karen@zfs-auto-snap_daily-2013-07-21-0300\t1374400802\nbackup/karen.dragonfear/karen@zfs-auto-snap_daily-2013-07-22-0300\t1374487204\nbackup/karen.dragonfear/karen@zfs-auto-snap_daily-2013-07-23-0300\t1374573602\nbackup/karen.dragonfear/karen@zfs-auto-snap_daily-2013-07-24-0300\t1374660002\nbackup/karen.dragonfear/karen@zfs-auto-snap_daily-2013-07-25-0300\t1374746402\nbackup/karen.dragonfear/karen@zfs-auto-snap_daily-2013-07-26-0300\t1374832802\nbackup/karen.dragonfear/karen@zfs-auto-snap_daily-2013-07-27-0300\t1374919202\nbackup/karen.dragonfear/karen@zfs-auto-snap_daily-2013-07-28-0300\t1375005602\nbackup/karen.dragonfear/karen@zfs-auto-snap_daily-2013-07-29-0300\t1375092001\nbackup/karen.dragonfear/karen@zfs-auto-snap_daily-2013-07-30-0300\t1375178402\nbackup/karen.dragonfear/karen@zfs-auto-snap_daily-2013-07-31-0300\t1375264802\nbackup/karen.dragonfear/karen@zfs-auto-snap_monthly-2013-08-01-0300\t1375351202\nbackup/karen.dragonfear/karen@zfs-auto-snap_daily-2013-08-01-0300\t1375351202\nbackup/karen.dragonfear/karen@zfs-auto-snap_daily-2013-08-02-0300\t1375437602\nbackup/karen.dragonfear/karen@zfs-auto-snap_daily-2013-08-12-0300\t1376301602\nbackup/karen.dragonfear/karen@zfs-auto-snap_daily-2013-08-13-0300\t1376388001\nbackup/karen.dragonfear/karen@zfs-auto-snap_daily-2013-08-14-0300\t1376474402\nbackup/karen.dragonfear/karen@zfs-auto-snap_daily-2013-08-15-0300\t1376560802\nbackup/karen.dragonfear/karen@zfs-auto-snap_daily-2013-08-16-0300\t1376647201\nbackup/karen.dragonfear/karen@zfs-auto-snap_daily-2013-08-17-0300\t1376733603\nbackup/karen.dragonfear/karen@zfs-auto-snap_daily-2013-08-18-0300\t1376820002\nbackup/karen.dragonfear/karen@zfs-auto-snap_daily-2013-08-19-0300\t1376906402\nbackup/karen.dragonfear/karen@zfs-auto-snap_daily-2013-08-20-0300\t1376992802\nbackup/karen.dragonfear/karen@zfs-auto-snap_daily-2013-08-21-0300\t1377079202\nbackup/karen.dragonfear/karen@zfs-auto-snap_daily-2013-08-22-0300\t1377165603\nbackup/karen.dragonfear/karen@zfs-auto-snap_daily-2013-08-24-0300\t1377338402\nbackup/karen.dragonfear/karen@zfs-auto-snap_daily-2013-08-25-0300\t1377424802\nbackup/karen.dragonfear/karen@zfs-auto-snap_daily-2013-08-26-0300\t1377511202\nbackup/karen.dragonfear/karen@zfs-auto-snap_hourly-2013-08-26-0600\t1377522002\nbackup/karen.dragonfear/karen@zfs-auto-snap_hourly-2013-08-26-1200\t1377543602\nbackup/karen.dragonfear/karen@zfs-auto-snap_hourly-2013-08-26-1800\t1377565202\nbackup/karen.dragonfear/karen@zfs-auto-snap_hourly-2013-08-27-0000\t1377586803\nbackup/karen.dragonfear/karen@zfs-auto-snap_daily-2013-08-27-0300\t1377597603\nbackup/karen.dragonfear/karen/ROOT\t1365331760\nbackup/karen.dragonfear/karen/ROOT@zfs-auto-snap_monthly-2013-05-01-0300\t1367402402\nbackup/karen.dragonfear/karen/ROOT@zfs-auto-snap_monthly-2013-06-01-0300\t1370080801\nbackup/karen.dragonfear/karen/ROOT@zfs-auto-snap_monthly-2013-07-01-0300\t1372672801\nbackup/karen.dragonfear/karen/ROOT@zfs-auto-snap_daily-2013-07-18-0300\t1374141602\nbackup/karen.dragonfear/karen/ROOT@zfs-auto-snap_daily-2013-07-19-0300\t1374228002\nbackup/karen.dragonfear/karen/ROOT@zfs-auto-snap_daily-2013-07-20-0300\t1374314401\nbackup/karen.dragonfear/karen/ROOT@zfs-auto-snap_daily-2013-07-21-0300\t1374400802\nbackup/karen.dragonfear/karen/ROOT@zfs-auto-snap_daily-2013-07-22-0300\t1374487204\nbackup/karen.dragonfear/karen/ROOT@zfs-auto-snap_daily-2013-07-23-0300\t1374573602\nbackup/karen.dragonfear/karen/ROOT@zfs-auto-snap_daily-2013-07-24-0300\t1374660002\nbackup/karen.dragonfear/karen/ROOT@zfs-auto-snap_daily-2013-07-25-0300\t1374746402\nbackup/karen.dragonfear/karen/ROOT@zfs-auto-snap_daily-2013-07-26-0300\t1374832802\nbackup/karen.dragonfear/karen/ROOT@zfs-auto-snap_daily-2013-07-27-0300\t1374919202\nbackup/karen.dragonfear/karen/ROOT@zfs-auto-snap_daily-2013-07-28-0300\t1375005602\nbackup/karen.dragonfear/karen/ROOT@zfs-auto-snap_daily-2013-07-29-0300\t1375092001\nbackup/karen.dragonfear/karen/ROOT@zfs-auto-snap_daily-2013-07-30-0300\t1375178402\nbackup/karen.dragonfear/karen/ROOT@zfs-auto-snap_daily-2013-07-31-0300\t1375264802\nbackup/karen.dragonfear/karen/ROOT@zfs-auto-snap_monthly-2013-08-01-0300\t1375351202\nbackup/karen.dragonfear/karen/ROOT@zfs-auto-snap_daily-2013-08-01-0300\t1375351202\nbackup/karen.dragonfear/karen/ROOT@zfs-auto-snap_daily-2013-08-02-0300\t1375437602\nbackup/karen.dragonfear/karen/ROOT@zfs-auto-snap_daily-2013-08-12-0300\t1376301602\nbackup/karen.dragonfear/karen/ROOT@zfs-auto-snap_daily-2013-08-13-0300\t1376388001\nbackup/karen.dragonfear/karen/ROOT@zfs-auto-snap_daily-2013-08-14-0300\t1376474402\nbackup/karen.dragonfear/karen/ROOT@zfs-auto-snap_daily-2013-08-15-0300\t1376560802\nbackup/karen.dragonfear/karen/ROOT@zfs-auto-snap_daily-2013-08-16-0300\t1376647201\nbackup/karen.dragonfear/karen/ROOT@zfs-auto-snap_daily-2013-08-17-0300\t1376733603\nbackup/karen.dragonfear/karen/ROOT@zfs-auto-snap_daily-2013-08-18-0300\t1376820002\nbackup/karen.dragonfear/karen/ROOT@zfs-auto-snap_daily-2013-08-19-0300\t1376906402\nbackup/karen.dragonfear/karen/ROOT@zfs-auto-snap_daily-2013-08-20-0300\t1376992802\nbackup/karen.dragonfear/karen/ROOT@zfs-auto-snap_daily-2013-08-21-0300\t1377079202\nbackup/karen.dragonfear/karen/ROOT@zfs-auto-snap_daily-2013-08-22-0300\t1377165603\nbackup/karen.dragonfear/karen/ROOT@zfs-auto-snap_daily-2013-08-24-0300\t1377338402\nbackup/karen.dragonfear/karen/ROOT@zfs-auto-snap_daily-2013-08-25-0300\t1377424802\nbackup/karen.dragonfear/karen/ROOT@zfs-auto-snap_daily-2013-08-26-0300\t1377511202\nbackup/karen.dragonfear/karen/ROOT@zfs-auto-snap_hourly-2013-08-26-0600\t1377522002\nbackup/karen.dragonfear/karen/ROOT@zfs-auto-snap_hourly-2013-08-26-1200\t1377543602\nbackup/karen.dragonfear/karen/ROOT@zfs-auto-snap_hourly-2013-08-26-1800\t1377565202\nbackup/karen.dragonfear/karen/ROOT@zfs-auto-snap_hourly-2013-08-27-0000\t1377586803\nbackup/karen.dragonfear/karen/ROOT@zfs-auto-snap_daily-2013-08-27-0300\t1377597603\nbackup/karen.dragonfear/karen/ROOT/fedora\t1365331770\nbackup/karen.dragonfear/karen/ROOT/fedora@zfs-auto-snap_monthly-2013-05-01-0300\t1367402402\nbackup/karen.dragonfear/karen/ROOT/fedora@zfs-auto-snap_monthly-2013-06-01-0300\t1370080801\nbackup/karen.dragonfear/karen/ROOT/fedora@zfs-auto-snap_monthly-2013-07-01-0300\t1372672801\nbackup/karen.dragonfear/karen/ROOT/fedora@zfs-auto-snap_daily-2013-07-18-0300\t1374141602\nbackup/karen.dragonfear/karen/ROOT/fedora@zfs-auto-snap_daily-2013-07-19-0300\t1374228002\nbackup/karen.dragonfear/karen/ROOT/fedora@zfs-auto-snap_daily-2013-07-20-0300\t1374314401\nbackup/karen.dragonfear/karen/ROOT/fedora@zfs-auto-snap_daily-2013-07-21-0300\t1374400802\nbackup/karen.dragonfear/karen/ROOT/fedora@zfs-auto-snap_daily-2013-07-22-0300\t1374487204\nbackup/karen.dragonfear/karen/ROOT/fedora@zfs-auto-snap_daily-2013-07-23-0300\t1374573602\nbackup/karen.dragonfear/karen/ROOT/fedora@zfs-auto-snap_daily-2013-07-24-0300\t1374660002\nbackup/karen.dragonfear/karen/ROOT/fedora@zfs-auto-snap_daily-2013-07-25-0300\t1374746402\nbackup/karen.dragonfear/karen/ROOT/fedora@zfs-auto-snap_daily-2013-07-26-0300\t1374832802\nbackup/karen.dragonfear/karen/ROOT/fedora@zfs-auto-snap_daily-2013-07-27-0300\t1374919202\nbackup/karen.dragonfear/karen/ROOT/fedora@zfs-auto-snap_daily-2013-07-28-0300\t1375005602\nbackup/karen.dragonfear/karen/ROOT/fedora@zfs-auto-snap_daily-2013-07-29-0300\t1375092001\nbackup/karen.dragonfear/karen/ROOT/fedora@zfs-auto-snap_daily-2013-07-30-0300\t1375178402\nbackup/karen.dragonfear/karen/ROOT/fedora@zfs-auto-snap_daily-2013-07-31-0300\t1375264802\nbackup/karen.dragonfear/karen/ROOT/fedora@zfs-auto-snap_monthly-2013-08-01-0300\t1375351202\nbackup/karen.dragonfear/karen/ROOT/fedora@zfs-auto-snap_daily-2013-08-01-0300\t1375351202\nbackup/karen.dragonfear/karen/ROOT/fedora@zfs-auto-snap_daily-2013-08-02-0300\t1375437602\nbackup/karen.dragonfear/karen/ROOT/fedora@zfs-auto-snap_daily-2013-08-12-0300\t1376301602\nbackup/karen.dragonfear/karen/ROOT/fedora@zfs-auto-snap_daily-2013-08-13-0300\t1376388001\nbackup/karen.dragonfear/karen/ROOT/fedora@zfs-auto-snap_daily-2013-08-14-0300\t1376474402\nbackup/karen.dragonfear/karen/ROOT/fedora@zfs-auto-snap_daily-2013-08-15-0300\t1376560802\nbackup/karen.dragonfear/karen/ROOT/fedora@zfs-auto-snap_daily-2013-08-16-0300\t1376647201\nbackup/karen.dragonfear/karen/ROOT/fedora@zfs-auto-snap_daily-2013-08-17-0300\t1376733603\nbackup/karen.dragonfear/karen/ROOT/fedora@zfs-auto-snap_daily-2013-08-18-0300\t1376820002\nbackup/karen.dragonfear/karen/ROOT/fedora@zfs-auto-snap_daily-2013-08-19-0300\t1376906402\nbackup/karen.dragonfear/karen/ROOT/fedora@zfs-auto-snap_daily-2013-08-20-0300\t1376992802\nbackup/karen.dragonfear/karen/ROOT/fedora@zfs-auto-snap_daily-2013-08-21-0300\t1377079202\nbackup/karen.dragonfear/karen/ROOT/fedora@zfs-auto-snap_daily-2013-08-22-0300\t1377165603\nbackup/karen.dragonfear/karen/ROOT/fedora@zfs-auto-snap_daily-2013-08-24-0300\t1377338402\nbackup/karen.dragonfear/karen/ROOT/fedora@zfs-auto-snap_daily-2013-08-25-0300\t1377424802\nbackup/karen.dragonfear/karen/ROOT/fedora@zfs-auto-snap_daily-2013-08-26-0300\t1377511202\nbackup/karen.dragonfear/karen/ROOT/fedora@zfs-auto-snap_hourly-2013-08-26-0600\t1377522002\nbackup/karen.dragonfear/karen/ROOT/fedora@zfs-auto-snap_hourly-2013-08-26-1200\t1377543602\nbackup/karen.dragonfear/karen/ROOT/fedora@zfs-auto-snap_hourly-2013-08-26-1800\t1377565202\nbackup/karen.dragonfear/karen/ROOT/fedora@zfs-auto-snap_hourly-2013-08-27-0000\t1377586803\nbackup/karen.dragonfear/karen/ROOT/fedora@zfs-auto-snap_daily-2013-08-27-0300\t1377597603\nbackup/karen.dragonfear/karen/home\t1365333654\nbackup/karen.dragonfear/karen/home@zfs-auto-snap_monthly-2013-05-01-0300\t1367402402\nbackup/karen.dragonfear/karen/home@zfs-auto-snap_monthly-2013-06-01-0300\t1370080801\nbackup/karen.dragonfear/karen/home@zfs-auto-snap_monthly-2013-07-01-0300\t1372672801\nbackup/karen.dragonfear/karen/home@zfs-auto-snap_daily-2013-07-20-0300\t1374314401\nbackup/karen.dragonfear/karen/home@zfs-auto-snap_daily-2013-07-21-0300\t1374400802\nbackup/karen.dragonfear/karen/home@zfs-auto-snap_daily-2013-07-22-0300\t1374487204\nbackup/karen.dragonfear/karen/home@zfs-auto-snap_daily-2013-07-23-0300\t1374573602\nbackup/karen.dragonfear/karen/home@zfs-auto-snap_daily-2013-07-24-0300\t1374660002\nbackup/karen.dragonfear/karen/home@zfs-auto-snap_daily-2013-07-25-0300\t1374746402\nbackup/karen.dragonfear/karen/home@zfs-auto-snap_daily-2013-07-26-0300\t1374832802\nbackup/karen.dragonfear/karen/home@zfs-auto-snap_daily-2013-07-27-0300\t1374919202\nbackup/karen.dragonfear/karen/home@zfs-auto-snap_daily-2013-07-28-0300\t1375005602\nbackup/karen.dragonfear/karen/home@zfs-auto-snap_daily-2013-07-29-0300\t1375092001\nbackup/karen.dragonfear/karen/home@zfs-auto-snap_daily-2013-07-30-0300\t1375178402\nbackup/karen.dragonfear/karen/home@zfs-auto-snap_daily-2013-07-31-0300\t1375264802\nbackup/karen.dragonfear/karen/home@zfs-auto-snap_monthly-2013-08-01-0300\t1375351202\nbackup/karen.dragonfear/karen/home@zfs-auto-snap_daily-2013-08-01-0300\t1375351202\nbackup/karen.dragonfear/karen/home@zfs-auto-snap_daily-2013-08-02-0300\t1375437602\nbackup/karen.dragonfear/karen/home@zfs-auto-snap_daily-2013-08-12-0300\t1376301602\nbackup/karen.dragonfear/karen/home@zfs-auto-snap_daily-2013-08-13-0300\t1376388001\nbackup/karen.dragonfear/karen/home@zfs-auto-snap_daily-2013-08-14-0300\t1376474402\nbackup/karen.dragonfear/karen/home@zfs-auto-snap_daily-2013-08-15-0300\t1376560802\nbackup/karen.dragonfear/karen/home@zfs-auto-snap_daily-2013-08-16-0300\t1376647201\nbackup/karen.dragonfear/karen/home@zfs-auto-snap_daily-2013-08-17-0300\t1376733603\nbackup/karen.dragonfear/karen/home@zfs-auto-snap_daily-2013-08-18-0300\t1376820002\nbackup/karen.dragonfear/karen/home@zfs-auto-snap_daily-2013-08-19-0300\t1376906402\nbackup/karen.dragonfear/karen/home@zfs-auto-snap_daily-2013-08-20-0300\t1376992802\nbackup/karen.dragonfear/karen/home@zfs-auto-snap_daily-2013-08-21-0300\t1377079202\nbackup/karen.dragonfear/karen/home@zfs-auto-snap_daily-2013-08-22-0300\t1377165603\nbackup/karen.dragonfear/karen/home@zfs-auto-snap_daily-2013-08-24-0300\t1377338402\nbackup/karen.dragonfear/karen/home@zfs-auto-snap_daily-2013-08-25-0300\t1377424802\nbackup/karen.dragonfear/karen/home@zfs-auto-snap_daily-2013-08-26-0300\t1377511202\nbackup/karen.dragonfear/karen/home@zfs-auto-snap_daily-2013-08-27-0300\t1377597603\nbackup/karen.dragonfear/karen/home/mail\t1374835332\nbackup/karen.dragonfear/karen/home/mail@zfs-auto-snap_daily-2013-07-26-0300\t1374832802\nbackup/karen.dragonfear/karen/home/mail@zfs-auto-snap_daily-2013-07-27-0300\t1374919202\nbackup/karen.dragonfear/karen/home/mail@zfs-auto-snap_daily-2013-07-28-0300\t1375005602\nbackup/karen.dragonfear/karen/home/mail@zfs-auto-snap_daily-2013-07-29-0300\t1375092001\nbackup/karen.dragonfear/karen/home/mail@zfs-auto-snap_daily-2013-07-30-0300\t1375178402\nbackup/karen.dragonfear/karen/home/mail@zfs-auto-snap_daily-2013-07-31-0300\t1375264802\nbackup/karen.dragonfear/karen/home/mail@zfs-auto-snap_monthly-2013-08-01-0300\t1375351202\nbackup/karen.dragonfear/karen/home/mail@zfs-auto-snap_daily-2013-08-01-0300\t1375351202\nbackup/karen.dragonfear/karen/home/mail@zfs-auto-snap_daily-2013-08-02-0300\t1375437602\nbackup/karen.dragonfear/karen/home/mail@zfs-auto-snap_daily-2013-08-12-0300\t1376301602\nbackup/karen.dragonfear/karen/home/mail@zfs-auto-snap_daily-2013-08-13-0300\t1376388001\nbackup/karen.dragonfear/karen/home/mail@zfs-auto-snap_daily-2013-08-14-0300\t1376474402\nbackup/karen.dragonfear/karen/home/mail@zfs-auto-snap_daily-2013-08-15-0300\t1376560802\nbackup/karen.dragonfear/karen/home/mail@zfs-auto-snap_daily-2013-08-16-0300\t1376647201\nbackup/karen.dragonfear/karen/home/mail@zfs-auto-snap_daily-2013-08-17-0300\t1376733603\nbackup/karen.dragonfear/karen/home/mail@zfs-auto-snap_daily-2013-08-18-0300\t1376820002\nbackup/karen.dragonfear/karen/home/mail@zfs-auto-snap_daily-2013-08-19-0300\t1376906402\nbackup/karen.dragonfear/karen/home/mail@zfs-auto-snap_daily-2013-08-20-0300\t1376992802\nbackup/karen.dragonfear/karen/home/mail@zfs-auto-snap_daily-2013-08-21-0300\t1377079202\nbackup/karen.dragonfear/karen/home/mail@zfs-auto-snap_daily-2013-08-22-0300\t1377165603\nbackup/karen.dragonfear/karen/home/mail@zfs-auto-snap_daily-2013-08-24-0300\t1377338402\nbackup/karen.dragonfear/karen/home/mail@zfs-auto-snap_daily-2013-08-25-0300\t1377424802\nbackup/karen.dragonfear/karen/home/mail@zfs-auto-snap_daily-2013-08-26-0300\t1377511202\nbackup/karen.dragonfear/karen/home/mail@zfs-auto-snap_daily-2013-08-27-0300\t1377597603\nbackup/karen.dragonfear/karen/plonezeo\t1365332753\nbackup/karen.dragonfear/karen/plonezeo@zfs-auto-snap_monthly-2013-05-01-0300\t1367402402\nbackup/karen.dragonfear/karen/plonezeo@zfs-auto-snap_monthly-2013-06-01-0300\t1370080801\nbackup/karen.dragonfear/karen/plonezeo@zfs-auto-snap_monthly-2013-07-01-0300\t1372672801\nbackup/karen.dragonfear/karen/plonezeo@zfs-auto-snap_daily-2013-07-20-0300\t1374314401\nbackup/karen.dragonfear/karen/plonezeo@zfs-auto-snap_daily-2013-07-21-0300\t1374400802\nbackup/karen.dragonfear/karen/plonezeo@zfs-auto-snap_daily-2013-07-22-0300\t1374487204\nbackup/karen.dragonfear/karen/plonezeo@zfs-auto-snap_daily-2013-07-23-0300\t1374573602\nbackup/karen.dragonfear/karen/plonezeo@zfs-auto-snap_daily-2013-07-24-0300\t1374660002\nbackup/karen.dragonfear/karen/plonezeo@zfs-auto-snap_daily-2013-07-25-0300\t1374746402\nbackup/karen.dragonfear/karen/plonezeo@zfs-auto-snap_daily-2013-07-26-0300\t1374832802\nbackup/karen.dragonfear/karen/plonezeo@zfs-auto-snap_daily-2013-07-27-0300\t1374919202\nbackup/karen.dragonfear/karen/plonezeo@zfs-auto-snap_daily-2013-07-28-0300\t1375005602\nbackup/karen.dragonfear/karen/plonezeo@zfs-auto-snap_daily-2013-07-29-0300\t1375092001\nbackup/karen.dragonfear/karen/plonezeo@zfs-auto-snap_daily-2013-07-30-0300\t1375178402\nbackup/karen.dragonfear/karen/plonezeo@zfs-auto-snap_daily-2013-07-31-0300\t1375264802\nbackup/karen.dragonfear/karen/plonezeo@zfs-auto-snap_monthly-2013-08-01-0300\t1375351202\nbackup/karen.dragonfear/karen/plonezeo@zfs-auto-snap_daily-2013-08-01-0300\t1375351202\nbackup/karen.dragonfear/karen/plonezeo@zfs-auto-snap_daily-2013-08-02-0300\t1375437602\nbackup/karen.dragonfear/karen/plonezeo@zfs-auto-snap_daily-2013-08-12-0300\t1376301602\nbackup/karen.dragonfear/karen/plonezeo@zfs-auto-snap_daily-2013-08-13-0300\t1376388001\nbackup/karen.dragonfear/karen/plonezeo@zfs-auto-snap_daily-2013-08-14-0300\t1376474402\nbackup/karen.dragonfear/karen/plonezeo@zfs-auto-snap_daily-2013-08-15-0300\t1376560802\nbackup/karen.dragonfear/karen/plonezeo@zfs-auto-snap_daily-2013-08-16-0300\t1376647201\nbackup/karen.dragonfear/karen/plonezeo@zfs-auto-snap_daily-2013-08-17-0300\t1376733603\nbackup/karen.dragonfear/karen/plonezeo@zfs-auto-snap_daily-2013-08-18-0300\t1376820002\nbackup/karen.dragonfear/karen/plonezeo@zfs-auto-snap_daily-2013-08-19-0300\t1376906402\nbackup/karen.dragonfear/karen/plonezeo@zfs-auto-snap_daily-2013-08-20-0300\t1376992802\nbackup/karen.dragonfear/karen/plonezeo@zfs-auto-snap_daily-2013-08-21-0300\t1377079202\nbackup/karen.dragonfear/karen/plonezeo@zfs-auto-snap_daily-2013-08-22-0300\t1377165603\nbackup/karen.dragonfear/karen/plonezeo@zfs-auto-snap_daily-2013-08-24-0300\t1377338402\nbackup/karen.dragonfear/karen/plonezeo@zfs-auto-snap_daily-2013-08-25-0300\t1377424802\nbackup/karen.dragonfear/karen/plonezeo@zfs-auto-snap_daily-2013-08-26-0300\t1377511202\nbackup/karen.dragonfear/karen/plonezeo@zfs-auto-snap_daily-2013-08-27-0300\t1377597603\nbackup/mathilda.dragonfear\t1362357184\nbackup/mathilda.dragonfear/mathilda\t1365361456\nbackup/mathilda.dragonfear/mathilda@zfs-auto-snap_monthly-2013-05-01-0300\t1367402428\nbackup/mathilda.dragonfear/mathilda@zfs-auto-snap_monthly-2013-06-01-0300\t1370080844\nbackup/mathilda.dragonfear/mathilda@zfs-auto-snap_monthly-2013-07-01-1000\t1372672835\nbackup/mathilda.dragonfear/mathilda@zfs-auto-snap_monthly-2013-08-01-1000\t1375351247\nbackup/mathilda.dragonfear/mathilda@zfs-auto-snap_daily-2013-08-21-1000\t1377079253\nbackup/mathilda.dragonfear/mathilda@zfs-auto-snap_daily-2013-08-22-1000\t1377165654\nbackup/mathilda.dragonfear/mathilda@zfs-auto-snap_daily-2013-08-25-1000\t1377424846\nbackup/mathilda.dragonfear/mathilda@zfs-auto-snap_daily-2013-08-26-1000\t1377511251\nbackup/mathilda.dragonfear/mathilda@zfs-auto-snap_daily-2013-08-27-1000\t1377597650\nbackup/mathilda.dragonfear/mathilda@zfs-auto-snap_daily-2013-08-29-1005\t1377770728\nbackup/mathilda.dragonfear/mathilda@zfs-auto-snap_hourly-2013-08-30-0101\t1377824464\nbackup/mathilda.dragonfear/mathilda@zfs-auto-snap_hourly-2013-08-30-0701\t1377846081\nbackup/mathilda.dragonfear/mathilda@zfs-auto-snap_daily-2013-08-30-1000\t1377856867\nbackup/mathilda.dragonfear/mathilda@zfs-auto-snap_hourly-2013-08-30-1300\t1377867659\nbackup/mathilda.dragonfear/mathilda@zfs-auto-snap_hourly-2013-08-30-1900\t1377889260\nbackup/mathilda.dragonfear/mathilda/ROOT\t1365361509\nbackup/mathilda.dragonfear/mathilda/ROOT@zfs-auto-snap_monthly-2013-05-01-0300\t1367402428\nbackup/mathilda.dragonfear/mathilda/ROOT@zfs-auto-snap_monthly-2013-06-01-0300\t1370080844\nbackup/mathilda.dragonfear/mathilda/ROOT@zfs-auto-snap_monthly-2013-07-01-1000\t1372672835\nbackup/mathilda.dragonfear/mathilda/ROOT@zfs-auto-snap_monthly-2013-08-01-1000\t1375351247\nbackup/mathilda.dragonfear/mathilda/ROOT@zfs-auto-snap_daily-2013-08-21-1000\t1377079253\nbackup/mathilda.dragonfear/mathilda/ROOT@zfs-auto-snap_daily-2013-08-22-1000\t1377165654\nbackup/mathilda.dragonfear/mathilda/ROOT@zfs-auto-snap_daily-2013-08-25-1000\t1377424846\nbackup/mathilda.dragonfear/mathilda/ROOT@zfs-auto-snap_daily-2013-08-26-1000\t1377511251\nbackup/mathilda.dragonfear/mathilda/ROOT@zfs-auto-snap_daily-2013-08-27-1000\t1377597649\nbackup/mathilda.dragonfear/mathilda/ROOT@zfs-auto-snap_daily-2013-08-29-1005\t1377770728\nbackup/mathilda.dragonfear/mathilda/ROOT@zfs-auto-snap_hourly-2013-08-30-0101\t1377824464\nbackup/mathilda.dragonfear/mathilda/ROOT@zfs-auto-snap_hourly-2013-08-30-0701\t1377846081\nbackup/mathilda.dragonfear/mathilda/ROOT@zfs-auto-snap_daily-2013-08-30-1000\t1377856867\nbackup/mathilda.dragonfear/mathilda/ROOT@zfs-auto-snap_hourly-2013-08-30-1300\t1377867659\nbackup/mathilda.dragonfear/mathilda/ROOT@zfs-auto-snap_hourly-2013-08-30-1900\t1377889260\nbackup/mathilda.dragonfear/mathilda/ROOT/os\t1365361511\nbackup/mathilda.dragonfear/mathilda/ROOT/os@zfs-auto-snap_monthly-2013-05-01-0300\t1367402428\nbackup/mathilda.dragonfear/mathilda/ROOT/os@zfs-auto-snap_monthly-2013-06-01-0300\t1370080844\nbackup/mathilda.dragonfear/mathilda/ROOT/os@zfs-auto-snap_monthly-2013-07-01-1000\t1372672835\nbackup/mathilda.dragonfear/mathilda/ROOT/os@zfs-auto-snap_monthly-2013-08-01-1000\t1375351247\nbackup/mathilda.dragonfear/mathilda/ROOT/os@zfs-auto-snap_daily-2013-08-21-1000\t1377079253\nbackup/mathilda.dragonfear/mathilda/ROOT/os@zfs-auto-snap_daily-2013-08-22-1000\t1377165654\nbackup/mathilda.dragonfear/mathilda/ROOT/os@zfs-auto-snap_daily-2013-08-25-1000\t1377424846\nbackup/mathilda.dragonfear/mathilda/ROOT/os@zfs-auto-snap_daily-2013-08-26-1000\t1377511251\nbackup/mathilda.dragonfear/mathilda/ROOT/os@zfs-auto-snap_daily-2013-08-27-1000\t1377597649\nbackup/mathilda.dragonfear/mathilda/ROOT/os@zfs-auto-snap_daily-2013-08-29-1005\t1377770728\nbackup/mathilda.dragonfear/mathilda/ROOT/os@zfs-auto-snap_hourly-2013-08-30-0101\t1377824464\nbackup/mathilda.dragonfear/mathilda/ROOT/os@zfs-auto-snap_hourly-2013-08-30-0701\t1377846081\nbackup/mathilda.dragonfear/mathilda/ROOT/os@zfs-auto-snap_daily-2013-08-30-1000\t1377856867\nbackup/mathilda.dragonfear/mathilda/ROOT/os@zfs-auto-snap_hourly-2013-08-30-1300\t1377867659\nbackup/mathilda.dragonfear/mathilda/ROOT/os@zfs-auto-snap_hourly-2013-08-30-1900\t1377889260\nbackup/paola.dragonfear\t1361591120\nbackup/paola.dragonfear/chest\t1361591120\nbackup/paola.dragonfear/chest@zfs-auto-snap_monthly-2013-03-01-0444\t1362141887\nbackup/paola.dragonfear/chest@zfs-auto-snap_monthly-2013-04-01-0300\t1364810414\nbackup/paola.dragonfear/chest@zfs-auto-snap_monthly-2013-05-01-0300\t1367402418\nbackup/paola.dragonfear/chest@zfs-auto-snap_monthly-2013-06-01-0300\t1370080821\nbackup/paola.dragonfear/chest@zfs-auto-snap_monthly-2013-07-01-0300\t1372672820\nbackup/paola.dragonfear/chest@zfs-auto-snap_monthly-2013-08-01-1000\t1375351220\nbackup/paola.dragonfear/chest@zfs-auto-snap_daily-2013-08-24-1000\t1377338427\nbackup/paola.dragonfear/chest@zfs-auto-snap_daily-2013-08-25-1000\t1377424817\nbackup/paola.dragonfear/chest@zfs-auto-snap_daily-2013-08-26-1000\t1377511204\nbackup/paola.dragonfear/chest@zfs-auto-snap_daily-2013-08-27-1000\t1377597604\nbackup/paola.dragonfear/chest@zfs-auto-snap_hourly-2013-08-28-0700\t1377673204\nbackup/paola.dragonfear/chest@zfs-auto-snap_daily-2013-08-28-1000\t1377684027\nbackup/paola.dragonfear/chest@zfs-auto-snap_daily-2013-08-29-1000\t1377770429\nbackup/paola.dragonfear/chest@zfs-auto-snap_hourly-2013-08-29-1300\t1377781205\nbackup/paola.dragonfear/chest@zfs-auto-snap_hourly-2013-08-29-1900\t1377802804\nbackup/paola.dragonfear/chest@zfs-auto-snap_daily-2013-08-30-1000\t1377856827\nbackup/paola.dragonfear/chest@zfs-auto-snap_hourly-2013-08-30-1900\t1377889225\nbackup/paola.dragonfear/chest/shared\t1361598933\nbackup/paola.dragonfear/chest/shared@zfs-auto-snap_monthly-2013-03-01-0444\t1362141887\nbackup/paola.dragonfear/chest/shared@zfs-auto-snap_monthly-2013-04-01-0300\t1364810414\nbackup/paola.dragonfear/chest/shared@zfs-auto-snap_monthly-2013-05-01-0300\t1367402418\nbackup/paola.dragonfear/chest/shared@zfs-auto-snap_monthly-2013-06-01-0300\t1370080821\nbackup/paola.dragonfear/chest/shared@zfs-auto-snap_monthly-2013-07-01-0300\t1372672820\nbackup/paola.dragonfear/chest/shared@zfs-auto-snap_monthly-2013-08-01-1000\t1375351220\nbackup/paola.dragonfear/chest/shared@zfs-auto-snap_daily-2013-08-24-1000\t1377338427\nbackup/paola.dragonfear/chest/shared@zfs-auto-snap_daily-2013-08-25-1000\t1377424817\nbackup/paola.dragonfear/chest/shared@zfs-auto-snap_daily-2013-08-26-1000\t1377511204\nbackup/paola.dragonfear/chest/shared@zfs-auto-snap_daily-2013-08-27-1000\t1377597604\nbackup/paola.dragonfear/chest/shared@zfs-auto-snap_hourly-2013-08-28-0700\t1377673204\nbackup/paola.dragonfear/chest/shared@zfs-auto-snap_daily-2013-08-28-1000\t1377684027\nbackup/paola.dragonfear/chest/shared@zfs-auto-snap_daily-2013-08-29-1000\t1377770429\nbackup/paola.dragonfear/chest/shared@zfs-auto-snap_hourly-2013-08-29-1300\t1377781205\nbackup/paola.dragonfear/chest/shared@zfs-auto-snap_hourly-2013-08-29-1900\t1377802804\nbackup/paola.dragonfear/chest/shared@zfs-auto-snap_daily-2013-08-30-1000\t1377856827\nbackup/paola.dragonfear/chest/shared@zfs-auto-snap_hourly-2013-08-30-1900\t1377889225\nbackup/paola.dragonfear/chest/shared/Entertainment\t1361599818\nbackup/paola.dragonfear/chest/shared/Entertainment@zfs-auto-snap_monthly-2013-03-01-0444\t1362141887\nbackup/paola.dragonfear/chest/shared/Entertainment@zfs-auto-snap_monthly-2013-04-01-0300\t1364810414\nbackup/paola.dragonfear/chest/shared/Entertainment@zfs-auto-snap_monthly-2013-05-01-0300\t1367402418\nbackup/paola.dragonfear/chest/shared/Entertainment@zfs-auto-snap_monthly-2013-06-01-0300\t1370080821\nbackup/paola.dragonfear/chest/shared/Entertainment@zfs-auto-snap_monthly-2013-07-01-0300\t1372672820\nbackup/paola.dragonfear/chest/shared/Entertainment@zfs-auto-snap_monthly-2013-08-01-1000\t1375351220\nbackup/paola.dragonfear/chest/shared/Entertainment@zfs-auto-snap_daily-2013-08-24-1000\t1377338427\nbackup/paola.dragonfear/chest/shared/Entertainment@zfs-auto-snap_daily-2013-08-25-1000\t1377424817\nbackup/paola.dragonfear/chest/shared/Entertainment@zfs-auto-snap_daily-2013-08-26-1000\t1377511204\nbackup/paola.dragonfear/chest/shared/Entertainment@zfs-auto-snap_daily-2013-08-27-1000\t1377597604\nbackup/paola.dragonfear/chest/shared/Entertainment@zfs-auto-snap_hourly-2013-08-28-0700\t1377673204\nbackup/paola.dragonfear/chest/shared/Entertainment@zfs-auto-snap_daily-2013-08-28-1000\t1377684027\nbackup/paola.dragonfear/chest/shared/Entertainment@zfs-auto-snap_daily-2013-08-29-1000\t1377770429\nbackup/paola.dragonfear/chest/shared/Entertainment@zfs-auto-snap_hourly-2013-08-29-1300\t1377781205\nbackup/paola.dragonfear/chest/shared/Entertainment@zfs-auto-snap_hourly-2013-08-29-1900\t1377802804\nbackup/paola.dragonfear/chest/shared/Entertainment@zfs-auto-snap_daily-2013-08-30-1000\t1377856827\nbackup/paola.dragonfear/chest/shared/Entertainment@zfs-auto-snap_hourly-2013-08-30-1900\t1377889225\nbackup/paola.dragonfear/chest/shared/Entertainment/Jokes\t1361623074\nbackup/paola.dragonfear/chest/shared/Entertainment/Jokes@zfs-auto-snap_monthly-2013-03-01-0444\t1362141887\nbackup/paola.dragonfear/chest/shared/Entertainment/Jokes@zfs-auto-snap_monthly-2013-04-01-0300\t1364810414\nbackup/paola.dragonfear/chest/shared/Entertainment/Jokes@zfs-auto-snap_monthly-2013-05-01-0300\t1367402418\nbackup/paola.dragonfear/chest/shared/Entertainment/Jokes@zfs-auto-snap_monthly-2013-06-01-0300\t1370080821\nbackup/paola.dragonfear/chest/shared/Entertainment/Jokes@zfs-auto-snap_monthly-2013-07-01-0300\t1372672820\nbackup/paola.dragonfear/chest/shared/Entertainment/Jokes@zfs-auto-snap_monthly-2013-08-01-1000\t1375351220\nbackup/paola.dragonfear/chest/shared/Entertainment/Jokes@zfs-auto-snap_daily-2013-08-24-1000\t1377338427\nbackup/paola.dragonfear/chest/shared/Entertainment/Jokes@zfs-auto-snap_daily-2013-08-25-1000\t1377424817\nbackup/paola.dragonfear/chest/shared/Entertainment/Jokes@zfs-auto-snap_daily-2013-08-26-1000\t1377511204\nbackup/paola.dragonfear/chest/shared/Entertainment/Jokes@zfs-auto-snap_daily-2013-08-27-1000\t1377597604\nbackup/paola.dragonfear/chest/shared/Entertainment/Jokes@zfs-auto-snap_hourly-2013-08-28-0700\t1377673204\nbackup/paola.dragonfear/chest/shared/Entertainment/Jokes@zfs-auto-snap_daily-2013-08-28-1000\t1377684027\nbackup/paola.dragonfear/chest/shared/Entertainment/Jokes@zfs-auto-snap_daily-2013-08-29-1000\t1377770429\nbackup/paola.dragonfear/chest/shared/Entertainment/Jokes@zfs-auto-snap_hourly-2013-08-29-1300\t1377781205\nbackup/paola.dragonfear/chest/shared/Entertainment/Jokes@zfs-auto-snap_hourly-2013-08-29-1900\t1377802804\nbackup/paola.dragonfear/chest/shared/Entertainment/Jokes@zfs-auto-snap_daily-2013-08-30-1000\t1377856827\nbackup/paola.dragonfear/chest/shared/Entertainment/Jokes@zfs-auto-snap_hourly-2013-08-30-1900\t1377889225\nbackup/paola.dragonfear/chest/shared/Entertainment/Miro\t1361631299\nbackup/paola.dragonfear/chest/shared/Entertainment/Miro@zfs-auto-snap_monthly-2013-03-01-0444\t1362141887\nbackup/paola.dragonfear/chest/shared/Entertainment/Miro@zfs-auto-snap_monthly-2013-04-01-0300\t1364810414\nbackup/paola.dragonfear/chest/shared/Entertainment/Miro@zfs-auto-snap_monthly-2013-05-01-0300\t1367402418\nbackup/paola.dragonfear/chest/shared/Entertainment/Miro@zfs-auto-snap_monthly-2013-06-01-0300\t1370080821\nbackup/paola.dragonfear/chest/shared/Entertainment/Miro@zfs-auto-snap_monthly-2013-07-01-0300\t1372672820\nbackup/paola.dragonfear/chest/shared/Entertainment/Miro@zfs-auto-snap_monthly-2013-08-01-1000\t1375351220\nbackup/paola.dragonfear/chest/shared/Entertainment/Miro@zfs-auto-snap_daily-2013-08-24-1000\t1377338427\nbackup/paola.dragonfear/chest/shared/Entertainment/Miro@zfs-auto-snap_daily-2013-08-25-1000\t1377424817\nbackup/paola.dragonfear/chest/shared/Entertainment/Miro@zfs-auto-snap_daily-2013-08-26-1000\t1377511204\nbackup/paola.dragonfear/chest/shared/Entertainment/Miro@zfs-auto-snap_daily-2013-08-27-1000\t1377597604\nbackup/paola.dragonfear/chest/shared/Entertainment/Miro@zfs-auto-snap_hourly-2013-08-28-0700\t1377673204\nbackup/paola.dragonfear/chest/shared/Entertainment/Miro@zfs-auto-snap_daily-2013-08-28-1000\t1377684027\nbackup/paola.dragonfear/chest/shared/Entertainment/Miro@zfs-auto-snap_daily-2013-08-29-1000\t1377770429\nbackup/paola.dragonfear/chest/shared/Entertainment/Miro@zfs-auto-snap_hourly-2013-08-29-1300\t1377781205\nbackup/paola.dragonfear/chest/shared/Entertainment/Miro@zfs-auto-snap_hourly-2013-08-29-1900\t1377802804\nbackup/paola.dragonfear/chest/shared/Entertainment/Miro@zfs-auto-snap_daily-2013-08-30-1000\t1377856827\nbackup/paola.dragonfear/chest/shared/Entertainment/Miro@zfs-auto-snap_hourly-2013-08-30-1900\t1377889225\nbackup/paola.dragonfear/chest/shared/Entertainment/Movies\t1361623495\nbackup/paola.dragonfear/chest/shared/Entertainment/Movies@zfs-auto-snap_monthly-2013-03-01-0444\t1362141887\nbackup/paola.dragonfear/chest/shared/Entertainment/Movies@zfs-auto-snap_monthly-2013-04-01-0300\t1364810414\nbackup/paola.dragonfear/chest/shared/Entertainment/Movies@zfs-auto-snap_monthly-2013-05-01-0300\t1367402418\nbackup/paola.dragonfear/chest/shared/Entertainment/Movies@zfs-auto-snap_monthly-2013-06-01-0300\t1370080821\nbackup/paola.dragonfear/chest/shared/Entertainment/Movies@zfs-auto-snap_monthly-2013-07-01-0300\t1372672820\nbackup/paola.dragonfear/chest/shared/Entertainment/Movies@zfs-auto-snap_monthly-2013-08-01-1000\t1375351220\nbackup/paola.dragonfear/chest/shared/Entertainment/Movies@zfs-auto-snap_daily-2013-08-24-1000\t1377338427\nbackup/paola.dragonfear/chest/shared/Entertainment/Movies@zfs-auto-snap_daily-2013-08-25-1000\t1377424817\nbackup/paola.dragonfear/chest/shared/Entertainment/Movies@zfs-auto-snap_daily-2013-08-26-1000\t1377511204\nbackup/paola.dragonfear/chest/shared/Entertainment/Movies@zfs-auto-snap_daily-2013-08-27-1000\t1377597604\nbackup/paola.dragonfear/chest/shared/Entertainment/Movies@zfs-auto-snap_hourly-2013-08-28-0700\t1377673204\nbackup/paola.dragonfear/chest/shared/Entertainment/Movies@zfs-auto-snap_daily-2013-08-28-1000\t1377684027\nbackup/paola.dragonfear/chest/shared/Entertainment/Movies@zfs-auto-snap_daily-2013-08-29-1000\t1377770429\nbackup/paola.dragonfear/chest/shared/Entertainment/Movies@zfs-auto-snap_hourly-2013-08-29-1300\t1377781205\nbackup/paola.dragonfear/chest/shared/Entertainment/Movies@zfs-auto-snap_hourly-2013-08-29-1900\t1377802804\nbackup/paola.dragonfear/chest/shared/Entertainment/Movies@zfs-auto-snap_daily-2013-08-30-1000\t1377856827\nbackup/paola.dragonfear/chest/shared/Entertainment/Movies@zfs-auto-snap_hourly-2013-08-30-1900\t1377889225\nbackup/paola.dragonfear/chest/shared/Entertainment/Music\t1361631306\nbackup/paola.dragonfear/chest/shared/Entertainment/Music@zfs-auto-snap_monthly-2013-03-01-0444\t1362141887\nbackup/paola.dragonfear/chest/shared/Entertainment/Music@zfs-auto-snap_monthly-2013-04-01-0300\t1364810414\nbackup/paola.dragonfear/chest/shared/Entertainment/Music@zfs-auto-snap_monthly-2013-05-01-0300\t1367402418\nbackup/paola.dragonfear/chest/shared/Entertainment/Music@zfs-auto-snap_monthly-2013-06-01-0300\t1370080821\nbackup/paola.dragonfear/chest/shared/Entertainment/Music@zfs-auto-snap_monthly-2013-07-01-0300\t1372672820\nbackup/paola.dragonfear/chest/shared/Entertainment/Music@zfs-auto-snap_monthly-2013-08-01-1000\t1375351220\nbackup/paola.dragonfear/chest/shared/Entertainment/Music@zfs-auto-snap_daily-2013-08-24-1000\t1377338427\nbackup/paola.dragonfear/chest/shared/Entertainment/Music@zfs-auto-snap_daily-2013-08-25-1000\t1377424817\nbackup/paola.dragonfear/chest/shared/Entertainment/Music@zfs-auto-snap_daily-2013-08-26-1000\t1377511204\nbackup/paola.dragonfear/chest/shared/Entertainment/Music@zfs-auto-snap_daily-2013-08-27-1000\t1377597604\nbackup/paola.dragonfear/chest/shared/Entertainment/Music@zfs-auto-snap_hourly-2013-08-28-0700\t1377673204\nbackup/paola.dragonfear/chest/shared/Entertainment/Music@zfs-auto-snap_daily-2013-08-28-1000\t1377684027\nbackup/paola.dragonfear/chest/shared/Entertainment/Music@zfs-auto-snap_daily-2013-08-29-1000\t1377770429\nbackup/paola.dragonfear/chest/shared/Entertainment/Music@zfs-auto-snap_hourly-2013-08-29-1300\t1377781205\nbackup/paola.dragonfear/chest/shared/Entertainment/Music@zfs-auto-snap_hourly-2013-08-29-1900\t1377802804\nbackup/paola.dragonfear/chest/shared/Entertainment/Music@zfs-auto-snap_daily-2013-08-30-1000\t1377856827\nbackup/paola.dragonfear/chest/shared/Entertainment/Music@zfs-auto-snap_hourly-2013-08-30-1900\t1377889225\nbackup/paola.dragonfear/chest/shared/Entertainment/TV\t1361599823\nbackup/paola.dragonfear/chest/shared/Entertainment/TV@zfs-auto-snap_monthly-2013-03-01-0444\t1362141887\nbackup/paola.dragonfear/chest/shared/Entertainment/TV@zfs-auto-snap_monthly-2013-04-01-0300\t1364810414\nbackup/paola.dragonfear/chest/shared/Entertainment/TV@zfs-auto-snap_monthly-2013-05-01-0300\t1367402418\nbackup/paola.dragonfear/chest/shared/Entertainment/TV@zfs-auto-snap_monthly-2013-06-01-0300\t1370080821\nbackup/paola.dragonfear/chest/shared/Entertainment/TV@zfs-auto-snap_monthly-2013-07-01-0300\t1372672820\nbackup/paola.dragonfear/chest/shared/Entertainment/TV@zfs-auto-snap_monthly-2013-08-01-1000\t1375351220\nbackup/paola.dragonfear/chest/shared/Entertainment/TV@zfs-auto-snap_daily-2013-08-24-1000\t1377338427\nbackup/paola.dragonfear/chest/shared/Entertainment/TV@zfs-auto-snap_daily-2013-08-25-1000\t1377424817\nbackup/paola.dragonfear/chest/shared/Entertainment/TV@zfs-auto-snap_daily-2013-08-26-1000\t1377511204\nbackup/paola.dragonfear/chest/shared/Entertainment/TV@zfs-auto-snap_daily-2013-08-27-1000\t1377597604\nbackup/paola.dragonfear/chest/shared/Entertainment/TV@zfs-auto-snap_hourly-2013-08-28-0700\t1377673204\nbackup/paola.dragonfear/chest/shared/Entertainment/TV@zfs-auto-snap_daily-2013-08-28-1000\t1377684027\nbackup/paola.dragonfear/chest/shared/Entertainment/TV@zfs-auto-snap_daily-2013-08-29-1000\t1377770429\nbackup/paola.dragonfear/chest/shared/Entertainment/TV@zfs-auto-snap_hourly-2013-08-29-1300\t1377781205\nbackup/paola.dragonfear/chest/shared/Entertainment/TV@zfs-auto-snap_hourly-2013-08-29-1900\t1377802804\nbackup/paola.dragonfear/chest/shared/Entertainment/TV@zfs-auto-snap_daily-2013-08-30-1000\t1377856827\nbackup/paola.dragonfear/chest/shared/Entertainment/TV@zfs-auto-snap_hourly-2013-08-30-1900\t1377889225\nbackup/paola.dragonfear/chest/shared/Incoming\t1361637604\nbackup/paola.dragonfear/chest/shared/Incoming@zfs-auto-snap_monthly-2013-03-01-0444\t1362141887\nbackup/paola.dragonfear/chest/shared/Incoming@zfs-auto-snap_monthly-2013-04-01-0300\t1364810414\nbackup/paola.dragonfear/chest/shared/Incoming@zfs-auto-snap_monthly-2013-05-01-0300\t1367402418\nbackup/paola.dragonfear/chest/shared/Incoming@zfs-auto-snap_monthly-2013-06-01-0300\t1370080821\nbackup/paola.dragonfear/chest/shared/Incoming@zfs-auto-snap_monthly-2013-07-01-0300\t1372672820\nbackup/paola.dragonfear/chest/shared/Incoming@zfs-auto-snap_monthly-2013-08-01-1000\t1375351220\nbackup/paola.dragonfear/chest/shared/Incoming@zfs-auto-snap_daily-2013-08-24-1000\t1377338427\nbackup/paola.dragonfear/chest/shared/Incoming@zfs-auto-snap_daily-2013-08-25-1000\t1377424817\nbackup/paola.dragonfear/chest/shared/Incoming@zfs-auto-snap_daily-2013-08-26-1000\t1377511204\nbackup/paola.dragonfear/chest/shared/Incoming@zfs-auto-snap_daily-2013-08-27-1000\t1377597604\nbackup/paola.dragonfear/chest/shared/Incoming@zfs-auto-snap_hourly-2013-08-28-0700\t1377673204\nbackup/paola.dragonfear/chest/shared/Incoming@zfs-auto-snap_daily-2013-08-28-1000\t1377684027\nbackup/paola.dragonfear/chest/shared/Incoming@zfs-auto-snap_daily-2013-08-29-1000\t1377770429\nbackup/paola.dragonfear/chest/shared/Incoming@zfs-auto-snap_hourly-2013-08-29-1300\t1377781205\nbackup/paola.dragonfear/chest/shared/Incoming@zfs-auto-snap_hourly-2013-08-29-1900\t1377802804\nbackup/paola.dragonfear/chest/shared/Incoming@zfs-auto-snap_daily-2013-08-30-1000\t1377856827\nbackup/paola.dragonfear/chest/shared/Incoming@zfs-auto-snap_hourly-2013-08-30-1900\t1377889225\nbackup/paola.dragonfear/chest/shared/Knowledge\t1361639079\nbackup/paola.dragonfear/chest/shared/Knowledge@zfs-auto-snap_monthly-2013-03-01-0444\t1362141887\nbackup/paola.dragonfear/chest/shared/Knowledge@zfs-auto-snap_monthly-2013-04-01-0300\t1364810414\nbackup/paola.dragonfear/chest/shared/Knowledge@zfs-auto-snap_monthly-2013-05-01-0300\t1367402418\nbackup/paola.dragonfear/chest/shared/Knowledge@zfs-auto-snap_monthly-2013-06-01-0300\t1370080821\nbackup/paola.dragonfear/chest/shared/Knowledge@zfs-auto-snap_monthly-2013-07-01-0300\t1372672820\nbackup/paola.dragonfear/chest/shared/Knowledge@zfs-auto-snap_monthly-2013-08-01-1000\t1375351220\nbackup/paola.dragonfear/chest/shared/Knowledge@zfs-auto-snap_daily-2013-08-24-1000\t1377338427\nbackup/paola.dragonfear/chest/shared/Knowledge@zfs-auto-snap_daily-2013-08-25-1000\t1377424817\nbackup/paola.dragonfear/chest/shared/Knowledge@zfs-auto-snap_daily-2013-08-26-1000\t1377511204\nbackup/paola.dragonfear/chest/shared/Knowledge@zfs-auto-snap_daily-2013-08-27-1000\t1377597604\nbackup/paola.dragonfear/chest/shared/Knowledge@zfs-auto-snap_hourly-2013-08-28-0700\t1377673204\nbackup/paola.dragonfear/chest/shared/Knowledge@zfs-auto-snap_daily-2013-08-28-1000\t1377684027\nbackup/paola.dragonfear/chest/shared/Knowledge@zfs-auto-snap_daily-2013-08-29-1000\t1377770429\nbackup/paola.dragonfear/chest/shared/Knowledge@zfs-auto-snap_hourly-2013-08-29-1300\t1377781205\nbackup/paola.dragonfear/chest/shared/Knowledge@zfs-auto-snap_hourly-2013-08-29-1900\t1377802804\nbackup/paola.dragonfear/chest/shared/Knowledge@zfs-auto-snap_daily-2013-08-30-1000\t1377856827\nbackup/paola.dragonfear/chest/shared/Knowledge@zfs-auto-snap_hourly-2013-08-30-1900\t1377889225\nbackup/paola.dragonfear/chest/shared/Software\t1361598938\nbackup/paola.dragonfear/chest/shared/Software@zfs-auto-snap_monthly-2013-03-01-0444\t1362141887\nbackup/paola.dragonfear/chest/shared/Software@zfs-auto-snap_monthly-2013-04-01-0300\t1364810414\nbackup/paola.dragonfear/chest/shared/Software@zfs-auto-snap_monthly-2013-05-01-0300\t1367402418\nbackup/paola.dragonfear/chest/shared/Software@zfs-auto-snap_monthly-2013-06-01-0300\t1370080821\nbackup/paola.dragonfear/chest/shared/Software@zfs-auto-snap_monthly-2013-07-01-0300\t1372672820\nbackup/paola.dragonfear/chest/shared/Software@zfs-auto-snap_monthly-2013-08-01-1000\t1375351220\nbackup/paola.dragonfear/chest/shared/Software@zfs-auto-snap_daily-2013-08-24-1000\t1377338427\nbackup/paola.dragonfear/chest/shared/Software@zfs-auto-snap_daily-2013-08-25-1000\t1377424817\nbackup/paola.dragonfear/chest/shared/Software@zfs-auto-snap_daily-2013-08-26-1000\t1377511204\nbackup/paola.dragonfear/chest/shared/Software@zfs-auto-snap_daily-2013-08-27-1000\t1377597604\nbackup/paola.dragonfear/chest/shared/Software@zfs-auto-snap_hourly-2013-08-28-0700\t1377673204\nbackup/paola.dragonfear/chest/shared/Software@zfs-auto-snap_daily-2013-08-28-1000\t1377684027\nbackup/paola.dragonfear/chest/shared/Software@zfs-auto-snap_daily-2013-08-29-1000\t1377770429\nbackup/paola.dragonfear/chest/shared/Software@zfs-auto-snap_hourly-2013-08-29-1300\t1377781205\nbackup/paola.dragonfear/chest/shared/Software@zfs-auto-snap_hourly-2013-08-29-1900\t1377802804\nbackup/paola.dragonfear/chest/shared/Software@zfs-auto-snap_daily-2013-08-30-1000\t1377856827\nbackup/paola.dragonfear/chest/shared/Software@zfs-auto-snap_hourly-2013-08-30-1900\t1377889225\nbackup/paola.dragonfear/paola\t1372849154\nbackup/paola.dragonfear/paola@zfs-auto-snap_monthly-2013-08-01-1000\t1375351222\nbackup/paola.dragonfear/paola@zfs-auto-snap_daily-2013-08-24-1000\t1377338428\nbackup/paola.dragonfear/paola@zfs-auto-snap_daily-2013-08-25-1000\t1377424826\nbackup/paola.dragonfear/paola@zfs-auto-snap_daily-2013-08-26-1000\t1377511206\nbackup/paola.dragonfear/paola@zfs-auto-snap_daily-2013-08-27-1000\t1377597605\nbackup/paola.dragonfear/paola@zfs-auto-snap_daily-2013-08-28-1000\t1377684027\nbackup/paola.dragonfear/paola@zfs-auto-snap_daily-2013-08-29-1000\t1377770430\nbackup/paola.dragonfear/paola@zfs-auto-snap_hourly-2013-08-30-0100\t1377824426\nbackup/paola.dragonfear/paola@zfs-auto-snap_hourly-2013-08-30-0700\t1377846011\nbackup/paola.dragonfear/paola@zfs-auto-snap_daily-2013-08-30-1000\t1377856839\nbackup/paola.dragonfear/paola@zfs-auto-snap_hourly-2013-08-30-1300\t1377867634\nbackup/paola.dragonfear/paola@zfs-auto-snap_hourly-2013-08-30-1900\t1377889225\nbackup/paola.dragonfear/paola/ROOT\t1372849205\nbackup/paola.dragonfear/paola/ROOT@zfs-auto-snap_monthly-2013-08-01-1000\t1375351222\nbackup/paola.dragonfear/paola/ROOT@zfs-auto-snap_daily-2013-08-24-1000\t1377338428\nbackup/paola.dragonfear/paola/ROOT@zfs-auto-snap_daily-2013-08-25-1000\t1377424826\nbackup/paola.dragonfear/paola/ROOT@zfs-auto-snap_daily-2013-08-26-1000\t1377511206\nbackup/paola.dragonfear/paola/ROOT@zfs-auto-snap_daily-2013-08-27-1000\t1377597605\nbackup/paola.dragonfear/paola/ROOT@zfs-auto-snap_daily-2013-08-28-1000\t1377684027\nbackup/paola.dragonfear/paola/ROOT@zfs-auto-snap_daily-2013-08-29-1000\t1377770430\nbackup/paola.dragonfear/paola/ROOT@zfs-auto-snap_hourly-2013-08-30-0100\t1377824426\nbackup/paola.dragonfear/paola/ROOT@zfs-auto-snap_hourly-2013-08-30-0700\t1377846011\nbackup/paola.dragonfear/paola/ROOT@zfs-auto-snap_daily-2013-08-30-1000\t1377856839\nbackup/paola.dragonfear/paola/ROOT@zfs-auto-snap_hourly-2013-08-30-1300\t1377867634\nbackup/paola.dragonfear/paola/ROOT@zfs-auto-snap_hourly-2013-08-30-1900\t1377889225\nbackup/paola.dragonfear/paola/ROOT/os\t1372849206\nbackup/paola.dragonfear/paola/ROOT/os@zfs-auto-snap_monthly-2013-08-01-1000\t1375351222\nbackup/paola.dragonfear/paola/ROOT/os@zfs-auto-snap_daily-2013-08-24-1000\t1377338428\nbackup/paola.dragonfear/paola/ROOT/os@zfs-auto-snap_daily-2013-08-25-1000\t1377424826\nbackup/paola.dragonfear/paola/ROOT/os@zfs-auto-snap_daily-2013-08-26-1000\t1377511206\nbackup/paola.dragonfear/paola/ROOT/os@zfs-auto-snap_daily-2013-08-27-1000\t1377597605\nbackup/paola.dragonfear/paola/ROOT/os@zfs-auto-snap_daily-2013-08-28-1000\t1377684027\nbackup/paola.dragonfear/paola/ROOT/os@zfs-auto-snap_daily-2013-08-29-1000\t1377770430\nbackup/paola.dragonfear/paola/ROOT/os@zfs-auto-snap_hourly-2013-08-30-0100\t1377824426\nbackup/paola.dragonfear/paola/ROOT/os@zfs-auto-snap_hourly-2013-08-30-0700\t1377846011\nbackup/paola.dragonfear/paola/ROOT/os@zfs-auto-snap_daily-2013-08-30-1000\t1377856839\nbackup/paola.dragonfear/paola/ROOT/os@zfs-auto-snap_hourly-2013-08-30-1300\t1377867634\nbackup/paola.dragonfear/paola/ROOT/os@zfs-auto-snap_hourly-2013-08-30-1900\t1377889225\nbackup/paola.dragonfear/solidstate\t1362356388\nbackup/paola.dragonfear/solidstate@zfs-auto-snap_monthly-2013-03-01-0129\t1362130207\nbackup/paola.dragonfear/solidstate@zfs-auto-snap_monthly-2013-03-01-0444\t1362141947\nbackup/paola.dragonfear/solidstate@zfs-auto-snap_monthly-2013-04-01-0300\t1364810419\nbackup/paola.dragonfear/solidstate@zfs-auto-snap_monthly-2013-05-01-0300\t1367402421\nbackup/paola.dragonfear/solidstate@zfs-auto-snap_monthly-2013-06-01-0300\t1370080823\nbackup/paola.dragonfear/solidstate@zfs-auto-snap_daily-2013-06-01-0300\t1370080841\nbackup/paola.dragonfear/solidstate@zfs-auto-snap_daily-2013-06-02-0300\t1370167225\nbackup/paola.dragonfear/solidstate@zfs-auto-snap_daily-2013-06-03-0300\t1370253622\nbackup/paola.dragonfear/solidstate@zfs-auto-snap_daily-2013-06-04-0300\t1370340012\nbackup/paola.dragonfear/solidstate@zfs-auto-snap_daily-2013-06-05-0300\t1370426410\nbackup/paola.dragonfear/solidstate@zfs-auto-snap_daily-2013-06-06-0300\t1370512817\nbackup/paola.dragonfear/solidstate@zfs-auto-snap_daily-2013-06-07-0300\t1370599243\nbackup/paola.dragonfear/solidstate@zfs-auto-snap_daily-2013-06-08-0300\t1370685629\nbackup/paola.dragonfear/solidstate@zfs-auto-snap_daily-2013-06-09-0300\t1370772031\nbackup/paola.dragonfear/solidstate@zfs-auto-snap_daily-2013-06-10-0300\t1370858448\nbackup/paola.dragonfear/solidstate@zfs-auto-snap_daily-2013-06-11-0300\t1370944831\nbackup/paola.dragonfear/solidstate@zfs-auto-snap_daily-2013-06-12-0300\t1371031222\nbackup/paola.dragonfear/solidstate@zfs-auto-snap_daily-2013-06-13-0300\t1371117638\nbackup/paola.dragonfear/solidstate@zfs-auto-snap_daily-2013-06-14-0300\t1371204031\nbackup/paola.dragonfear/solidstate@zfs-auto-snap_daily-2013-06-15-0300\t1371290425\nbackup/paola.dragonfear/solidstate@zfs-auto-snap_daily-2013-06-16-0300\t1371376818\nbackup/paola.dragonfear/solidstate@zfs-auto-snap_daily-2013-06-17-0300\t1371463212\nbackup/paola.dragonfear/solidstate@zfs-auto-snap_daily-2013-06-18-0300\t1371549625\nbackup/paola.dragonfear/solidstate@zfs-auto-snap_daily-2013-06-19-0300\t1371636051\nbackup/paola.dragonfear/solidstate@zfs-auto-snap_daily-2013-06-20-0300\t1371722431\nbackup/paola.dragonfear/solidstate@zfs-auto-snap_daily-2013-06-21-0300\t1371808814\nbackup/paola.dragonfear/solidstate@zfs-auto-snap_daily-2013-06-22-0300\t1371895212\nbackup/paola.dragonfear/solidstate@zfs-auto-snap_daily-2013-06-23-0300\t1371981633\nbackup/paola.dragonfear/solidstate@zfs-auto-snap_daily-2013-06-24-0300\t1372068014\nbackup/paola.dragonfear/solidstate@zfs-auto-snap_daily-2013-06-25-0300\t1372154430\nbackup/paola.dragonfear/solidstate@zfs-auto-snap_daily-2013-06-26-0300\t1372240828\nbackup/paola.dragonfear/solidstate@zfs-auto-snap_daily-2013-06-27-0300\t1372327221\nbackup/paola.dragonfear/solidstate@zfs-auto-snap_daily-2013-06-28-0300\t1372413622\nbackup/paola.dragonfear/solidstate@zfs-auto-snap_daily-2013-06-29-0300\t1372500023\nbackup/paola.dragonfear/solidstate@zfs-auto-snap_daily-2013-06-30-0300\t1372586431\nbackup/paola.dragonfear/solidstate@zfs-auto-snap_hourly-2013-06-30-0606\t1372597597\nbackup/paola.dragonfear/solidstate@zfs-auto-snap_hourly-2013-06-30-1200\t1372618832\nbackup/paola.dragonfear/solidstate@zfs-auto-snap_hourly-2013-06-30-1800\t1372640420\nbackup/paola.dragonfear/solidstate@zfs-auto-snap_hourly-2013-07-01-0000\t1372662036\nbackup/paola.dragonfear/solidstate@zfs-auto-snap_monthly-2013-07-01-0300\t1372672822\nbackup/paola.dragonfear/solidstate@zfs-auto-snap_daily-2013-07-01-0300\t1372672835\nbackup/terry.dragonfear\t1364182247\nbackup/terry.dragonfear@zfs-auto-snap_monthly-2013-06-01-0300\t1370080839\nbackup/terry.dragonfear@zfs-auto-snap_monthly-2013-07-01-1000\t1372672834\nbackup/terry.dragonfear@zfs-auto-snap_monthly-2013-07-01-0345\t1372675835\nbackup/terry.dragonfear@zfs-auto-snap_monthly-2013-08-01-1000\t1375351245\nbackup/terry.dragonfear@zfs-auto-snap_daily-2013-08-25-0441\t1377431332\nbackup/terry.dragonfear@zfs-auto-snap_daily-2013-08-26-1000\t1377511248\nbackup/terry.dragonfear@zfs-auto-snap_daily-2013-08-26-0410\t1377516146\nbackup/terry.dragonfear@zfs-auto-snap_daily-2013-08-27-1000\t1377597648\nbackup/terry.dragonfear@zfs-auto-snap_daily-2013-08-29-1005\t1377770716\nbackup/terry.dragonfear@zfs-auto-snap_daily-2013-08-29-0617\t1377782594\nbackup/terry.dragonfear@zfs-auto-snap_hourly-2013-08-30-0101\t1377824461\nbackup/terry.dragonfear@zfs-auto-snap_hourly-2013-08-30-0701\t1377846079\nbackup/terry.dragonfear@zfs-auto-snap_daily-2013-08-30-1000\t1377856849\nbackup/terry.dragonfear@zfs-auto-snap_hourly-2013-08-30-1300\t1377867657\nbackup/terry.dragonfear@zfs-auto-snap_hourly-2013-08-30-1900\t1377889257\nbackup/tobey.dragonfear\t1364192674\nbackup/vor.dragonfear\t1367825219\nbackup/vor.dragonfear@zfs-auto-snap_daily-2013-06-11-0331\t1370947415\nbackup/vor.dragonfear@zfs-auto-snap_daily-2013-06-12-0340\t1371034737\nbackup/vor.dragonfear@zfs-auto-snap_daily-2013-06-13-0423\t1371123785\nbackup/vor.dragonfear@zfs-auto-snap_daily-2013-06-14-0417\t1371209023\nbackup/vor.dragonfear@zfs-auto-snap_daily-2013-06-15-0412\t1371295078\nbackup/vor.dragonfear@zfs-auto-snap_daily-2013-06-23-0348\t1371984949\nbackup/vor.dragonfear@zfs-auto-snap_daily-2013-07-05-0314\t1373019438\nbackup/vor.dragonfear@zfs-auto-snap_daily-2013-07-14-0337\t1373798276\nbackup/vor.dragonfear@zfs-auto-snap_daily-2013-07-15-0337\t1373884686\nbackup/vor.dragonfear@zfs-auto-snap_daily-2013-07-16-0336\t1373971132\nbackup/vor.dragonfear@zfs-auto-snap_daily-2013-07-18-0336\t1374143996\nbackup/vor.dragonfear@zfs-auto-snap_daily-2013-07-19-0340\t1374230705\nbackup/vor.dragonfear@zfs-auto-snap_daily-2013-07-20-0340\t1374316850\nbackup/vor.dragonfear@zfs-auto-snap_daily-2013-07-21-0341\t1374403345\nbackup/vor.dragonfear@zfs-auto-snap_daily-2013-07-22-0351\t1374490311\nbackup/vor.dragonfear@zfs-auto-snap_daily-2013-07-24-0342\t1374662577\nbackup/vor.dragonfear@zfs-auto-snap_daily-2013-07-25-0400\t1374750075\nbackup/vor.dragonfear@zfs-auto-snap_daily-2013-07-26-0406\t1374837176\nbackup/vor.dragonfear@zfs-auto-snap_daily-2013-07-27-0402\t1374923009\nbackup/vor.dragonfear@zfs-auto-snap_daily-2013-07-30-0348\t1375181365\nbackup/vor.dragonfear@zfs-auto-snap_daily-2013-08-15-0357\t1376565166\nbackup/vor.dragonfear@zfs-auto-snap_daily-2013-08-16-0413\t1376652089\nbackup/vor.dragonfear@zfs-auto-snap_daily-2013-08-17-0416\t1376738949\nmathilda\t1361770051\nmathilda@zfs-auto-snap_monthly-2013-05-01-0300\t1367402428\nmathilda@zfs-auto-snap_monthly-2013-06-01-0300\t1370080844\nmathilda@zfs-auto-snap_monthly-2013-07-01-1000\t1372672835\nmathilda@zfs-auto-snap_monthly-2013-08-01-1000\t1375351247\nmathilda@zfs-auto-snap_daily-2013-08-21-1000\t1377079253\nmathilda@zfs-auto-snap_daily-2013-08-22-1000\t1377165654\nmathilda@zfs-auto-snap_daily-2013-08-25-1000\t1377424846\nmathilda@zfs-auto-snap_daily-2013-08-26-1000\t1377511251\nmathilda@zfs-auto-snap_daily-2013-08-27-1000\t1377597650\nmathilda@zfs-auto-snap_daily-2013-08-29-1005\t1377770728\nmathilda@zfs-auto-snap_hourly-2013-08-30-0101\t1377824464\nmathilda@zfs-auto-snap_hourly-2013-08-30-0701\t1377846081\nmathilda@zfs-auto-snap_daily-2013-08-30-1000\t1377856867\nmathilda@zfs-auto-snap_hourly-2013-08-30-1300\t1377867659\nmathilda@zfs-auto-snap_hourly-2013-08-30-1900\t1377889260\nmathilda/ROOT\t1361770051\nmathilda/ROOT@zfs-auto-snap_monthly-2013-05-01-0300\t1367402428\nmathilda/ROOT@zfs-auto-snap_monthly-2013-06-01-0300\t1370080844\nmathilda/ROOT@zfs-auto-snap_monthly-2013-07-01-1000\t1372672835\nmathilda/ROOT@zfs-auto-snap_monthly-2013-08-01-1000\t1375351247\nmathilda/ROOT@zfs-auto-snap_daily-2013-08-21-1000\t1377079253\nmathilda/ROOT@zfs-auto-snap_daily-2013-08-22-1000\t1377165654\nmathilda/ROOT@zfs-auto-snap_daily-2013-08-25-1000\t1377424846\nmathilda/ROOT@zfs-auto-snap_daily-2013-08-26-1000\t1377511251\nmathilda/ROOT@zfs-auto-snap_daily-2013-08-27-1000\t1377597649\nmathilda/ROOT@zfs-auto-snap_daily-2013-08-29-1005\t1377770728\nmathilda/ROOT@zfs-auto-snap_hourly-2013-08-30-0101\t1377824464\nmathilda/ROOT@zfs-auto-snap_hourly-2013-08-30-0701\t1377846081\nmathilda/ROOT@zfs-auto-snap_daily-2013-08-30-1000\t1377856867\nmathilda/ROOT@zfs-auto-snap_hourly-2013-08-30-1300\t1377867659\nmathilda/ROOT@zfs-auto-snap_hourly-2013-08-30-1900\t1377889260\nmathilda/ROOT/os\t1361770051\nmathilda/ROOT/os@zfs-auto-snap_monthly-2013-05-01-0300\t1367402428\nmathilda/ROOT/os@zfs-auto-snap_monthly-2013-06-01-0300\t1370080844\nmathilda/ROOT/os@zfs-auto-snap_monthly-2013-07-01-1000\t1372672835\nmathilda/ROOT/os@zfs-auto-snap_monthly-2013-08-01-1000\t1375351247\nmathilda/ROOT/os@zfs-auto-snap_daily-2013-08-21-1000\t1377079253\nmathilda/ROOT/os@zfs-auto-snap_daily-2013-08-22-1000\t1377165654\nmathilda/ROOT/os@zfs-auto-snap_daily-2013-08-25-1000\t1377424846\nmathilda/ROOT/os@zfs-auto-snap_daily-2013-08-26-1000\t1377511251\nmathilda/ROOT/os@zfs-auto-snap_daily-2013-08-27-1000\t1377597649\nmathilda/ROOT/os@zfs-auto-snap_daily-2013-08-29-1005\t1377770728\nmathilda/ROOT/os@zfs-auto-snap_hourly-2013-08-30-0101\t1377824464\nmathilda/ROOT/os@zfs-auto-snap_hourly-2013-08-30-0701\t1377846081\nmathilda/ROOT/os@zfs-auto-snap_daily-2013-08-30-1000\t1377856867\nmathilda/ROOT/os@zfs-auto-snap_hourly-2013-08-30-1300\t1377867659\nmathilda/ROOT/os@zfs-auto-snap_hourly-2013-08-30-1900\t1377889260\nmathilda/swap\t1371578681\n')
        )
        expected = \
            [
   ('incremental',
   src.lookup("karen"),
   dst.lookup("backup/karen.dragonfear/karen"),
   src.lookup("karen@zfs-auto-snap_daily-2013-08-27-0300"),
   src.lookup("karen@zfs-auto-snap_daily-2013-08-28-0300")),
  ('incremental',
   src.lookup("karen"),
   dst.lookup("backup/karen.dragonfear/karen"),
   src.lookup("karen@zfs-auto-snap_daily-2013-08-28-0300"),
   src.lookup("karen@zfs-auto-snap_daily-2013-08-29-0300")),
  ('incremental',
   src.lookup("karen"),
   dst.lookup("backup/karen.dragonfear/karen"),
   src.lookup("karen@zfs-auto-snap_daily-2013-08-29-0300"),
   src.lookup("karen@zfs-auto-snap_hourly-2013-08-30-0100")),
  ('incremental',
   src.lookup("karen"),
   dst.lookup("backup/karen.dragonfear/karen"),
   src.lookup("karen@zfs-auto-snap_hourly-2013-08-30-0100"),
   src.lookup("karen@zfs-auto-snap_hourly-2013-08-30-0700")),
  ('incremental',
   src.lookup("karen"),
   dst.lookup("backup/karen.dragonfear/karen"),
   src.lookup("karen@zfs-auto-snap_hourly-2013-08-30-0700"),
   src.lookup("karen@zfs-auto-snap_daily-2013-08-30-1000")),
  ('incremental',
   src.lookup("karen"),
   dst.lookup("backup/karen.dragonfear/karen"),
   src.lookup("karen@zfs-auto-snap_daily-2013-08-30-1000"),
   src.lookup("karen@zfs-auto-snap_hourly-2013-08-30-1300")),
  ('incremental',
   src.lookup("karen"),
   dst.lookup("backup/karen.dragonfear/karen"),
   src.lookup("karen@zfs-auto-snap_hourly-2013-08-30-1300"),
   src.lookup("karen@zfs-auto-snap_hourly-2013-08-30-1900")),
  ('incremental',
   src.lookup("karen/ROOT"),
   dst.lookup("backup/karen.dragonfear/karen/ROOT"),
   src.lookup("karen/ROOT@zfs-auto-snap_daily-2013-08-27-0300"),
   src.lookup("karen/ROOT@zfs-auto-snap_daily-2013-08-28-0300")),
  ('incremental',
   src.lookup("karen/ROOT"),
   dst.lookup("backup/karen.dragonfear/karen/ROOT"),
   src.lookup("karen/ROOT@zfs-auto-snap_daily-2013-08-28-0300"),
   src.lookup("karen/ROOT@zfs-auto-snap_daily-2013-08-29-0300")),
  ('incremental',
   src.lookup("karen/ROOT"),
   dst.lookup("backup/karen.dragonfear/karen/ROOT"),
   src.lookup("karen/ROOT@zfs-auto-snap_daily-2013-08-29-0300"),
   src.lookup("karen/ROOT@zfs-auto-snap_hourly-2013-08-30-0100")),
  ('incremental',
   src.lookup("karen/ROOT"),
   dst.lookup("backup/karen.dragonfear/karen/ROOT"),
   src.lookup("karen/ROOT@zfs-auto-snap_hourly-2013-08-30-0100"),
   src.lookup("karen/ROOT@zfs-auto-snap_hourly-2013-08-30-0700")),
  ('incremental',
   src.lookup("karen/ROOT"),
   dst.lookup("backup/karen.dragonfear/karen/ROOT"),
   src.lookup("karen/ROOT@zfs-auto-snap_hourly-2013-08-30-0700"),
   src.lookup("karen/ROOT@zfs-auto-snap_daily-2013-08-30-1000")),
  ('incremental',
   src.lookup("karen/ROOT"),
   dst.lookup("backup/karen.dragonfear/karen/ROOT"),
   src.lookup("karen/ROOT@zfs-auto-snap_daily-2013-08-30-1000"),
   src.lookup("karen/ROOT@zfs-auto-snap_hourly-2013-08-30-1300")),
  ('incremental',
   src.lookup("karen/ROOT"),
   dst.lookup("backup/karen.dragonfear/karen/ROOT"),
   src.lookup("karen/ROOT@zfs-auto-snap_hourly-2013-08-30-1300"),
   src.lookup("karen/ROOT@zfs-auto-snap_hourly-2013-08-30-1900")),
  ('incremental',
   src.lookup("karen/ROOT/fedora"),
   dst.lookup("backup/karen.dragonfear/karen/ROOT/fedora"),
   src.lookup("karen/ROOT/fedora@zfs-auto-snap_daily-2013-08-27-0300"),
   src.lookup("karen/ROOT/fedora@zfs-auto-snap_daily-2013-08-28-0300")),
  ('incremental',
   src.lookup("karen/ROOT/fedora"),
   dst.lookup("backup/karen.dragonfear/karen/ROOT/fedora"),
   src.lookup("karen/ROOT/fedora@zfs-auto-snap_daily-2013-08-28-0300"),
   src.lookup("karen/ROOT/fedora@zfs-auto-snap_daily-2013-08-29-0300")),
  ('incremental',
   src.lookup("karen/ROOT/fedora"),
   dst.lookup("backup/karen.dragonfear/karen/ROOT/fedora"),
   src.lookup("karen/ROOT/fedora@zfs-auto-snap_daily-2013-08-29-0300"),
   src.lookup("karen/ROOT/fedora@zfs-auto-snap_hourly-2013-08-30-0100")),
  ('incremental',
   src.lookup("karen/ROOT/fedora"),
   dst.lookup("backup/karen.dragonfear/karen/ROOT/fedora"),
   src.lookup("karen/ROOT/fedora@zfs-auto-snap_hourly-2013-08-30-0100"),
   src.lookup("karen/ROOT/fedora@zfs-auto-snap_hourly-2013-08-30-0700")),
  ('incremental',
   src.lookup("karen/ROOT/fedora"),
   dst.lookup("backup/karen.dragonfear/karen/ROOT/fedora"),
   src.lookup("karen/ROOT/fedora@zfs-auto-snap_hourly-2013-08-30-0700"),
   src.lookup("karen/ROOT/fedora@zfs-auto-snap_daily-2013-08-30-1000")),
  ('incremental',
   src.lookup("karen/ROOT/fedora"),
   dst.lookup("backup/karen.dragonfear/karen/ROOT/fedora"),
   src.lookup("karen/ROOT/fedora@zfs-auto-snap_daily-2013-08-30-1000"),
   src.lookup("karen/ROOT/fedora@zfs-auto-snap_hourly-2013-08-30-1300")),
  ('incremental',
   src.lookup("karen/ROOT/fedora"),
   dst.lookup("backup/karen.dragonfear/karen/ROOT/fedora"),
   src.lookup("karen/ROOT/fedora@zfs-auto-snap_hourly-2013-08-30-1300"),
   src.lookup("karen/ROOT/fedora@zfs-auto-snap_hourly-2013-08-30-1900")),
  ('create_stub',
   src.lookup("karen/ROOT/fedora/tmp"),
   None,
   None,
   None),
  ('incremental',
   src.lookup("karen/home"),
   dst.lookup("backup/karen.dragonfear/karen/home"),
   src.lookup("karen/home@zfs-auto-snap_daily-2013-08-27-0300"),
   src.lookup("karen/home@zfs-auto-snap_daily-2013-08-28-0300")),
  ('incremental',
   src.lookup("karen/home"),
   dst.lookup("backup/karen.dragonfear/karen/home"),
   src.lookup("karen/home@zfs-auto-snap_daily-2013-08-28-0300"),
   src.lookup("karen/home@zfs-auto-snap_daily-2013-08-29-0300")),
  ('incremental',
   src.lookup("karen/home"),
   dst.lookup("backup/karen.dragonfear/karen/home"),
   src.lookup("karen/home@zfs-auto-snap_daily-2013-08-29-0300"),
   src.lookup("karen/home@zfs-auto-snap_hourly-2013-08-30-0100")),
  ('incremental',
   src.lookup("karen/home"),
   dst.lookup("backup/karen.dragonfear/karen/home"),
   src.lookup("karen/home@zfs-auto-snap_hourly-2013-08-30-0100"),
   src.lookup("karen/home@zfs-auto-snap_hourly-2013-08-30-0700")),
  ('incremental',
   src.lookup("karen/home"),
   dst.lookup("backup/karen.dragonfear/karen/home"),
   src.lookup("karen/home@zfs-auto-snap_hourly-2013-08-30-0700"),
   src.lookup("karen/home@zfs-auto-snap_daily-2013-08-30-1000")),
  ('incremental',
   src.lookup("karen/home"),
   dst.lookup("backup/karen.dragonfear/karen/home"),
   src.lookup("karen/home@zfs-auto-snap_daily-2013-08-30-1000"),
   src.lookup("karen/home@zfs-auto-snap_hourly-2013-08-30-1300")),
  ('incremental',
   src.lookup("karen/home"),
   dst.lookup("backup/karen.dragonfear/karen/home"),
   src.lookup("karen/home@zfs-auto-snap_hourly-2013-08-30-1300"),
   src.lookup("karen/home@zfs-auto-snap_hourly-2013-08-30-1900")),
  ('incremental',
   src.lookup("karen/home/mail"),
   dst.lookup("backup/karen.dragonfear/karen/home/mail"),
   src.lookup("karen/home/mail@zfs-auto-snap_daily-2013-08-27-0300"),
   src.lookup("karen/home/mail@zfs-auto-snap_daily-2013-08-28-0300")),
  ('incremental',
   src.lookup("karen/home/mail"),
   dst.lookup("backup/karen.dragonfear/karen/home/mail"),
   src.lookup("karen/home/mail@zfs-auto-snap_daily-2013-08-28-0300"),
   src.lookup("karen/home/mail@zfs-auto-snap_daily-2013-08-29-0300")),
  ('incremental',
   src.lookup("karen/home/mail"),
   dst.lookup("backup/karen.dragonfear/karen/home/mail"),
   src.lookup("karen/home/mail@zfs-auto-snap_daily-2013-08-29-0300"),
   src.lookup("karen/home/mail@zfs-auto-snap_hourly-2013-08-30-0100")),
  ('incremental',
   src.lookup("karen/home/mail"),
   dst.lookup("backup/karen.dragonfear/karen/home/mail"),
   src.lookup("karen/home/mail@zfs-auto-snap_hourly-2013-08-30-0100"),
   src.lookup("karen/home/mail@zfs-auto-snap_hourly-2013-08-30-0700")),
  ('incremental',
   src.lookup("karen/home/mail"),
   dst.lookup("backup/karen.dragonfear/karen/home/mail"),
   src.lookup("karen/home/mail@zfs-auto-snap_hourly-2013-08-30-0700"),
   src.lookup("karen/home/mail@zfs-auto-snap_daily-2013-08-30-1000")),
  ('incremental',
   src.lookup("karen/home/mail"),
   dst.lookup("backup/karen.dragonfear/karen/home/mail"),
   src.lookup("karen/home/mail@zfs-auto-snap_daily-2013-08-30-1000"),
   src.lookup("karen/home/mail@zfs-auto-snap_hourly-2013-08-30-1300")),
  ('incremental',
   src.lookup("karen/home/mail"),
   dst.lookup("backup/karen.dragonfear/karen/home/mail"),
   src.lookup("karen/home/mail@zfs-auto-snap_hourly-2013-08-30-1300"),
   src.lookup("karen/home/mail@zfs-auto-snap_hourly-2013-08-30-1900")),
  ('incremental',
   src.lookup("karen/plonezeo"),
   dst.lookup("backup/karen.dragonfear/karen/plonezeo"),
   src.lookup("karen/plonezeo@zfs-auto-snap_daily-2013-08-27-0300"),
   src.lookup("karen/plonezeo@zfs-auto-snap_daily-2013-08-28-0300")),
  ('incremental',
   src.lookup("karen/plonezeo"),
   dst.lookup("backup/karen.dragonfear/karen/plonezeo"),
   src.lookup("karen/plonezeo@zfs-auto-snap_daily-2013-08-28-0300"),
   src.lookup("karen/plonezeo@zfs-auto-snap_daily-2013-08-29-0300")),
  ('incremental',
   src.lookup("karen/plonezeo"),
   dst.lookup("backup/karen.dragonfear/karen/plonezeo"),
   src.lookup("karen/plonezeo@zfs-auto-snap_daily-2013-08-29-0300"),
   src.lookup("karen/plonezeo@zfs-auto-snap_hourly-2013-08-30-0100")),
  ('incremental',
   src.lookup("karen/plonezeo"),
   dst.lookup("backup/karen.dragonfear/karen/plonezeo"),
   src.lookup("karen/plonezeo@zfs-auto-snap_hourly-2013-08-30-0100"),
   src.lookup("karen/plonezeo@zfs-auto-snap_hourly-2013-08-30-0700")),
  ('incremental',
   src.lookup("karen/plonezeo"),
   dst.lookup("backup/karen.dragonfear/karen/plonezeo"),
   src.lookup("karen/plonezeo@zfs-auto-snap_hourly-2013-08-30-0700"),
   src.lookup("karen/plonezeo@zfs-auto-snap_daily-2013-08-30-1000")),
  ('incremental',
   src.lookup("karen/plonezeo"),
   dst.lookup("backup/karen.dragonfear/karen/plonezeo"),
   src.lookup("karen/plonezeo@zfs-auto-snap_daily-2013-08-30-1000"),
   src.lookup("karen/plonezeo@zfs-auto-snap_hourly-2013-08-30-1300")),
  ('incremental',
   src.lookup("karen/plonezeo"),
   dst.lookup("backup/karen.dragonfear/karen/plonezeo"),
   src.lookup("karen/plonezeo@zfs-auto-snap_hourly-2013-08-30-1300"),
   src.lookup("karen/plonezeo@zfs-auto-snap_hourly-2013-08-30-1900")),
  ('create_stub',
   src.lookup("karen/sekrit"),
   None,
   None,
   None),
  ('create_stub',
   src.lookup("karen/sekrit/f-business"),
   None,
   None,
   None),
  ('create_stub',
   src.lookup("karen/sekrit/f-proxy"),
   None,
   None,
   None),
  ('create_stub',
   src.lookup("karen/sekrit/f-storefront"),
   None,
   None,
   None),
  ('full',
   src.lookup("karen/sekrit/f-template"),
   None,
   None,
   src.lookup("karen/sekrit/f-template@initialsetup")),
  ('create_stub',
   src.lookup("karen/sekrit/f-tinc"),
   None,
   None,
   None),
  ('create_stub',
   src.lookup("karen/sekrit/f-vpn"),
   None,
   None,
   None),
  ('create_stub',
   src.lookup("karen/sekrit/f-wallet"),
   None,
   None,
   None),
  ('create_stub',
   src.lookup("karen/swap"),
   None,
   None,
   None),
            ]
        expected_coalesced = \
            [
   ('incremental',
   src.lookup("karen"),
   dst.lookup("backup/karen.dragonfear/karen"),
   src.lookup("karen@zfs-auto-snap_daily-2013-08-27-0300"),
   src.lookup("karen@zfs-auto-snap_hourly-2013-08-30-1900")),
  ('incremental',
   src.lookup("karen/ROOT"),
   dst.lookup("backup/karen.dragonfear/karen/ROOT"),
   src.lookup("karen/ROOT@zfs-auto-snap_daily-2013-08-27-0300"),
   src.lookup("karen/ROOT@zfs-auto-snap_hourly-2013-08-30-1900")),
  ('incremental',
   src.lookup("karen/ROOT/fedora"),
   dst.lookup("backup/karen.dragonfear/karen/ROOT/fedora"),
   src.lookup("karen/ROOT/fedora@zfs-auto-snap_daily-2013-08-27-0300"),
   src.lookup("karen/ROOT/fedora@zfs-auto-snap_hourly-2013-08-30-1900")),
  ('create_stub',
   src.lookup("karen/ROOT/fedora/tmp"),
   None,
   None,
   None),
  ('incremental',
   src.lookup("karen/home"),
   dst.lookup("backup/karen.dragonfear/karen/home"),
   src.lookup("karen/home@zfs-auto-snap_daily-2013-08-27-0300"),
   src.lookup("karen/home@zfs-auto-snap_hourly-2013-08-30-1900")),
  ('incremental',
   src.lookup("karen/home/mail"),
   dst.lookup("backup/karen.dragonfear/karen/home/mail"),
   src.lookup("karen/home/mail@zfs-auto-snap_daily-2013-08-27-0300"),
   src.lookup("karen/home/mail@zfs-auto-snap_hourly-2013-08-30-1900")),
  ('incremental',
   src.lookup("karen/plonezeo"),
   dst.lookup("backup/karen.dragonfear/karen/plonezeo"),
   src.lookup("karen/plonezeo@zfs-auto-snap_daily-2013-08-27-0300"),
   src.lookup("karen/plonezeo@zfs-auto-snap_hourly-2013-08-30-1900")),
  ('create_stub',
   src.lookup("karen/sekrit"),
   None,
   None,
   None),
  ('create_stub',
   src.lookup("karen/sekrit/f-business"),
   None,
   None,
   None),
  ('create_stub',
   src.lookup("karen/sekrit/f-proxy"),
   None,
   None,
   None),
  ('create_stub',
   src.lookup("karen/sekrit/f-storefront"),
   None,
   None,
   None),
  ('full',
   src.lookup("karen/sekrit/f-template"),
   None,
   None,
   src.lookup("karen/sekrit/f-template@initialsetup")),
  ('create_stub',
   src.lookup("karen/sekrit/f-tinc"),
   None,
   None,
   None),
  ('create_stub',
   src.lookup("karen/sekrit/f-vpn"),
   None,
   None,
   None),
  ('create_stub',
   src.lookup("karen/sekrit/f-wallet"),
   None,
   None,
   None),
  ('create_stub',
   src.lookup("karen/swap"),
   None,
   None,
   None),
            ]
        expected_coalesced_recursivized = \
            [
   ('incremental',
   src.lookup("karen"),
   dst.lookup("backup/karen.dragonfear/karen"),
   src.lookup("karen@zfs-auto-snap_daily-2013-08-27-0300"),
   src.lookup("karen@zfs-auto-snap_hourly-2013-08-30-1900")),
  ('incremental',
   src.lookup("karen/ROOT"),
   dst.lookup("backup/karen.dragonfear/karen/ROOT"),
   src.lookup("karen/ROOT@zfs-auto-snap_daily-2013-08-27-0300"),
   src.lookup("karen/ROOT@zfs-auto-snap_hourly-2013-08-30-1900")),
  ('incremental',
   src.lookup("karen/ROOT/fedora"),
   dst.lookup("backup/karen.dragonfear/karen/ROOT/fedora"),
   src.lookup("karen/ROOT/fedora@zfs-auto-snap_daily-2013-08-27-0300"),
   src.lookup("karen/ROOT/fedora@zfs-auto-snap_hourly-2013-08-30-1900")),
  ('incremental_recursive',
   src.lookup("karen/home"),
   dst.lookup("backup/karen.dragonfear/karen/home"),
   src.lookup("karen/home@zfs-auto-snap_daily-2013-08-27-0300"),
   src.lookup("karen/home@zfs-auto-snap_hourly-2013-08-30-1900")),
  ('incremental_recursive',
   src.lookup("karen/plonezeo"),
   dst.lookup("backup/karen.dragonfear/karen/plonezeo"),
   src.lookup("karen/plonezeo@zfs-auto-snap_daily-2013-08-27-0300"),
   src.lookup("karen/plonezeo@zfs-auto-snap_hourly-2013-08-30-1900")),
  ('create_stub',
   src.lookup("karen/sekrit"),
   None,
   None,
   None),
  ('full_recursive',
   src.lookup("karen/sekrit/f-template"),
   None,
   None,
   src.lookup("karen/sekrit/f-template@initialsetup")),
            ]

        real = sync.recursive_replicate(
            src.lookup("karen"),
            dst.lookup("backup/karen.dragonfear/karen")
        )
        self.assertEquals(expected,real)

        real_coalesced = sync.optimize_coalesce(real)
        self.assertEquals(expected_coalesced,real_coalesced)

        real_coalesced_recursivized = sync.optimize_recursivize(real_coalesced)
        self.assertEquals(expected_coalesced_recursivized,real_coalesced_recursivized)


class TestRecursiveClearObsolete(unittest.TestCase):

    maxDiff = None

    def test_does_nothing(self):
        src = PoolSet()
        dst = PoolSet()
        src.parse_zfs_r_output(
x('''karen   1359351119
karen/ROOT      1359351169
karen/ROOT/fedora       1359351172
karen/ROOT/fedora/home  1359351174
karen/plonezeo  1360136643
''')
        )
        dst.parse_zfs_r_output(
x('''target   1359351109
target/karen   1359351119
target/karen/ROOT      1359351169
target/karen/ROOT/fedora       1359351172
target/karen/ROOT/fedora/home  1359351174
target/karen/plonezeo  1360136643
''')
        )

        result = sync.recursive_clear_obsolete(
            src.lookup("karen"),
            dst.lookup("target/karen")
        )
        self.assertFalse(result)

    def test_clears_nothing(self):
        src = PoolSet()
        dst = PoolSet()
        src.parse_zfs_r_output(
x('''karen   1359351119
karen/ROOT      1359351169
karen/ROOT/fedora       1359351172
karen/ROOT/fedora/home  1359351174
karen/plonezeo  1360136643
karen/plonezeo@zfs-auto-snap_hourly-2013-03-19-0000     1363676402
''')
        )
        dst.parse_zfs_r_output(
x('''target   1359351109
target/karen   1359351119
target/karen/ROOT      1359351169
target/karen/ROOT/fedora       1359351172
target/karen/ROOT/fedora/home  1359351174
target/karen/plonezeo  1360136643
''')
        )

        result = sync.recursive_clear_obsolete(
            src.lookup("karen"),
            dst.lookup("target/karen")
        )
        self.assertFalse(result)

    def test_clears_one(self):
        src = PoolSet()
        dst = PoolSet()
        src.parse_zfs_r_output(
x('''karen   1359351119
karen/ROOT      1359351169
karen/ROOT/fedora       1359351172
karen/ROOT/fedora/home  1359351174
karen/plonezeo  1360136643
''')
        )
        dst.parse_zfs_r_output(
x('''target   1359351109
target/karen   1359351119
target/karen/ROOT      1359351169
target/karen/ROOT/fedora       1359351172
target/karen/ROOT/fedora/home  1359351174
target/karen/plonezeo  1360136643
target/karen/plonezeo@zfs-auto-snap_hourly-2013-03-19-0000     1363676402
''')
        )

        result = sync.recursive_clear_obsolete(
            src.lookup("karen"),
            dst.lookup("target/karen")
        )
        self.assertEquals(len(result),1)
        self.assertEquals(result[0][0], 'destroy')
        self.assertEquals(result[0][1].get_path(), 'target/karen/plonezeo@zfs-auto-snap_hourly-2013-03-19-0000')

    def test_clears_three(self):
        src = PoolSet()
        dst = PoolSet()
        src.parse_zfs_r_output(
x('''karen   1359351119
karen/ROOT      1359351169
karen/ROOT@zfs-auto-snap_hourly-2013-03-19-0000     1363676402
karen/ROOT/fedora       1359351172
karen/ROOT/fedora/home  1359351174
karen/plonezeo  1360136643
karen/plonezeo@zfs-auto-snap_hourly-2013-03-20-0000     1363676402
''')
        )
        dst.parse_zfs_r_output(
x('''target   1359351109
target/karen   1359351119
target/karen/ROOT      1359351169
target/karen/ROOT@zfs-auto-snap_hourly-2013-03-19-0000     1363676402
target/karen/ROOT@zfs-auto-snap_hourly-2013-03-20-0000     1363676402
target/karen/ROOT/fedora       1359351172
target/karen/ROOT/fedora/home  1359351174
target/karen/plonezeo  1360136643
target/karen/plonezeo@zfs-auto-snap_hourly-2013-03-20-0000     1363676402
target/karen/plonezeo@zfs-auto-snap_hourly-2013-03-21-0000     1363676402
target/karen/plonezeo@zfs-auto-snap_hourly-2013-03-22-0000     1363676402
''')
        )

        result = sync.recursive_clear_obsolete(
            src.lookup("karen"),
            dst.lookup("target/karen")
        )
        self.assertEquals(len(result),3)
        dsets = [ r[1].get_path() for r in result ]
        for p in [
            'target/karen/plonezeo@zfs-auto-snap_hourly-2013-03-21-0000',
            'target/karen/plonezeo@zfs-auto-snap_hourly-2013-03-22-0000',
            'target/karen/ROOT@zfs-auto-snap_hourly-2013-03-20-0000',
        ]:
            self.assertTrue(p in dsets, "%r could not be found in %r" % (p, dsets))

    def test_destroys_one_dataset_recursively(self):
        src = PoolSet()
        dst = PoolSet()
        src.parse_zfs_r_output(
x('''karen   1359351119
karen/ROOT      1359351169
karen/ROOT/fedora       1359351172
karen/ROOT/fedora/home  1359351174
''')
        )
        dst.parse_zfs_r_output(
x('''target   1359351109
target/karen   1359351119
target/karen/ROOT      1359351169
target/karen/ROOT/fedora       1359351172
target/karen/ROOT/fedora/home  1359351174
target/karen/plonezeo  1360136643
target/karen/plonezeo@zfs-auto-snap_hourly-2013-03-19-0000     1363676402
''')
        )

        result = sync.recursive_clear_obsolete(
            src.lookup("karen"),
            dst.lookup("target/karen")
        )
        self.assertEquals(
            result,
            [
              ('destroy_recursively', dst.lookup("target/karen/plonezeo")),
            ]
        )

    def test_destroys_all_datasets_recursively(self):
        src = PoolSet()
        dst = PoolSet()
        src.parse_zfs_r_output(
x('''karen   1359351119
''')
        )
        dst.parse_zfs_r_output(
x('''target   1359351109
target/karen   1359351119
target/karen/ROOT      1359351169
target/karen/ROOT/fedora       1359351172
target/karen/ROOT/fedora/home  1359351174
target/karen/plonezeo  1360136643
target/karen/plonezeo@zfs-auto-snap_hourly-2013-03-19-0000     1363676402
''')
        )

        result = sync.recursive_clear_obsolete(
            src.lookup("karen"),
            dst.lookup("target/karen")
        )
        self.assertEquals(
            result,
            [
              ('destroy_recursively', dst.lookup("target/karen/ROOT")),
              ('destroy_recursively', dst.lookup("target/karen/plonezeo")),
            ]
        )


if __name__ == "__main__":
    #import sys;sys.argv = ['', 'Test.testName']
    unittest.main()
