Windows vs. Netware

Backups sind eine feine Sache – wenn sie denn mal funktionieren würden. Durch einen Bug stand ich vor dem Problem, dass einige meiner zurückgesicherten Dateien als Modifikationsdatum 01.01.1985 hatten. Dumm, wenn man gerne nach diesem Datum sortiert. Ein Restore nach Windows brachte das richtige Datum mit – Keiner hatte so wirklich eine Idee was man so machen könnte, aber was wäre ich ohne PHP? OK, das Script ist wirklich Primitiv, aber es hat seinen Zweck erfüllt…

Kurzinfo: /mnt/fatime/src/ war ein SMBFS-Mount auf Windows, /mnt/fatime/dst/war der Netware-Server über ncpfs. DasScript geht von 154 Zeichen pro Zeile aus, sonst wird die Ausgabe verzogen.

<?PHP
/**
* Windows 2 Netware File Modification Time Copy
* or to something else…
* @author Florian Knodt <f.knodt@yotaweb.de>
*/

//********** CONFIGURATION **********//

define(„SRC_MNT“, „/mnt/fatime/src/“); //Where are the Files with correct dates?
define(„DST_MNT“, „/mnt/fatime/dst/“); //Where to?
define(„WRONGDATE“, 1234567890); //Unix-Timestamp for the false date

//********** BEGIN CODE **********//

if (!is_dir(SRC_MNT)) die(„Source directory not found“);
if (!is_dir(DST_MNT)) die(„Destination directory not found“);

//INIT
$fail=0;
filewalker(SRC_MNT);

echo „—-DONE—-\n“;
echo „Es traten bei „.$fail.“ Dateien Fehler auf\n“;
if($fail>0) {
foreach($failed as $err) {
echo $err.“\n“;
}
}

function filewalker($dir) {
$dh=opendir($dir);
while (($file = readdir($dh)) !== false) {
if($file != „.“ && $file != „..“) {
if(is_dir($dir.$file)) {
filewalker($dir.$file.“/“);
}else{
$fullfile=DST_MNT.substr($dir, strlen(DST_MNT)).$file;
$mdate=filemtime($dir.$file);
if(!file_exists($fullfile)) {
$mod=“ „;
$ddate=“FILE DELETED „;
}else{
$ddate=filemtime(DST_MNT.substr($dir, strlen(DST_MNT)).$file);
if($ddate == WRONGDATE) {
$mod = „*“;
if(!touch($fullfile, $mdate)) {
$failed[]=$fullfile;
$fail++;
}
}else{
$mod = “ „;
}
}
$termlen=154;
echo „filename: „.$file.@str_repeat(“ „, 154/3-strlen($file)).“| Modtime: „.strftime(„%d.%m.%Y %H:%M“, $mdate).“ | WTime: „.strftime(„%d.%m.%Y %H:%M“, $ddate).“ | „.$mod.“\n“;
}
}
}
}
?>

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert