For data backups to a DVD-R, you can use the growisofs command to write data to the disk and then add more data later.
Note: Do not use the -dvd-compat option because it fixates the disk.
To add to blank media
growisofs -Z /dev/dvd -R -J -V [volume label] [/whatever/files]
To append
growisofs -M /dev/dvd -R -J -V [volume label] [/whatever/files]
Example
For backups, I use the dar command to create an initial full archive on the first of the month, then differential archives daily.
So, on the first of the month I'd do the following to write the full archive (using July in this example):
growisofs -Z /dev/dvd -R -J -V steph-07-2007 /mnt/backups/steph-01-07-2007.dar
Then on every other day of the month I'd do the following to write the differential backup (using the 23rd July in this example):
growisofs -M /dev/dvd -R -J -V steph-07-2007 /mnt/backups/steph-23-07-2007.diff.dar
Modified existing files
It seems that modifications to files that have already been burnt are applied. So, you can burn the contents of a directory using the -Z switch, modify the files or add new ones, then burn again with the -M switch to apply the changes.
The tests I did to confirm is as follows:
steph@localhost ~ $ mkdir testdir steph@localhost ~ $ echo "testing testing 123" > testdir/test1.txt steph@localhost ~ $ echo "testing testing 234" > testdir/test2.txt steph@localhost ~ $ growisofs -Z /dev/dvd -R -J -V test testdir/*.txt Executing 'mkisofs -R -J -V test testdir/test1.txt testdir/test2.txt | builtin_dd of=/dev/dvd obs=32k seek=0' Total translation table size: 0 Total rockridge attributes bytes: 331 Total directory bytes: 0 Path table size(bytes): 10 Max brk space used 21000 183 extents written (0 MB) /dev/dvd: "Current Write Speed" is 8.2x1352KBps. builtin_dd: 192*2KB out @ average 0.3x1352KBps /dev/dvd: flushing cache /dev/dvd: closing track /dev/dvd: closing session steph@localhost ~ $ mount /mnt/dvd steph@localhost ~ $ cat /mnt/dvd/test1.txt testing testing 123 steph@localhost ~ $ cat /mnt/dvd/test2.txt testing testing 234 steph@localhost ~ $ umount /mnt/dvd steph@localhost ~ $ echo "testing testing 345" > testdir/test3.txt steph@localhost ~ $ echo "testing testing 456" > testdir/test4.txt steph@localhost ~ $ growisofs -M /dev/dvd -R -J -V test testdir/*.txt Executing 'mkisofs -C 16,2240 -M /dev/fd/3 -R -J -V test testdir/test1.txt testdir/test2.txt testdir/test3.txt testdir/test4.txt | builtin_dd of=/dev/dvd obs=32k seek=140' Rock Ridge signatures found Total translation table size: 0 Total rockridge attributes bytes: 493 Total directory bytes: 0 Path table size(bytes): 10 Max brk space used 0 2423 extents written (4 MB) /dev/dvd: "Current Write Speed" is 8.2x1352KBps. builtin_dd: 192*2KB out @ average infx1352KBps /dev/dvd: flushing cache /dev/dvd: closing track /dev/dvd: closing session steph@localhost ~ $ mount /mnt/dvd steph@localhost ~ $ ls /mnt/dvd test1.txt test2.txt test3.txt test4.txt steph@localhost ~ $ cat /mnt/dvd/test3.txt testing testing 345 steph@localhost ~ $ cat /mnt/dvd/test4.txt testing testing 456 steph@localhost ~ $ umount /mnt/dvd steph@localhost ~ $ echo "EDITED testing testing 234" > testdir/test2.txt steph@localhost ~ $ echo "testing testing 567" > testdir/test5.txt steph@localhost ~ $ growisofs -M /dev/dvd -R -J -V test testdir/*.txt Executing 'mkisofs -C 2256,4480 -M /dev/fd/3 -R -J -V test testdir/test1.txt testdir/test2.txt testdir/test3.txt testdir/test4.txt testdir/test5.txt | builtin_dd of=/dev/dvd obs=32k seek=280' Rock Ridge signatures found Total translation table size: 0 Total rockridge attributes bytes: 574 Total directory bytes: 0 Path table size(bytes): 10 Max brk space used 0 4663 extents written (9 MB) /dev/dvd: "Current Write Speed" is 8.2x1352KBps. builtin_dd: 192*2KB out @ average infx1352KBps /dev/dvd: flushing cache /dev/dvd: closing track /dev/dvd: closing session steph@localhost ~ $ mount /mnt/dvd steph@localhost ~ $ ls /mnt/dvd test1.txt test2.txt test3.txt test4.txt test5.txt steph@localhost ~ $ cat /mnt/dvd/test5.txt testing testing 567 steph@localhost ~ $ cat /mnt/dvd/test2.txt EDITED testing testing 234 steph@localhost ~ $ umount /mnt/dvd