Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Perl > Perl Misc > Feed a directory listing to a script

Reply
Thread Tools

Feed a directory listing to a script

 
 
Shabam
Guest
Posts: n/a
 
      08-08-2005
I have a command script that backs up a user account. This involves moving
files from different directories into an archive.

Now, I need that script to back up all user accounts on the system, by going
through the directory structure and running the backup script on each one.
Can someone show me how this can be done? I'm not a perl programmer and
have only dabbled a bit in it.

My directory structure is like this:

/Users/0/
/Users/1/
/Users/2/
/Users/3/
.... so on...

User account names reside in those folders, so user jason would be in
"Users/j/jason".

Please don't tell me to just tar/gz the /Users/ directory. That will not
work for this because it will be greater than 4GBs, and it won't allow me to
restore accounts individually.

Thanks for any help.


 
Reply With Quote
 
 
 
 
Anno Siegel
Guest
Posts: n/a
 
      08-08-2005
Shabam <> wrote in comp.lang.perl.misc:
> I have a command script that backs up a user account. This involves moving
> files from different directories into an archive.
>
> Now, I need that script to back up all user accounts on the system, by going
> through the directory structure and running the backup script on each one.
> Can someone show me how this can be done? I'm not a perl programmer and
> have only dabbled a bit in it.
>
> My directory structure is like this:
>
> /Users/0/
> /Users/1/
> /Users/2/
> /Users/3/
> ... so on...
>
> User account names reside in those folders, so user jason would be in
> "Users/j/jason".


So what have you tried so far, and how does it fail?

> Please don't tell me to just tar/gz the /Users/ directory. That will not
> work for this because it will be greater than 4GBs,


So?

> and it won't allow me to
> restore accounts individually.


Ah, but it does. The problem is, you'd have to read through the entire
tar file, but you can restore any selection of files you want.

Anno
--
If you want to post a followup via groups.google.com, don't use
the broken "Reply" link at the bottom of the article. Click on
"show options" at the top of the article, then click on the
"Reply" at the bottom of the article headers.
 
Reply With Quote
 
 
 
 
Joe Smith
Guest
Posts: n/a
 
      08-08-2005
Shabam wrote:
> I have a command script that backs up a user account. This involves moving
> files from different directories into an archive.
>
> Now, I need that script to back up all user accounts on the system, by going
> through the directory structure and running the backup script on each one.


Here is a hint:

perl -le 'while(($user,$pw,$uid,$gid,$q,$c,$name,$home)=get pwent){print
"~$user = $home for $name" if $uid > 100}'

> Can someone show me how this can be done? I'm not a perl programmer and
> have only dabbled a bit in it.


OK, here's another hint. Replace the print() part with this:

system "tar cvf $user.tar $home >$user.dir 2>>error.log";

-Joe

P.S. Next time, do not include comp.lang.perl; it has been replaced
by the comp.lang.perl.misc newsgroup.
 
Reply With Quote
 
Shabam
Guest
Posts: n/a
 
      08-09-2005
> > Please don't tell me to just tar/gz the /Users/ directory. That will
not
> > work for this because it will be greater than 4GBs,

>
> So?


You don't get it do you?


 
Reply With Quote
 
Anno Siegel
Guest
Posts: n/a
 
      08-09-2005
[newsgroups trimmed]

Shabam <> wrote in comp.lang.perl.misc:
> > > Please don't tell me to just tar/gz the /Users/ directory. That will

> not
> > > work for this because it will be greater than 4GBs,

> >
> > So?

>
> You don't get it do you?


What don't I get? Some file systems have a size limit (usually at 2 GB,
not 4), but others don't. I have built and used backups that were much
larger.

As for your original question, you visit each home directory and run your
backup script on it with an individual output file. That's what thousands
of sysadmins are doing. What's the problem?

Anno
--
If you want to post a followup via groups.google.com, don't use
the broken "Reply" link at the bottom of the article. Click on
"show options" at the top of the article, then click on the
"Reply" at the bottom of the article headers.
 
Reply With Quote
 
Matthew King
Guest
Posts: n/a
 
      08-09-2005
"Shabam" <> writes:

> My directory structure is like this:
>
> /Users/0/
> /Users/1/
> /Users/2/
> /Users/3/
> ... so on...
>
> User account names reside in those folders, so user jason would be in
> "Users/j/jason".


You don't even need to use perl, you can do this directly in bash:

for k in /Users/*/*/; do run_backup_script "$k"; done

The perl equivalent would look similar but IIRC be a bit mor involved.

Matthew

--
I must take issue with the term "a mere child," for it has been my
invariable experience that the company of a mere child is infinitely
preferable to that of a mere adult.
-- Fran Lebowitz
 
Reply With Quote
 
