views:

131

answers:

1

I have a function which gives me the complete file structure upto n-level,

function getDirectory($path = '.', $ignore = '') {
    $dirTree = array ();
    $dirTreeTemp = array ();
    $ignore[] = '.';
    $ignore[] = '..';

    $dh = @opendir($path);

    while (false !== ($file = readdir($dh))) {

        if (!in_array($file, $ignore)) {
            if (!is_dir("$path/$file")) {
//display of file and directory name with their modification time

                            $stat = stat("$path/$file");
                $statdir = stat("$path");


                   $dirTree["$path"][] = $file. " === ". 
                     date('Y-m-d H:i:s', $stat['mtime']) . " Directory == 
                   ".$path."===". date('Y-m-d H:i:s', $statdir['mtime']) ;

            } else {

                $dirTreeTemp = getDirectory("$path/$file", $ignore);
                if (is_array($dirTreeTemp))$dirTree = 
                               array_merge($dirTree, $dirTreeTemp);
            }
        }
    }
    closedir($dh);

    return $dirTree;
}

$ignore = array('.htaccess', 'error_log', 'cgi-bin', 'php.ini', '.ftpquota');
//function call
$dirTree = getDirectory('.', $ignore);
//file structure array print
print_r($dirTree);

Now here my requirement is , I have two sites

  • The Development/Test Site- where i do testing of all the changes
  • The Production Site- where I finally post all the changes as per test in development site

Now, for example, I have tested an image upload in the Development/test site, and i found it appropriate to publish on Production site then i will completely transfer the Development/Test DB detail to Production DB, but now I want to compare the files structure as well to transfer the corresponding image file to Production folder.

There could be the situation when I update the image by editing the image and upload it with same name, now in this case the image file would be already present there, which will restrict the use of "file_exist" logic, so for these type of situations....HOW CAN I COMPARE THE TWO FILE STRUCTURE TO GET THE SYNCHRONIZATION DONE AS PER REQUIREMENT??

EDITED

the requirement has to be a script, which I am going to need as a joomla component functionality.. please reply as per this.

+1  A: 

I would suggest using rsync for this.

Bryan Ross
Please Elaborate.. also, I think rsync is the Unix/linux command, can u just suggest me any crosplatform solution?
OM The Eternity
No need to reinvent the wheel here by writing a PHP solution for a function that already exists on the unix command line. If you happen to be in a Windows environment you can use cygwin for this - rsync is excellent for this!Specific flags you'll want to look at:-r (recursive)-v (verbose)-n (dry run, will only show differences without actually copying any)-z (use compression on transfer)
AvatarKava
Guys pls elaborate the solutions u r providing.. I am unaware of these commands... I am new Command Interface for these Commands :)
OM The Eternity
http://kevin.vanzonneveld.net/techblog/article/synchronize_files_with_rsync/ - there's a brief tutorial on rsync. If you're on Windows, just google 'cygwin' and you can install that to a windows box to run many popular unix commands from a pseudo command line.
AvatarKava
I am building a Joomla component which has the above functionality.. so in this case do i have to always install this in every machine where i am installing the component?
OM The Eternity
What if I dont have two different servers for this, I am using same machine for this....
OM The Eternity