Bash Scripting

Bryce C. plug-discuss@lists.plug.phoenix.az.us
13 Apr 2002 15:40:12 -0700


That's getting a little too complicated.  My script is a simple one that
is run from /etc/cron.hourly/ by root as defined in /etc/crontab.  This
is on a single user machine (plus root etc) and just copies the selected
data, files susceptable to corruption and more so, being open when the
power is pulled on accident.  Yes I know this is not good to do but it
happens.  I have the same script bu lots of crucial stuff but I want to
be able to choose just what I want so I can't accidentally overwrite a
program that i'd been coding for several hours with just the template
file I started of with.


On 13 Apr 2002 13:37:22 -0700, der.hans wrote:
> Am 13. Apr, 2002 schwätzte Bryce C. so:
> 
> > Could anyone give me some help with some bash scripting.  I'm trying to
> > write a script for an hourly back up but I don't know how to add a
> > timestamp in to the tar output file name.  What I have currently (with
> > confidential parts hidden) is:
> >
> > #!/bin/bash
> > su _USER_ -c "cd /home/_USER_; tar -czf
> > _NFSMOUNT_/_FILENAME_._COMPUTERNAME_._DATE_.tar.gz _DIRECTORYTOBU_/"
> >
> > Anything with _TEXT_ is the ommitted text except for the _DATE_.  Anyone
> > please?
> 
> I toss the date in the format I want into a variable, then use that
> variable. That variable should be expanded just fine. The key is to make
> sure that it gets assigned and that it doesn't have any spaces in it.
> 
> In my script below you could add the following two lines after the $DATE
> variable is assigned to make sure you're getting what you want.
> 
> echo "<$DATE>"
> exit
> 
> The angle-brackes act as delimiters in the output to show you exactly what
> the $DATE variable contains.
> 
> If you su with a dash, then you should go to their home dir, so you don't
> need the cd. If you don't trust that you should get the home path from
> /etc/passwd.
> 
> It looks like you're only backing up one dir within the home dir. If you
> want to backup the entire home dir, then you should do that from one dir up
> to get all the dotfiles. That will add an extra-level to the path that's
> backed up.
> 
> You don't need to su unless you're wanting the user to be able to access the
> backup directly. That's a good idea, but you should remove their write perms
> afterwards.
> 
> You might want to add the -l option to make sure you don't wander down any
> SMB mounts.
> 
> You can also use the -C option to do the cd.
> 
> #!/bin/bash
> 
> USER=$1
> if [ $2 ] ; then
>       if [ $2 = 'full' ] ; then
>               FULL=yes
>       fi
> fi
> 
> DIR2BACKUP=something
> NFSMOUNT=something
> FILENAME=something
> HOSTNAME=`hostname`
> 
> DATE=`date +%d%b%Y`
> USERSHOME=`grep ^$USER: /etc/passwd | cut -f 6 -d :`
> TARBALL=$NFSMOUNT/$FILENAME.$HOSTNAME.$DATE.tar.gz
> 
> if [ $FULL = 'yes' ] ; then
>       DIR2BACKUP=`basename $USERSHOME`
>       su $USER -c "tar clzf $TARBALL -C $USERSHOME/.. $DIR2BACKUP/"
> else
>       su $USER -c "tar clzf $TARBALL -C $USERSHOME $DIR2BACKUP/"
> fi
> 
> chmod w-a $TARBALL
> 
> # end
> 
> Check for typos and bad code. Munge for your purposes. Translate to Swahili.
> 
> ciao,
> 
> der.hans
> -- 
> #  https://www.LuftHans.com/
> #  Two roads diverged in a wood, and I --
> #  I took the one less traveled by,
> #  And that has made all the difference. -- Robert Frost
> #  I, OTOH, prefer to just go stomping through the desert... - der.hans
> 
> 
> ________________________________________________
> See http://PLUG.phoenix.az.us/navigator-mail.shtml if your mail doesn't post to the list quickly and you use Netscape to write mail.
> 
> PLUG-discuss mailing list  -  PLUG-discuss@lists.plug.phoenix.az.us
> http://lists.PLUG.phoenix.az.us/mailman/listinfo/plug-discuss
>