On Wed, Oct 24, 2001 at 07:30:59AM +0000, Thaddeus L. Olczyk
wrote:> One of the things I want to do besides mirror a hard drive is
> maintain an incremental backup on tape.
> The way for me to do this ( of course ) is to take the
> output of rsync and use it to generate a list of files for cpio.
> The basic ideal is something like this
>
> declare -i head tail
> # gets the first line with total: at the begining
> head=$(grep -n ^total: $log_rsync|awk -F: '{print $1}')
> head=$head-1
> # chop off first two lines
> tail=$head-2
> head -n $head $log_rsync|tail -n $tail -|grep -v uptodate|cpio -o >
> /tape_device
>
> Is this a way of accurately generating the list of modified files?
[I assume your $rsync_log is made with -vv; you can probably get rid of
your grep -v uptodate if you used just -v]. I think that should work,
but note that rsync will print a file name any time it considers updating a
file, which is by default whenever the modification time has changed. I'm
not sure if that's any better than just touching a special file whenever
you do an incremental update and using a find -cnewer <backup_time_file>
[available in GNU find] to find the list of files whose inodes have
changed.
> Also does it make sense to set the -a option of cpio ( it doesn't
> if rsync modifies the atime of the source files ).
Please, no. As a user I have been burned several times by backup schemes
that have used cpio -a. The -a option resets the access time of the input
file back to what it was, at the price of changing the inode time. That
will mess up find -cnewer.
- Dave Dykstra