On Tue, Jan 12, 2016 at 12:09 PM, Josh Durgin <jdur...@redhat.com> wrote:
> On 01/12/2016 06:10 AM, Alex Gorbachev wrote: > >> Good day! I am working on a robust backup script for RBD and ran into a >> need to reliably determine start and end snapshots for differential >> exports (done with rbd export-diff). >> >> I can clearly see these if dumping the ASCII header of the export file, >> e.g.: >> >> iss@lab2-b1:/data/volume1$ strings >> exp-tst1-spin1-sctst1-0111-174938-2016-cons-thin.scexp|head -3 >> rbd diff v1 >> auto-0111-083856-2016-tst1t >> auto-0111-174856-2016-tst1s >> >> It appears that "auto-0111-083856-2016-tst1" is the start snapshot >> (followed by t) and "auto-0111-174856-2016-tst1" is the end snapshot >> (followed by s). >> >> Is this the best way to determine snapshots and are letters "s" and "t" >> going to stay the same? >> > > The format won't change in an incompatible way, so we won't use those > fields for other purposes, but 'strings | head -3' might not always > work if we add fields or have longer strings later. > > The format is documented here: > > http://docs.ceph.com/docs/master/dev/rbd-diff/ > > It'd be more reliable if you decoded it by unpacking the diff with > your language of choice (e.g. using > https://docs.python.org/2/library/struct.html for python.) > > Josh > Thanks Josh. I implemented in Perl as: my $buffer = 4096; # read first 4KB open(FILE,'<',"$file"); sysread(FILE,$data,$buffer); @str = unpack("A12 a1 L/A* a1 L/A* a1 Q",$data); This assumes that the first characted line "rbd diff v1\n” is always 12 bytes long Best regards, Alex
_______________________________________________ ceph-users mailing list ceph-users@lists.ceph.com http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com