+# We've now finished with /mnt/root (the real root filesystem),
+# so unmount it and synch everything.
+umount /mnt/root
+sync
+
+#----------------------------------------------------------------------
+# Send the device snapshots (underlying device + changes in ramdisk)
+# to the remote server.
+
+log sending disks
+
+# XXX Effectively this is using the hostname derived from network
+# configuration, but we might want to ask the user instead.
+# XXX How do we ensure that we won't overwrite target files? Currently
+# tries to use the current date as a uniquifier.
+
+# Names will be something like
+# p2v-oirase-200709011249-hda.img
+basename=p2v-`hostname -s|tr -cd '[0-9a-zA-Z]'`-`date +'%Y%m%d%H%M'`
+
+for dev in $devices_to_send; do
+ rdev=`echo $dev | sed 's|^sd|hd|'`
+ name="$basename-$rdev.img"
+ log sending $dev to $name
+
+ snap_name $dev
+
+ sectors=`blockdev --getsize /dev/mapper/$dname`
+
+ gigs=$(($sectors/2/1024/1024))
+ echo "Sending /dev/$dev (${gigs} GB) to remote machine"
+
+ dd if=/dev/mapper/$dname | gzip --best |
+ case "$remote_transport" in
+ ssh)
+ ssh -p "$remote_port" "$remote_host" \
+ "zcat > $remote_directory/$name"
+ ;;
+ tcp)
+ echo "p2v $name $sectors" > header
+ echo > newline
+ cat header - newline | nc "$remote_host" "$remote_port"
+ ;;
+ esac
+done
+
+