"Linux Gazette...making Linux just a little more fun!"


Copying Files Using Mirror

By


Do you have a laptop ? And want frequently to copy files to another system ? Use mirror !

I frequently have to exchange files between my laptop and other systems, eg. my home desktop. This can be conveniently done using rdist(1).

I wrote a small script called mirror, which basically contains a call of rdist setting up a small Distfile using the shell's here syntax:

rdist  -d PWD=`pwd` -f - << EOF
${PWD} -> mirror
        install -oyounger ${PWD};
        except_pat ( ~\\$ );
EOF

This is not the place to deal with rdist-syntax in greater detail, so see rdist's-manpage, if you like. Files will be copied to host mirror. Of course you have to set up /etc/hosts appropiately.

So working on a project with files in ~/wsp/pbd/os-tools, I can simply say

nana:/home/bav/wsp/pbd/os-tools> mirror
mirror: updating host mirror
mirror: /home/bav/wsp/pbd/os-tools/main-window.tcl: updating
mirror: /home/bav/wsp/pbd/os-tools/os-tools.tcl: updating
mirror: /home/bav/wsp/pbd/os-tools/popups.tcl: updating
mirror: updating of mirror finished
and mirror will copy new or changed files to the very same directory on the other node. This will be done recursively. Files on the other node, which are younger than the files on the node I started mirror on, will be mentioned, but remain untouched. Emacs-backup-files will not be copied.

Using the Option -verify, you can check what will be done without really doing anything:

nana:/home/bav/wsp/pbd/os-tools> mirror -verify
mirror: updating host mirror
mirror: /home/bav/wsp/pbd/os-tools/os-tools.tcl: need to update
mirror: /home/bav/wsp/pbd/os-tools/popups.tcl: need to update
mirror: updating of mirror finished

The option -f will remove extraneous files on node mirror. This is useful to get a real mirror:

nana:/home/bav/wsp/pbd/os-tools> mirror -f
mirror: updating host mirror
mirror: lulu: /home/bav/wsp/pbd/os-tools/qqq: removed
mirror: lulu: /home/bav/wsp/pbd/os-tools/otto: removed
mirror: /home/bav/wsp/pbd/os-tools/main-window.tcl: updating
mirror: /home/bav/wsp/pbd/os-tools/popups.tcl: updating
mirror: updating of mirror finished

Besides mirroring to another system's disk mirror can be used to mirror the current directory to a floppy. This comes in handy for a quick kind of backup. There is no real advantage of using rdist when operating locally.

If there is enough space available, I use cp with the options -ruvp. To do so, call mirror with the option -floppy:

nana:/home/bav/wsp/pbd/os-tools> mirror -floppy
./main-window.tcl -> /floppy/./main-window.tcl
./os-tools.tcl -> /floppy/./os-tools.tcl
./popups.tcl -> /floppy/./popups.tcl
As with rdist, only new or changed files are copied. Mounting and unmounting the floppy is done by the script. Right now there is no way of handling extraneous files implemented.

In case you like this ideas, you can find my mirror-utility here.


Last modified: Thu Sep 24 22:24:59 MET DST


Copyright © 1998, Gerd Bavendiek
Published in Issue 24 of Linux Gazette, January 1998


[ TABLE OF CONTENTS ] [ FRONT PAGE ]  Back  Next