Streaming backup to cd-r(w)/dvr-r(w)
cdbackup [-mvwCDRVX] [-d device] [-r scsi-dev] [-s speed]
[-i image] [-p num] [-l size] [-a label] [-c command] [-- cdrecord-options]
cdbackup is a utility to make streaming backups to CD-R(W)/DVD-R(W) disks. It's designed to work with any backup tool which writes the backup to stdout (like tar/cpio/afio).
NOTE: this program REQUIRES that a recent version of cdrecord(1) (or cdrecord-ProDVD for DVD support) is present in the PATH.
While you can perfectly append several sessions on CD-R(W) media, I didn't manage to make this work on DVD-R(W) media. To allow multiple, separate backups on these media, the concept of virtual images has been introduced.
A virtual image is a plain file on your harddisk. You can append several backups to an image and after completing your backup session, the image is dumped to CDR/DVD media in one burning session. You can dump the same image multiple times too, if you want redundancy on the CDR/DVD media.
Virtual image files are never deleted by cdbackup. After dumping an image, you have to delete it by your self.
WARNING! When using this program under Linux, be sure not to use dump on a mounted filesystem. This has a high potential for creating corrupted backups. As of kernel version 2.4.19, this has not been fixed and it may not be fixed at all. You can read Linus statement about this at <http://search.alphanet.ch/cgi-bin/search.cgi?max_res[email protected]penguin.transmeta.com&domain=ml-linux-kernel>
The device name which is used for reading things like the TOC from a (partly written) media.
The scsi device which is passed to cdrecord(1) (via dev=scsi-device). Must be given as three, comma separated number: scsibus,target,lun.
(default: none or the contents of the environment variable CDR_DEVICE)
The writing speed which is passed to cdrecord(1) (via speed=speed).
(default: 4 or the contents of the environment variable CDR_SPEED)
The number of sectors (of 2048 byte) to use for padding (see cdrecord(1) padsize).
Enables the use of CDROM XA2 mode in cdrecord(1). By default CDROM mode 1 is used. The default is possibly causing problems during restore on certain kernel version/CDROM hardware combinations at the end of the last session on a media. Sony drives doesn't support CDROM XA 2 mode (see cdrecord(1) -multi).
Enables DVD writing mode. Cdrecord-ProDVD is used to burn DVD media, but it's called through a script called "dvdrecord". You should set your cdrecord-ProDVD key and call cdrecord-ProDVD from there.
Remember that you cannot write multiple sessions to DVD media. Either you stick with one backup per media or you have to use virtual images.
In DVD mode the options -p and -X have no effect.
Enables virtual image mode. The backup stream is written to the given image file. The file is created if it doesn't exists. It's mandatory to give an explicit media size with -l. Take care that the created virtual image isn't larger that the media size you want to dump it later. You can add up to 96 backups to an virtual image.
If the backup extends the specified media size and you have enabled multi-disk mode, additional images files are created (the filenames are derived from the initial image name by adding a dot and a decimal number).
Dump the virtual image specified with -i to real media. Image dumps are written as single sessions always. If you have enabled multi-disk mode and additional images are found, you're prompted for media change, so that you can dump all images in turn.
Virtual images (even when dumped to media) are not compatible with older cdbackup versions.
For normal operation the media size is auto-detected from the cdrecord ATIP information. If this fails or for virtual image mode use this option to set the media size. This is used to calculate how much data can be stored on the media.
By default the given value is taken as megabytes. You can append a single letter to the number to select: (k)ilobytes, (m)egabytes, (g)igabytes or (s)ectors (e.g. 170k, 4488m, 350000s).
Disables creation of the datablock CRC checksum. There is no real reason to use this option, unless you can't efford the extra 0,2% media space that is used to store the checksum.
Although the on-disk layout of checksummed backups is different, they are fully backwards compatible with older version of cdbackup, but obviously older versions can't check the backup integrity.
A text label to identify the backup set. The first 32 characters of this string are save with the backup.
(default: "CDBackup Track")
The command which is executed whenever cdbackup needs to request a new media in multi-disk mode. This command (or script) should prompt the user and return after the recording device is ready again. The command receives one argument, which is the device name passed with -d. This can be used to issue commands to the device like ejecting the media.
(default: use internal diskchange prompt)
Enables multi-disk mode. When the current media is filled, a new media is requested (see option -c) and the backup is continued. Backups can only be continued to empty media, this means you cannot insert a partly filled media for continuation.
Enables verbose mode.
Enables DEBUG output (probably not useful for normal use).
Prints out version information and exits.
Pass following options to cdrecord(1).
To create a tar archive of /home and output it to a 700 MB CD-R(W) on /dev/scd0 (scsi device 2,0):
tar cvf - /home | cdbackup -d /dev/scd0 -r 2,0 -l 700 -a "Test Backup"
To create a tar archive of /usr and output it to a series (multi-disk mode) of 650 MB CD-R(W) on /dev/sr1 (scsi device 1,4,0) with writing speed 12 and verbose output:
tar cf - /usr | cdbackup -d /dev/sr1 -r 1,4,0 -s 12 -m -v
To create a backup on a virtual image:
tar cf - /usr | cdbackup -i /tmp/vimage -l 4488m
Add another backup to the same virtual image (with multi-disk mode):
tar cf - /home | cdbackup -i /tmp/vimage -l 4488m
Dump the virtual image to one (or several) DVD media on /dev/cdrom (scsi-ide device 0,0,0), enabling BURNFREE:
cdbackup -i /tmp/vimage -w -R -d /dev/cdrom -r 0,0,0 -s 4 -m -- driveropts=burnfree
Certain combinations of CDROM drivers and kernel versions are causing a problem when restoring data. The restore process aborts with an read error close to the end of the session, while the data on the media is perfectly good.
All CDR sessions written in track-at-once mode (which is unavoidable for multisessions) end in at least two unreadable runout sectors (for additional information refer to the file README.copy from the cdrecord package). As the kernel does some readahead on the device, it stumbles over these unreadable sectors before reaching the actual end of data.
Some drivers are reporting to syslog but doesn't pass the error to the application, while others make the application fail. From user feedback, it seems that pure SCSI setups are mostly working fine, while ide-scsi setups are likely to fail.
The author isn't able to provide a full solution, but some hints which may help:
Update to a recent kernel.
Disable kernel readahead with option -R when restoring.
Increase the padsize with option -p. Use values >= 128.
Use option -X if your writer supports this (Sony drives doesn't supports this mode).
Please contact the author if you can contribute additional information about the problem.
Stefan Hülswitt <[email protected]>
Copyright (c) 2000-2004 Craig Condit, Stefan Hülswitt.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.