Feed a directory listing to a script

Discussion in 'Perl Misc' started by Shabam, Aug 8, 2005.

  1. Shabam

    Shabam Guest

    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.
     
    Shabam, Aug 8, 2005
    #1
    1. Advertising

  2. Shabam

    Anno Siegel Guest

    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.
     
    Anno Siegel, Aug 8, 2005
    #2
    1. Advertising

  3. Shabam

    Joe Smith Guest

    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)=getpwent){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.
     
    Joe Smith, Aug 8, 2005
    #3
  4. Shabam

    Shabam Guest

    > > 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?
     
    Shabam, Aug 9, 2005
    #4
  5. Shabam

    Anno Siegel Guest

    [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.
     
    Anno Siegel, Aug 9, 2005
    #5
  6. Shabam

    Matthew King Guest

    "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
     
    Matthew King, Aug 9, 2005
    #6
  7. Shabam

    Joe Smith Guest

    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
     
    Joe Smith, Aug 10, 2005
    #7
  8. Shabam

    Justin C Guest

    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.
     
    Justin C, Aug 10, 2005
    #8
  9. Shabam

    sunjingwei Guest

    good
    how do i know that ?
    and this is a test..

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


    ?????????????????
    ??????????????
    ???????????????
    "Joe Smith" <> ???? news:...
    > 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
     
    sunjingwei, Aug 23, 2005
    #9
  10. Shabam

    Tim X Guest

    "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!
     
    Tim X, Sep 25, 2005
    #10
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. JD

    Directory Listing

    JD, Aug 24, 2003, in forum: Perl
    Replies:
    0
    Views:
    1,134
  2. Todd Lu

    Directory listing

    Todd Lu, Aug 31, 2004, in forum: ASP .Net
    Replies:
    2
    Views:
    462
    Todd Lu
    Aug 31, 2004
  3. =?Utf-8?B?S3VydCBTY2hyb2VkZXI=?=

    directory listing details

    =?Utf-8?B?S3VydCBTY2hyb2VkZXI=?=, May 24, 2005, in forum: ASP .Net
    Replies:
    2
    Views:
    407
    =?Utf-8?B?S3VydCBTY2hyb2VkZXI=?=
    May 24, 2005
  4. Tim_Mac
    Replies:
    2
    Views:
    368
    Tim_Mac
    Dec 15, 2005
  5. Light
    Replies:
    1
    Views:
    947
    Eliyahu Goldin
    Mar 22, 2006
Loading...

Share This Page