Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 18 Mar 2003 07:29:06 +0200
From:      Giorgos Keramidas <keramida@ceid.upatras.gr>
To:        Tom Parquette <tparquet@twcny.rr.com>
Cc:        freebsd-questions@FreeBSD.ORG
Subject:   Re: Shell scripting questions
Message-ID:  <20030318052906.GA72810@gothmog.gr>
In-Reply-To: <3E762419.3040900@twcny.rr.com>
References:  <3E762419.3040900@twcny.rr.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On 2003-03-17 14:38, Tom Parquette <tparquet@twcny.rr.com> wrote:
> I've been looking through some basic shell books, and some online
> resources, that I have but I'm not finding the answer.
> Or maybe I just don't recognize the answer when I see it...
>
> I'm building a schell script that will backup my systems to CD-ROM.
> Or DVD when I can talk my wife into a burner.  :-)
>
> I'm stuck on two items:

> 1) Since my tar files CAN exceed the capacity of a CD-ROM, I want to
> check in the script if I have to call split.

I would probably run the output of tar through split anyway, and let
split take care of the rest.  In one of the Linux machines I have to
take care of, the backup script does the following:

    cd /mnt/backup
    tar -cf - / --exclude /mnt --exclude /proc --exclude /var/tmp \
            --exclude /var/run --exclude /tmp --exclude /dev | \
    gzip -9c - | \
    split -b 1073741824 - `date '+backup-%Y%m%d.tgz-'`

The final step that calls split will break the backup output in chunks
of 1 GB, which I can then join on extraction with:

    cat backup-20030318.tgz-?? | tar ...

> The closest I can come to determining the size of the output file
> from tar (e.g.ad0s1a.tgz) is: file_size=`du -k /tmp/ad0s1a.tgz`.
> The problem I have is, while this gives me the result in number of K
> blocks, it also returns the file name and directory.  I don't know
> how to get JUST the number of K blocks so I can do a numeric compare
> against 700m.

Why du not plain ls?

    $ /bin/ls -l ~/lyrics/rainbow.lyr
    -rw-rw-r--  1 giorgos  giorgos  1420 Mar 18 07:00 lyrics/rainbow.lyr
    $ /bin/ls -l ~/lyrics/rainbow.lyr | awk '{print $5}'
    1420
    $

> 2) I have a function written that will tar/gzip the filesystem then
> split it into pieces that will be turned into .iso files that will
> be fed to burncd.  I would like to capture the output of commands
> (e.g. ls -l /tmp/ad0s1a.*) into a "table" that I can examine to
> determine what was output by the split command so I know what
> mkisofs commands, and how many, I have to build/execute.  Example:
> If I end up with a ad0s1a.tgz.aa, ab, and ac from split, I know I
> have to do mkisofs' for 3 files.

I'm not sure I understand what the question is here.

> I also hope to use the same technique for determining what
> filesystems I have to backup in the first place.  e.g. If I do a df
> command I want to pull out the filesystem name and what mountpoint
> it is on.  The mountpoint is important to me because I do not want
> to back up some filesystems.  e.g. I do not want to backup /tmp.

You can always use something like this:

    $ df | grep '^/dev/ad' | awk '{print $1,$6}'
    /dev/ad0s1a /
    /dev/ad0s3e /var
    /dev/ad0s3g /usr
    /dev/ad0s3f /home

- Giorgos


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-questions" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030318052906.GA72810>