Could you accomplish what you want with xdelta? I've been interested
in something like this for versioning whole disk images used with VMs
and AMIs. Example follows which shows that xdelta is pretty speedy at
least in my simplified 1 GB sparse file test. For the cost of some
very small delta files I assume I could restore the image to any
version. Shouldn't be too much work to script something around this.
jbh
[F 100%] griz...@amusium ~/sparse $ dd if=/dev/zero of=disk.img
bs=1024 seek=1048576 count=0
0+0 records in
0+0 records out
0 bytes (0 B) copied, 1.0546e-05 s, 0.0 kB/s
[F 100%] griz...@amusium ~/sparse $ ls -alh
total 12K
drwxr-xr-x 2 griznog griznog 21 Feb 20 16:50 .
drwx------ 86 griznog griznog 8.0K Feb 20 16:42 ..
-rw-r--r-- 1 griznog griznog 1.0G Feb 20 16:50 disk.img
[F 100%] griz...@amusium ~/sparse $ cp --sparse=always disk.img disk.img.bkup
[F 100%] griz...@amusium ~/sparse $ ls -alh
total 12K
drwxr-xr-x 2 griznog griznog 41 Feb 20 16:51 .
drwx------ 86 griznog griznog 8.0K Feb 20 16:42 ..
-rw-r--r-- 1 griznog griznog 1.0G Feb 20 16:50 disk.img
-rw-r--r-- 1 griznog griznog 1.0G Feb 20 16:51 disk.img.bkup
[F 100%] griz...@amusium ~/sparse $ sudo losetup /dev/loop0 disk.img
[F 100%] griz...@amusium ~/sparse $ echo ",,82" | sudo tee /dev/loop0
,,82
[F 100%] griz...@amusium ~/sparse $ sudo losetup -d /dev/loop0
[F 100%] griz...@amusium ~/sparse $ ls -alhs
total 16K
0 drwxr-xr-x 2 griznog griznog 41 Feb 20 16:51 .
12K drwx------ 86 griznog griznog 8.0K Feb 20 16:42 ..
4.0K -rw-r--r-- 1 griznog griznog 1.0G Feb 20 16:50 disk.img
0 -rw-r--r-- 1 griznog griznog 1.0G Feb 20 16:51 disk.img.bkup
[F 100%] griz...@amusium ~/sparse $ xdelta delta disk.img.bkup
disk.img disk.inc00
[F 100%] griz...@amusium ~/sparse $ ls -al
total 20
drwxr-xr-x 2 griznog griznog 58 Feb 20 16:58 .
drwx------ 86 griznog griznog 8192 Feb 20 16:42 ..
-rw-r--r-- 1 griznog griznog 1073741824 Feb 20 16:50 disk.img
-rw-r--r-- 1 griznog griznog 1073741824 Feb 20 16:51 disk.img.bkup
-rw-r--r-- 1 griznog griznog 220 Feb 20 16:58 disk.inc00
[F 100%] griz...@amusium ~/sparse $ mke2fs -L 'disk' -m 0 -j disk.img
mke2fs 1.41.9 (22-Aug-2009)
disk.img is not a block special device.
Proceed anyway? (y,n) y
Filesystem label=disk
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
65536 inodes, 262144 blocks
0 blocks (0.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 20 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
[F 100%] griz...@amusium ~/sparse $ ls -alhs
total 49M
0 drwxr-xr-x 2 griznog griznog 58 Feb 20 16:58 .
12K drwx------ 86 griznog griznog 8.0K Feb 20 16:42 ..
49M -rw-r--r-- 1 griznog griznog 1.0G Feb 20 17:00 disk.img
0 -rw-r--r-- 1 griznog griznog 1.0G Feb 20 16:51 disk.img.bkup
4.0K -rw-r--r-- 1 griznog griznog 220 Feb 20 16:58 disk.inc00
[F 100%] griz...@amusium ~/sparse $ time xdelta delta disk.img.bkup
disk.img disk.inc01
real 0m11.101s
user 0m10.213s
sys 0m0.812s
[F 100%] griz...@amusium ~/sparse $ ls -alhs
total 49M
0 drwxr-xr-x 2 griznog griznog 75 Feb 20 17:00 .
12K drwx------ 86 griznog griznog 8.0K Feb 20 16:42 ..
49M -rw-r--r-- 1 griznog griznog 1.0G Feb 20 17:00 disk.img
0 -rw-r--r-- 1 griznog griznog 1.0G Feb 20 16:51 disk.img.bkup
4.0K -rw-r--r-- 1 griznog griznog 220 Feb 20 16:58 disk.inc00
16K -rw-r--r-- 1 griznog griznog 14K Feb 20 17:00 disk.inc01
[F 100%] griz...@amusium ~/sparse $ mkdir disk
[F 100%] griz...@amusium ~/sparse $ sudo mount -o loop disk.img disk
[F 100%] griz...@amusium ~/sparse $ sudo cp
/home/griznog/Downloads/pvfs2-quickstart.pdf disk/
[F 100%] griz...@amusium ~/sparse $ ls -al disk/
total 128
drwxr-xr-x 3 griznog griznog 4096 Feb 20 17:02 .
drwxr-xr-x 3 griznog griznog 86 Feb 20 17:01 ..
drwx------ 2 root root 16384 Feb 20 17:00 lost+found
-rw-r--r-- 1 root root 104524 Feb 20 17:02 pvfs2-quickstart.pdf
[F 100%] griz...@amusium ~/sparse $ sudo umount disk
[F 100%] griz...@amusium ~/sparse $ time xdelta delta disk.img.bkup
disk.img disk.inc02
real 0m11.049s
user 0m10.233s
sys 0m0.717s
[F 100%] griz...@amusium ~/sparse $ ls -alhs
total 49M
0 drwxr-xr-x 3 griznog griznog 103 Feb 20 17:03 .
12K drwx------ 86 griznog griznog 8.0K Feb 20 16:42 ..
0 drwxr-xr-x 2 griznog griznog 6 Feb 20 17:01 disk
49M -rw-r--r-- 1 griznog griznog 1.0G Feb 20 17:00 disk.img
0 -rw-r--r-- 1 griznog griznog 1.0G Feb 20 16:51 disk.img.bkup
4.0K -rw-r--r-- 1 griznog griznog 220 Feb 20 16:58 disk.inc00
16K -rw-r--r-- 1 griznog griznog 14K Feb 20 17:00 disk.inc01
104K -rw-r--r-- 1 griznog griznog 102K Feb 20 17:03 disk.inc02
_______________________________________________
bblisa mailing list
[email protected]
http://www.bblisa.org/mailman/listinfo/bblisa