openSUSE Forums > Programming/Scripting » Bash script needed to unarchive in multiple directories

Go Back   openSUSE Forums > Programming/Scripting
Forums FAQ Members List Search Today's Posts Mark Forums Read


Programming/Scripting Questions about programming, bash scripts, perl, php, cron jobs, ruby, python, etc.

Reply
 
LinkBack Thread Tools Display Modes
  #1 (permalink)  
Old 12-Oct-2009, 14:53
Puzzled Penguin
 
Join Date: Jun 2008
Posts: 12
deanjo13 hasn't been rated much yet
Default Bash script needed to unarchive in multiple directories

Hey all,

I'm looking for a bash script that can do the following. My employer
does nightly backups of our clients data that are rarred for compression
reasons (a 5GB db compresses down to ~400 meg). What we would like to
do is recursively search through the backup folder and unrar the data as
when they call in on a issue we load their data to see what is going
on. The FTP has directory structure like this:

/backup/client1/010109/
/backup/client1/010309/
/backup/client1/010509/
/backup/client2/010109/
/backup/client2/010309/
/backup/client2/010509/

In each of the *day folders there are split rar files and the first rar
file is always .rar

What we want to do is to run a script that will unrar those files on
Tuesday, Thursday and Saturday. The cron part I know how to do. We
would like the extracted data to fall into the clients root directory
example and then delete the Monday/Wed/Friday folders if a rar file was found and extracted successfully :

/backup/client1/010109.db
/backup/client1/010309.db
/backup/client1/010509.db
/backup/client2/010109.db
/backup/client2/010309.db
/backup/client2/010509.db

Now there are roughly 500 clients that have this backup done so one
magical script that would do it for all the clients directories in the
/backup directory would be great. I should also note that the
subfolders in /backup are not always called client1, client2, etc etc
but are the names of the clients themselves.

Any help would be appreciated

Dean
Reply With Quote
  #2 (permalink)  
Old 12-Oct-2009, 15:24
Explorer Penguin
 
Join Date: Apr 2009
Posts: 690
ab@novell.com hasn't been rated much yet
Default Re: Bash script needed to unarchive in multiple directories

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

What do you have so far? Which part is catching you up?

Good luck.





deanjo13 wrote:
> Hey all,
>
> I'm looking for a bash script that can do the following. My employer
> does nightly backups of our clients data that are rarred for
> compression
> reasons (a 5GB db compresses down to ~400 meg). What we would like to
> do is recursively search through the backup folder and unrar the data
> as
> when they call in on a issue we load their data to see what is going
> on. The FTP has directory structure like this:
>
> /backup/client1/010109/
> /backup/client1/010309/
> /backup/client1/010509/
> /backup/client2/010109/
> /backup/client2/010309/
> /backup/client2/010509/
>
> In each of the *day folders there are split rar files and the first
> rar
> file is always .rar
>
> What we want to do is to run a script that will unrar those files on
> Tuesday, Thursday and Saturday. The cron part I know how to do. We
> would like the extracted data to fall into the clients root directory
> example and then delete the Monday/Wed/Friday folders if a rar file was
> found and extracted successfully :
>
> /backup/client1/010109.db
> /backup/client1/010309.db
> /backup/client1/010509.db
> /backup/client2/010109.db
> /backup/client2/010309.db
> /backup/client2/010509.db
>
> Now there are roughly 500 clients that have this backup done so one
> magical script that would do it for all the clients directories in the
> /backup directory would be great. I should also note that the
> subfolders in /backup are not always called client1, client2, etc etc
> but are the names of the clients themselves.
>
> Any help would be appreciated
>
> Dean
>
>

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQIcBAEBAgAGBQJK05BtAAoJEF+XTK08PnB5PdsP/iatNMmr+/THMn3ioWHQZR4H
KxxnweJw/1QBZnBqVnWX1PDpA5mTOWM/1HkMlkFBObJMRnTDSFiJjEQQkc13hyOk
wVzXZ0cZl89u2D7fIp3Os8n6EbR145wCsH7NRKiI/tqR2XQqIzBVQxiF5RpclVxv
34JtPrtniC5+OgqLDyYr9Pl+8NXIvOkwXe3cH1zWI+/kK5oYVyuRorpZgOpwEumF
tI1l9x9LCodaxgV1Lxb40xHfKkc2E+NohoGUsK30tjeOxmeLfG qynHjHjAf5PwHR
SBQ4ZzGDW+/IoFTZeRigu9Z3rX/To8+Dw+LXDhhLAmPLY/NQjLfASSKddqEzSfpr
iTUC+ntE3+U2SPjjLKIel5NfeQWtU29WawLrfkewvvXSLRrcwY zrZApHZ2mIZB8n
qn3YazK7qzflCPtRGTpoZmLYMBCHbVvRixcO+rmuJT/R0vAXnb6a6W4sboO53Hq+
YQ5lCM6UqrNhU9cQ//M1hh244EqegvWjhfzVDyuYCHOSM6d8NeETfk60aeYOK6ND
7bIpn7F+MSjc5Z+fqmT7lEhXxRzAAay1Y+Uv+3j3ompabAvDsA 2TxJ1uEY5tUppb
hqyJZUzCwTEU2nGiYmEoU9uDy2BTbOk1IM9P86B4dSgNqFGw66 D1q4n/iKgXaRm2
gcAPuDibtLYMgi+6Ej83
=dQja
-----END PGP SIGNATURE-----
Reply With Quote
  #3 (permalink)  
