Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

Replicating Directories,Files. Symbolic links, lstat(), file permissions.

Posted on 1998-09-10
2
Medium Priority
?
207 Views
Last Modified: 2010-03-05
null
0
Comment
Question by:theconripper
2 Comments
 
LVL 5

Accepted Solution

by:
b2pi earned 200 total points
ID: 1204819
Sometimes, it pays to remember that unix is a system of small
tools... (and remember, there are 3,756 ways to do anything)

1.) Make a list of files where -M b/$file < -M c/$file
2.) [Make sure that the directory /a/c exists]
3.) system("cd /a/b; tar cf - * | (cd /a/c; tar xfBp -)");
4.) [Make sure that the directories above are either absolute, or you
    KNOW where you are]
5.) Apply the "extra html" code to each of the files in /a/c where the
    file is in the list of files created in step 1.

Hmmmm, no lstat, no rmtree, so easy :)
0
 

Author Comment

by:theconripper
ID: 1204820
Thank you for the quick response. I found the answer to be very similar to the logic I am already trying to implement.. so it's not all that useful.  Another point I didn't mention.. maybe implied.. was that /b/ will constantly be changing... so intitially there will be a large copy/rip of files.. followed by hourly "updates."

Scenario 1 (implement b2pi's way):  I can make the file list for file on /b/ that are newer than /c/.  The  system("cd /a/b; tar cf - * | (cd /a/c; tar xfBp -)"); command seems to tar everthing in the /b/ directory but that's not what we want if we go this route.  We would somehow want to tar only the files found.. I'm not sure this command does this.  Also... say a directory on 'b' is no longer used... I would need to rmtree() on /c/ to remove this dir.   I assume the "system" command above (if modified for the filelist) would recreate permissions and symbolic links.. am I right?

Scenario 2 (my original way): Questions NOT answered. 1) How do I tell if one of the newer files to be copied from /b/ to /c/ is a compiled binary (in which case I don't want to rip it)?  2)What does the number for mode (returned by lstat()) mean/ translate into with repect to unix permissions ie. 644/755/etc?   I also implemented symbolic links below (could you look and see if there might be a case/logic I'm missing.. it seems to work).
if (-l $Bfile)  {
        my ($Bfilename) = readlink($Bfile);  #the link seems to be relativized
        symlink($Bilename,$Cfile);             #Cfile is same file with modified path ex./b/g/file /c/g/file
        print "symlink of $Bfile to $Bfilename\n";
    }

AGAIN, thank you for your time and help.
Robert Duffy
0

Featured Post

Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

On Microsoft Windows, if  when you click or type the name of a .pl file, you get an error "is not recognized as an internal or external command, operable program or batch file", then this means you do not have the .pl file extension associated with …
Email validation in proper way is  very important validation required in any web pages. This code is self explainable except that Regular Expression which I used for pattern matching. I originally published as a thread on my website : http://www…
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…
Six Sigma Control Plans

885 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question