Dear Fellow monks

I'm writing a small script to move a lot of data from a file server to another, and I plan to use two piped tars. I'm going to make the script run something like

( cd $sourcefs && tar cpsf - . ) | ( cd $destfs && tar xvpsf - )

The script will then continue and do some chown/chgrp here and there.

Even if I won't have to worry about this script's security, a question arose in my head

As we know, it's a good practice, when you have to chdir to a directory, to leave out any preliminary test on the existence of the directory before chdir; instead, it's better to chdir directly and check the return value to see if it succeeded; this helps to avoid race conditions.

But when you need to chdir and read data in one directory and pipe it to another process, that should chdir, read your data and write it back down to the disk, what would you do to stay on the safe side?

Thanks in advance for your wisdom

Ciao!
--bronto

PS: I know the -C option of GNU tar. Don't worry too much about tar, the question is general and not restricted to my script

# Another Perl edition of a song:
# The End, by The Beatles
END {
  $you->take($love) eq $you->made($love) ;
}


In reply to chdir and security by bronto

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.