Old 12-Oct-2009, 15:55
Puzzled Penguin
 
Join Date: Jun 2008
Posts: 12
deanjo13 hasn't been rated much yet
Default Re: Bash script needed to unarchive in multiple directories

Right now I got some help on the mailing list.

Code:
for clientdir in /backup/*; do
  cd $clientdir
  for daydir in $clientdir/*; do
    unrar $daydir/*.rar
    rm -rf $daydir
  done
done
After some browsing through the ftp's directories it seems some have the first rar as .r01.

So ideally I would like to be able for it to search for the .rar extension first, if not found look for .r01 and try extracting it. I would like for it to only delete the directories if they were successfully extracted. If no archive was found to leave that directory as is.
Reply With Quote
  #4 (permalink)  
Old 12-Oct-2009, 16:04
Explorer Penguin
 
Join Date: Apr 2009
Posts: 690
ab@novell.com hasn't been rated much yet
Default Re: Bash script needed to unarchive in multiple directories

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

You may want to check for sure but the last time I heard the .rar file is
always the first one and then .r01, .r02, r## files are just used so that
the individual files do not get over a certain, user-desired, size. If
you have .r01 files on their own do they even work? I've seen them on
their own once or twice but only when the .rar file that went with them
was lost. Extraction of some data may be possible but I can never get all
of it.

Anyway, that's where I'd start. You could easily add conditionals in
there to check for .rar and then, if not there, check for .r01 but I
without knowing that is valid it won't help you much.

Good luck.





deanjo13 wrote:
> Right now I got some help on the mailing list.
>
>
> Code:
> --------------------
>
> for clientdir in /backup/*; do
> cd $clientdir
> for daydir in $clientdir/*; do
> unrar $daydir/*.rar
> rm -rf $daydir
> done
> done
>
> --------------------
>
>
> After some browsing through the ftp's directories it seems some have
> the first rar as .r01.
>
> So ideally I would like to be able for it to search for the .rar
> extension first, if not found look for .r01 and try extracting it. I
> would like for it to only delete the directories if they were
> successfully extracted. If no archive was found to leave that directory
> as is.
>
>

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQIcBAEBAgAGBQJK05nPAAoJEF+XTK08PnB5sPkP/18oFcaxRAIvXVs8w7csRy88
2t19gAfCOXD3/Om1SHDXgyMaFD3359p+lNNtb/gYvD8Pk2CHd637SZf4iLaJmXFk
w/T5SlmLuv4S8vFc5YCiithJpxtxG6Xh7iCIIF573u4GXNRfihRZ t0hWzKOWnxIw
yrD7sicLhkvbmjOwbWA49WaEIYkbgCw5IIX3ZNfPtNSV6/bC3j6a0UEbVuR6d1Zb
5jlaAzZDxka0Jk+Z4pAMgZRL5H6ZbC10LeHM+9yuGASBwbYAoo dzJH4DQVtxsOk4
ITA+IUX0n9fyvZAgCjSWQpMlMG4TiPYJIx/VF6iZ39jPNVvWnJLfy01bwMB7+RHN
lJ8R326qEUmrzKk/f2uwaaEdKNkDBByafuwQfCYtq0frblc0OqhutldevzXf+GW8
QvJXpiHejNyKevlccvEzj7nx2hml7Rq5O2jBf5C0hNaXGwEooF S9wT3bABbH/AQX
1ceP203Iy6WpE/0Gv7jkWGVCerOUQKcuJMG+TbJg64qHJKi7q2V2AngGLPq1W2Iz
9yCLHaGtiV+h8Yr7HuSrJkU+G1ZhYduNM5hivCpdnX8zT6CmYj Jx+EFHbtx44j7G
r1vCQWwgu2AFw1e3/BL9luF+pEBT3a+WNb5f1oekGKUwt3BDaOcpjdTnSFYWg93H
6pLEwxuc3iq873Ilo3MO
=fJT6
-----END PGP SIGNATURE-----
Reply With Quote
  #5 (permalink)  
Old 12-Oct-2009, 16:17
Puzzled Penguin
 
Join Date: Jun 2008
Posts: 12
deanjo13 hasn't been rated much yet
Default Re: Bash script needed to unarchive in multiple directories

Yes the ones that start with .r01 when they do not have a .rar, extract fine when done from cli.
Reply With Quote
  #6 (permalink)  
Old 12-Oct-2009, 16:42
Puzzled Penguin
 
Join Date: Sep 2009
Posts: 8
craverii hasn't been rated much yet
Default Re: Bash script needed to unarchive in multiple directories

Use a database.
Reply With Quote
  #7 (permalink)  
Old 12-Oct-2009, 17:02
Puzzled Penguin
 
Join Date: Jun 2008
Posts: 12
deanjo13 hasn't been rated much yet
Default Re: Bash script needed to unarchive in multiple directories

Why over complicate things? The clients data is uploaded every other night to our ftp and simply has to be unextracted on the offdays.
Reply With Quote
  #8 (permalink)  
Old 19-Oct-2009, 12:24
Explorer Penguin
 
Join Date: Sep 2008
Posts: 161
dmera hasn't been rated much yet
Default Re: Bash script needed to unarchive in multiple directories

I have a script for you which will unrar in the same directory where the files were archived. I cannot understand from your explanation where you want the unarchived files to be created. The way it works now the script will place in the same directory the files and will delete the archives(rar and r01). If you give me more details I will modify it the way you need it.
Cheers
Reply With Quote
  #9 (permalink)  
Old 23-Oct-2009, 17:45
Student Penguin
 
Join Date: Sep 2008
Location: Near Brussels, Belgium N50 50.394 E4 29.462
Posts: 148
Rikishi42 is on a distinguished reputation roadRikishi42 is on a distinguished reputation road
Default Re: Bash script needed to unarchive in multiple directories

On 2009-10-19, dmera <dmera@no-mx.forums.opensuse.org> wrote:
>
> I have a script for you which will unrar in the same directory where the
> files were archived. I cannot understand from your explanation where you
> want the unarchived files to be created. The way it works now the script
> will place in the same directory the files and will delete the
> archives(rar and r01). If you give me more details I will modify it the
> way you need it.


Would that script be something lik this?

#!/bin/bash
unrar x $1
rm $1



;-)




--
Any time things appear to be going better, you have overlooked
something.
Reply With Quote
Reply

Bookmarks


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On




 

Search Engine Friendly URLs by vBSEO 3.3.0 RC2