Joe Smith
Guest
Posts: n/a
 
      08-10-2005
Shabam wrote:
>>> Please don't tell me to just tar/gz the /Users/ directory.
>>> That will not work for this because it will be greater than 4GBs,

>>
>>So?

>
> You don't get it do you?


Get what? Modern versions of tar can create archive files of
greater than 2 or 4 gigabytes.

linux% ls -l 5gigabyte.zip
-rw-r--r-- 1 jms jms 5751592946 May 3 19:37 5gigabyte.zip
linux% tar cf 5gb.tar 2005-03-01.zip
linux% ls -l 5gb.tar
-rw-r--r-- 1 jms jms 5751603200 Aug 9 22:30 5gb.tar

So why do you say 4GB wont work?

-Joe
 
Reply With Quote
 
Justin C
Guest
Posts: n/a
 
      08-10-2005
On 2005-08-10, Joe Smith <> wrote:
> Shabam wrote:
>>>> Please don't tell me to just tar/gz the /Users/ directory.
>>>> That will not work for this because it will be greater than 4GBs,
>>>
>>>So?

>>
>> You don't get it do you?

>
> Get what? Modern versions of tar can create archive files of
> greater than 2 or 4 gigabytes.


Maybe the OP has a DAT drive that doesn't support tapes bigger than
2/4GB?

Justin.

--
Justin C, by the sea.
 
Reply With Quote
 
sunjingwei
Guest
Posts: n/a
 
      08-23-2005
good
how do i know that ?
and this is a test..

--
?????????
?!


?????????????????
??????????????
???????????????
"Joe Smith" <> ???? news:CrOdneBuO7hEPGTfRVn-...
> Shabam wrote:
> >>> Please don't tell me to just tar/gz the /Users/ directory.
> >>> That will not work for this because it will be greater than 4GBs,
> >>
> >>So?

> >
> > You don't get it do you?

>
> Get what? Modern versions of tar can create archive files of
> greater than 2 or 4 gigabytes.
>
> linux% ls -l 5gigabyte.zip
> -rw-r--r-- 1 jms jms 5751592946 May 3 19:37 5gigabyte.zip
> linux% tar cf 5gb.tar 2005-03-01.zip
> linux% ls -l 5gb.tar
> -rw-r--r-- 1 jms jms 5751603200 Aug 9 22:30 5gb.tar
>
> So why do you say 4GB wont work?
>
> -Joe



 
Reply With Quote
 
Tim X
Guest
Posts: n/a
 
      09-25-2005
"Shabam" <> writes:

> I have a command script that backs up a user account. This involves moving
> files from different directories into an archive.
>
> Now, I need that script to back up all user accounts on the system, by going
> through the directory structure and running the backup script on each one.
> Can someone show me how this can be done? I'm not a perl programmer and
> have only dabbled a bit in it.
>
> My directory structure is like this:
>
> /Users/0/
> /Users/1/
> /Users/2/
> /Users/3/
> ... so on...
>
> User account names reside in those folders, so user jason would be in
> "Users/j/jason".
>
> Please don't tell me to just tar/gz the /Users/ directory. That will not
> work for this because it will be greater than 4GBs, and it won't allow me to
> restore accounts individually.
>


Firstly, if your not a perl programmer, why do you plan to use perl
for this task? This could easily be done with just a bash script.

Secondly, your statement about not being able to extract individual
account data from a single tar file is incorrect. You can extract
individual files or groups of files from a tar archive.

The basic building blocks for your script are two loops. The outer
loop goes through the outer list of directories and for each of those,
the inner loop goes through the user accounts in each directory and
processes them in whatever way you want.

The perl functions you probably want are opendir and readdir. Try
perldoc -f readdir, but to be honest, if your not a perl programmer,
save yourself time and just use bash (unless you want to learn perl).

Tim



--
Tim Cross
The e-mail address on this message is FALSE (obviously!). My real e-mail is
to a company in Australia called rapttech and my login is tcross - if you
really need to send mail, you should be able to work it out!
 
Reply With Quote
 
 
 
Reply

Thread Tools

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 Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
System.IO.Directory.GetDirectories() and System.IO.Directory.GetFiles() are not returning the specified directory Nathan Sokalski ASP .Net 2 09-06-2007 03:58 PM
How do you get feed discovery to work? I go to web pages I know has feeds, but the feed discovery button is disabled. Help! Tim Bryant Computer Support 1 02-13-2007 05:01 AM
Asking for directory listing on AP 350 flash: atcat Cisco 2 04-30-2005 08:27 AM
Directory listing Todd Lu ASP .Net 2 08-31-2004 03:26 PM
Directory Listing JD Perl 0 08-23-2003 11:53 PM



Advertisments
 



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57