LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Newbie (https://www.linuxquestions.org/questions/linux-newbie-8/)
-   -   Help I need help tarring multiple files in multiple directories (https://www.linuxquestions.org/questions/linux-newbie-8/help-i-need-help-tarring-multiple-files-in-multiple-directories-159583/)

VisionZ 03-18-2004 06:16 PM

Help I need help tarring multiple files in multiple directories
 
I cant seem to figure out how to write a script which will tar all my bash files, in all my directories in and under HOME, but not the directories themselves and not this particluar script. How can I accomplish this??? Any help would be greatly appreciated.

Tinkster 03-18-2004 06:53 PM

Something like
Code:

#!/bin/sh
find ~ -iname "*.sh" -exec ls -1 {} \; > ~/back_us_up.1
grep -v <backupscriptsfilenam> ~/back_us_up.1 > ~/back_us_up.txt
tar -F ~/back_us_up.txt xvzf my_scripts.tar.gz

should work ...

[edit]
If your scripts don't end in .sh it'd be a bit more
complicated ... you'd have to skip the iname bit
in find, and -exec file on all files like:
find ~ -exec file {} \; | grep -i shell | cut -d : -f 1 > ~/back_us_up.1
[/edit]

Cheers,
Tink

VisionZ 03-18-2004 10:24 PM

I was thinking
 
I am new to programing but I thought they all had to start like
#!/bin/bash

I figured the tarring would go something like

for files in $HOME | ls -l
-tar zxf backups.tar.z
then listing all the subfolders by full path name? Maybe I,m simplifying this to much. I,m just struggling on how to do this and how to TAR everything but this script. this may be a dumb question but what it the bin/sh bash line??? I use the cygwin term for windows, This is my first programming class. Any further help for this newb would be greatly appreciated.

VisionZ 03-18-2004 10:26 PM

how can i tell if they end is .sh???

Tinkster 03-19-2004 12:02 AM

Re: I was thinking
 
Quote:

Originally posted by VisionZ
I am new to programing but I thought they all had to start like
#!/bin/bash
On most systems sh will be a symlink to
bash, but sh is "more portable" ... and if
you keep it simple like in my example it
will work with old bourne (and most likely
korn) shell as well ...

Quote:

I figured the tarring would go something like

for files in $HOME | ls -l
-tar zxf backups.tar.z
then listing all the subfolders by full path name?
You could do that, but I think my approach
is more elegant, and probably faster ;)


Cheers,
Tink


VisionZ 03-20-2004 12:44 AM

patience
 
Thanks for helping me I,ll give it a shot and let ya know if it works. I appreciate the patience. :D

VisionZ 03-20-2004 06:04 AM

script didnt work
 
When i tried it, I get thte follwing errors
(archiver = my script name)

./archiver: cannot create ~/backup.1: directory nonexistent
repeats it twice
tar: you must specify on of the '-Acdtrux' options
Try 'tar --help' for more info

I,m using the bash shell, and like I said I am new to programming, some of your code made sense to me, some of the stuff I was totally lost looking at =), I am assuming the in your code where you put grep -v <myscriptname> this is where I put my script which is called archiver so it will not get tarred??? I truly do appreciate the help as this particular problem is giving me difficulty trying to figure out. Also trying to write a script which will delete my temp internet files but thats a different story.

Bebo 03-22-2004 04:25 AM

Maybe something along these lines - although it keeps the directory structure:
Code:

#!/bin/sh

SCRIPTNAME=$HOME/archiver
[ x`echo $1` = x ] && ARCHIVE=$HOME/scripts.tar

find /usr/local/bin -type f | while read FILE ; do
  BASHSCRIPT=`file "$FILE" | grep Bourne | grep -c "shell script text executable"`

  if [ $BASHSCRIPT -eq 1 -a "$FILE" != "$SCRIPTNAME" ] ; then
      echo "Archiving $FILE in $ARCHIVE"
      tar rf $ARCHIVE $FILE
  fi
done

This uses the file command to find the (ba)sh scripts.

VisionZ 03-22-2004 06:01 AM

After trying your script, it ran, but nothing happened, or I didnt see it. All my scripts which I wrote are still their, and I dont see a tar archive anywhere? I am running cygwin for windows, would this cause me any problems??

Bebo 03-22-2004 06:47 AM

Well, your scripts should be left where they are, as tar only makes a tar archive and doesn't remove anything. However, I find it strange that you can't find the ~/scripts.tar archive... I don't know what cygwin does, so I can't help you with that... Can you post the output here? And your command?

VisionZ 03-22-2004 05:18 PM

I used the exact code that you had given me above and after I ran the script, it just jumps to the next prompt in my terminal. No output in the terminal at all no echoing

:D
Code:

echo "archiving $file in $archive"

The way my directories are set up is cygwin in under my C: drive. then it goes something like this.

cygwin/home/owner(which is my ~ directory) /emacs-21.3/bin(where my scripts are saved before I move them into owner)

I tried changing the structure in the script to something like /~/home/owner/
but that didnt work either

I appreciate the patience, if I,m not making any sense just let me know, like i said before i,m still learning.

Tinkster 03-22-2004 11:14 PM

My original bits and pieces (mind you, I never tested
them ;}) had two flaws :)
Try this one:
back_scripts
Code:

#!/bin/sh
if [ "$1" != "" ]; then
    directory="$1"
else
    directory=`pwd`
fi
echo $directory
find "$directory" -exec file {} \; | grep -i shell | cut -d : -f 1 > ~/back_us_up.1
grep -v back_scripts ~/back_us_up.1 > ~/back_us_up.txt
tar czf ~/my_scripts.tar.gz -T ~/back_us_up.txt

If you don't like the intermediate files:
Code:

#!/bin/sh
if [ "$1" != "" ]; then
    directory="$1"
else
    directory=`pwd`
fi
echo $directory
find "$directory" -exec file {} \; | grep -i shell | cut -d : -f 1 | grep -v back_scripts | tar czf ~/my_scripts.tar.gz -T -


Cheers,
Tink :)

VisionZ 03-23-2004 01:17 AM

HOLY CRAP, I dont know what happened but heres the error message I received;

cur: not found
tar (child): ~/myscripts.tar.gz: Canot open: No such file or directory
tar (child): Error is not recoverable: exiting now
find: file terminated by signal 13 (this never stops and keeps going and going and going)

until I hit Ctrl-C

everything is spot on am I doing something wrong?? Could Cygwin for windows be causing this???

VisionZ 03-23-2004 01:22 AM

woops spelling error the first time Tink, now I have the exact same message, but no signal 13 error instead, I get the same message and then

tar: Removing leading `/' from member names

everything is perfect this time though.???

VisionZ 03-23-2004 01:33 AM

when I try the first one the error says

grep: ~/back_us_up.1: no such file or directory
tar: ~/back_us_up.txt: cannot open: no such file or directory
tar: error is not recoverable: exiting now

If I may ask what is this txt file??? I use emacs as a text edit not word pad.
also what is back_us_up.1 i was wondering what the .1 stood for??


All times are GMT -5. The time now is 04:08 AM.