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>
