cdbackup - Streaming backup to CD-R(W)/DVR-R(W)
cdbackup [-mvwCDRVX] [-d device
] [-r scsi-dev
] [-s speed
] [-p num
] [-l size
] [-a label
] [-E cdrecord
] [-- 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
this program REQUIRES that a recent version of cdrecord
(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.
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
- -d device
- The device name which is used for reading things like the
TOC from a (partly written) media.
- -r scsi-device
- The scsi device which is passed to cdrecord(1) (via
dev= scsi-device). Must be given as three, comma separated numbers:
(default: none or the contents of the environment variable CDR_DEVICE)
- -s speed
- The writing speed which is passed to cdrecord(1)
(via speed= speed).
(default: 4 or the contents of the environment variable CDR_SPEED)
- -p num
- 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. Make sure that your
cdrecord(1) version is able to burn DVD media.
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.
- -E cdrecord
- Set an alternate cdrecord executeable.
- -i image
- Enables virtual image mode. The backup stream is written to
the given image file. The file is created if it doesn't exist. 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
to 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 image 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
- -l size
- 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 label
- A text label to identify the backup set. The first 32
characters of this string are save with the backup.
(default: "CDBackup Track")
- -c command
- 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
(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.
- -- cdrecord-options
- 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
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
- 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
- Increase the padsize with option -p. Use values >=
- 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
Stefan Huelswitt <email@example.com>
Copyright (c) 2000-2012 Craig Condit, Stefan Huelswitt.
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
- 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.