Programmieren - alles kontrollieren 4.940 Themen, 20.676 Beiträge

Outlook-Datei per PHP Script kopieren sichern

uspc / 23 Antworten / Baumansicht Nickles

Hallo zusammen, auf meinem Windows 7 mit Outlook 2007 möchte ich die outlook.ost als Sicherung per PHP irgendwohin kopieren. Bei mir läuft permanent ein XAMMP mit einer anderen Anwendung. Da bietet es sich ja eigentlich diese kleine Kopierfunktion an. Aber das funktioniert nicht:

$zeit=date('Y-m-d-G-i-s');
  $quelle = "C:\Benutzer\Tanja\AppData\Local\Microsoft\Outlook\outlook.ost";
  $ziel = "C:/tmp/outlook.ost.$zeit";

if (copy($quelle ,$ziel)) {
 echo"<li> kopiert! ";
}

Ich hab schon in der Zeile $quelle mögliche probiert, es geht nicht. Hat jemand eine Idee?
Ist der Pfad so korrekt? Die genannte Datei ist vorhanden.
Danke! uspc

bei Antwort benachrichtigen
the_mic uspc „Outlook-Datei per PHP Script kopieren sichern“
Optionen

Was genau funktioniert nicht? Fehlermeldung?
evtl Backslash escapen? C:\\Benutzer\\...

Lies dir mal die Diskussion in http://www.php.net/manual/en/function.copy.php durch, dort gibt es jede Menge zusätzliche Ideen.

cat /dev/brain > /dev/null
bei Antwort benachrichtigen
uspc the_mic „Was genau funktioniert nicht? Fehlermeldung? evtl Backslash ...“
Optionen

Hallo, eine Fehlermeldung bekomme ich nicht. Interesant ist, das es funktioniert, wenn ich einen anderen Pfad nutze. Also die Zeile
$quelle = "C:\Benutzer\Tanja\AppData\Local\Microsoft\Outlook\outlook.ost";
ändere in
$quelle = "C:/tmp/testdatei.txt";

Ich vermute da was in den Pfaden, oder Rechteprobleme. Weil die Datei eigentlich im versteckten Ordner liegt...
Die Slash habe ich schon in Backslashs usw. probiert :(
Vielen dank schon mal. uspc

bei Antwort benachrichtigen
the_mic uspc „Hallo, eine Fehlermeldung bekomme ich nicht. Interesant ist, ...“
Optionen

Hast du schon versucht, statt Backslash Slash zu verwenden oder den Backslash mit einem zweiten Backslash zu escapen? Hast du mal einfache Anführungszeichen verwendet?
Denn: In doppelten Anführungszeichen escaped ein einfacher Backslash das folgende Zeichen! Siehe: http://php.net/manual/en/regexp.reference.escape.php

cat /dev/brain > /dev/null
bei Antwort benachrichtigen
uspc the_mic „Hast du schon versucht, statt Backslash Slash zu verwenden ...“
Optionen

2. Backslash  Getestet: geht nicht :(
Gruss uspc

bei Antwort benachrichtigen
uspc the_mic „Hast du schon versucht, statt Backslash Slash zu verwenden ...“
Optionen

Ich habs!!!
So gehts:
$quelle = "C:/Users/Tanja/AppData/Local/Microsoft/Outlook/outlook.ost";

Statt Benutzer muss man Users einsetzen, obwohl das hochmoderne Microsoft-OS den Pfad mit Benutzer anzeigt. Dachte ich mir, wollte schon mit Onkel Knoppix hochfahren und mir den wirklichen Datenpfad anschauen, irgendwie hatte ich das Problem schon mal.... Das Windows schwindelt schon am Bildschirm. Grausam, aber was solls.
Trotzdem vielen Dank!
Gruss uspc

bei Antwort benachrichtigen
mi~we uspc „Ich habs!!! So gehts: $quelle = ...“
Optionen
Das Windows schwindelt schon am Bildschirm.
Das hat schon viele verwirrt. Das ist eben die eingedeutschte Benutzeroberfläche des Windows Explorer. MS will da wohl nur denen entgegen kommen, die mit Englisch auf Kriegsfuß stehen und die fordern: Windows soll mit mir in meiner Muttersprache reden! Ebenso wird dir im Explorer etwa "C:\program files" als "C:\Programme" angezeigt. Wie man's macht, man macht's verkehrt.Zwinkernd
"Es wäre dumm, sich über die Welt zu ärgern. Sie kümmert sich nicht darum." (Marc Aurel)
bei Antwort benachrichtigen
uspc the_mic „Was genau funktioniert nicht? Fehlermeldung? evtl Backslash ...“
Optionen

Nachtrag:
Hier mal eine Fehlermeldung:
Warning: copy(C:\Benutzer\Tanja\AppData\Local\Microsoft\Outlook\outlook.ost): failed to open stream: No such file or directory in C:\xampp\htdocs\...\pstsichern.php on line 17
Zeile 17:
if (copy($quelle ,$ziel)) {
Gruss uspc

bei Antwort benachrichtigen
Borlander uspc „Outlook-Datei per PHP Script kopieren sichern“
Optionen

Also ich würde das einfach mit einer Batch-Datei machen. Dann läuft es auch ohne irgendwelchen Webserver ;-)

bei Antwort benachrichtigen
uspc Borlander „Also ich würde das einfach mit einer Batch-Datei machen. ...“
Optionen

Hallo, ja das ist auch eine sehr gute Idee. Nur hab ich das jetzt weiter ausgebaut: Es werden bis zu 5 Sicherungen gespeichert, kommt die 6te, wird die älteste gelöscht. Es bleiben also immer 5 im Backup-Ordner. Das ganze hab ich komplett per PHP und einer kleinen MySQL-Tabelle geschrieben. Das würde ich mit einer Batch nicht hinbekommen. Und wie gesagt, unsere Hauptanwendung läuft permanent per PHP und MySQL, da hat es sich quasi angeboten :)
Danke und viele Grüsse, uspc

bei Antwort benachrichtigen
Borlander uspc „Hallo, ja das ist auch eine sehr gute Idee. Nur hab ich das ...“
Optionen
Es werden bis zu 5 Sicherungen gespeichert, kommt die 6te, wird die älteste gelöscht.

Das ließe sich durchaus auch noch mit einer Batch-Datei realisieren ;-)

per PHP und einer kleinen MySQL-Tabelle

Wozu brauchst Da da noch eine Datenbank?

Gruß
Borlander

bei Antwort benachrichtigen
uspc Borlander „Das ließe sich durchaus auch noch mit einer Batch-Datei ...“
Optionen

Hallo Borlander, die Datei des Backups setzt sich aus dem Dateinamen und einem Zeitstempel zusammen, zB. Outlook.ost.2013-02-22-17-46. Der gleiche Name steht in einer DB. Beim 1. PC Start am Tag schaut das Script in der DB nach, ob schon eine Sicherung existiert. Wenn nicht, legt es automatische eine an. Die DB hat also nur den Dateinamen gespeichert und sucht diesen im Ordner. Außerdem wird beim 6. Backup beim Neuanlegen automatisch der Dateiname und der DB-Eintrag gelöscht. Ich glaube, ich hab das nur zu kompliziert erklärt, es ist aber ganz einfach. Gruss uspc

bei Antwort benachrichtigen
xafford uspc „Outlook-Datei per PHP Script kopieren sichern“
Optionen
Hallo zusammen, auf meinem Windows 7 mit Outlook 2007 möchte ich die outlook.ost als Sicherung per PHP irgendwohin kopieren.

Äh... warum das? Was spricht dagegen das per Backup-Programm automatisiert zu machen? Dann funktioniert das auch richtig.

Warum das mit deinem XAMPP und PHP ziemlich sicher nicht funktionieren dürfte und warum das eine schlechte Idee ist:

  • PHP nutzt zum Kopieren keine Schattenkopien, es kann also die Datei nicht kopieren, wenn sie geöffnet ist, also z.B. wenn Outlook läuft.
  • Dein XAMPP läuft wahrscheinlich unter einem anderen Account der keinen Zugriff auf den Quellordner hat.
  • PHP prüft nicht die Integrität der kopierten Datei, es kann also sein dass Du Datensalat kopierst wenn z.B. das Skript oder der Server Schluckauf hat.
  • Du bekommst keine Erfolgs- oder Fehlermeldungen die Dir sagen ob das Kopieren funktioniert hat.

Das dürften bei weitem nicht alle Hinterungsgründe gewesen sein, aber mal das was mir spontan einfiel. Es gibt auch jede Menge wirklich brauchbare Backup-Software als Freeware wenn man nicht die integrierte Backup-Funktion von Windows nutzen will.
Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
uspc xafford „Äh... warum das? Was spricht dagegen das per ...“
Optionen

Hallo xafford,komisch, mit PHP funktioniert das aber bei mir vom feinsten... Das mit den Schattenkopien ist mir neu, ich habe alles Tests bei laufendem Outlook gemacht. Aber ich teste das nochmal ganz genau. Xampp läuft auf dem selben Account. Einen Schluckauf beim Kopieren kann es immer geben, deshalb auch die 5 Sicherungen (pro Tag). Diese werden dann wiederum mit einem externen Programm auf einem Server kopiert. Ich bekomme schon eine Meldung über den erfolgreichen Vorgang, sei es auch nur seitens PHP. if(!copy($quelle, $ziel) usw. Freeware gibt es schon dafür, wenn auch recht wenige, aber die Chefsekretärin, dioe das nutzt, will ich nicht mit Werbebannern zuballern. Und die integrierte Backupfunktion von Windows ist besser? Seit wann das? Na das schau ich mir an... Kann das auch mehrere Backups (Grossvater, Vater, Sohn) und so? Wie gesagt, hier handelt es sich um eine einfache Zusatz-Sicherung per Klick. In einem anderen Projekt sichere ich so seit 3 Jahren die MySQL-Datenbank und hatte noch nie Probleme damit. Beste Grüsse uspc

bei Antwort benachrichtigen
Borlander uspc „Hallo xafford,komisch, mit PHP funktioniert das aber bei mir ...“
Optionen
In einem anderen Projekt sichere ich so seit 3 Jahren die MySQL-Datenbank und hatte noch nie Probleme damit.
Du sicherst MySQL-Datenbanken bei laufendem MySQL-Server als Dateikopie?
bei Antwort benachrichtigen
uspc Borlander „Du sicherst MySQL-Datenbanken bei laufendem MySQL-Server ...“
Optionen

Ja, per mysqldump, was spricht dagegen? Xampp läuft durch, morgens beim ersten Login wird das erste Backup abgelegt, Größe der ZIP-SQL ca. 3MB. Zugriff auf die MySQL-DB haben meist 2-4 Leute. Wie sonst?

bei Antwort benachrichtigen
Borlander uspc „Ja, per mysqldump, was spricht dagegen? Xampp läuft durch, ...“
Optionen

Mit mysqldump ist keine Dateikopie…

bei Antwort benachrichtigen
uspc Borlander „Mit mysqldump ist keine Dateikopie“
Optionen

Sorry, ich hab mich falsch ausgedrückt. Also erst ein mysqldump durchführen und diese Datei per Script als Backup kopieren.

bei Antwort benachrichtigen
Borlander uspc „Sorry, ich hab mich falsch ausgedrückt. Also erst ein ...“
Optionen

Mysqldump ist für Szenarien wie bei Dir tendenziell auch eine praktikable Lösung, jedoch risikobehaftet wenn zeitgleich Schreibzugriffe auf die Datenbank erfolgen…

bei Antwort benachrichtigen
the_mic Borlander „Mysqldump ist für Szenarien wie bei Dir tendenziell auch ...“
Optionen

mysqldump lockt die Datenbank. Der Dump ist also konsistent. Es können nur zeitgleich keine Schreibzugriffe stattfinden, d.h. Anwendungen sind ggf blockiert.

cat /dev/brain > /dev/null
bei Antwort benachrichtigen
Borlander the_mic „mysqldump lockt die Datenbank. Der Dump ist also konsistent. ...“
Optionen

Dafür müsste man aber wohl nach wie vor entsprechende Parameter angeben. Und eine komplette Sicherung in einer Transaktion wird nur bei einigen Tabellentypen unterstützt. Selbst das deckt aber scheinbar noch nicht alles ab: http://www.mysqlperformanceblog.com/2012/03/23/best-kept-mysqldump-secret/

Gruß
bor

bei Antwort benachrichtigen
xafford uspc „Hallo xafford,komisch, mit PHP funktioniert das aber bei mir ...“
Optionen
Das mit den Schattenkopien ist mir neu, ich habe alles Tests bei laufendem Outlook gemacht.

Hast Du schon mal eine der Backup-Dateien wieder zurück gespielt? Ich will nicht generell bezweifeln, dass das funktioniert, aber ich will stark bezweifeln, dass es zuverlässig funktioniert, da die OST (oder PST) Dateien eine Art Datenbank sind und Datenbankdateien oftmals nicht konsistent sind so lange die darauf zugreifende Anwendung läuft.

Xampp läuft auf dem selben Account.
Gut, dann ist der Teil mit den Dateirechten geklärt, auch wenn es aus anderen Gründen eher keine so gute Idee ist einen Webserver mit einem echten Nutzeraccount laufen zu lassen. Lokal ist das aber wohl verschmerzbar.
Ich bekomme schon eine Meldung über den erfolgreichen Vorgang, sei es auch nur seitens PHP. if(!copy($quelle, $ziel)
Das ist nicht das, was ich meinte. Das mit der Meldung bezog sich auf die Dateiintegrität. Ein Backup-Programm kann nach dem Kopieren prüfen, ob das Backup richtig geschrieben wurde.
Freeware gibt es schon dafür, wenn auch recht wenige, aber die Chefsekretärin, dioe das nutzt, will ich nicht mit Werbebannern zuballern.
Es gibt auch genügen Programme, die ganz dezent im Hintergrund und ohne Werbebanner arbeiten:
Und die integrierte Backupfunktion von Windows ist besser? Seit wann das?
Eigentlich schon immer besser als Dateien manuell zu kopieren. Es läuft im Hintergrund zeitgesteuert als Dienst, nutzt Schattenkopien, prüft die Integrität des Backups, nutzt ein Systemkonto sodass Zugriffsrechte selten in die Quere kommen usw...
Kann das auch mehrere Backups (Grossvater, Vater, Sohn) und so?
Seit Vista leider nicht mehr meines Wissens.

PS: Wenn es schon einfach über einen Klick gehen soll, warum dann nicht wie schon anderweitig vorgeschlagen einfach per Batch und / oder Robocopy?

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
uspc xafford „Hast Du schon mal eine der Backup-Dateien wieder zurück ...“
Optionen

Hallo xafford, vielen Dank für diese interessanten Infos.

PS: Wenn es schon einfach über einen Klick gehen soll, warum dann nicht wie schon anderweitig vorgeschlagen einfach per Batch und / oder Robocopy?
Hast du ein paar gute Links zum "Einarbeiten" in Batchprogrammierung/Robocopy? Letzteres hab ich noch nie gehört. Man nimmt eben immer das, was man am besten kann oder am häufigsten nutzt.
Danke und Gruss uspc
bei Antwort benachrichtigen
xafford uspc „Hallo xafford, vielen Dank für diese interessanten Infos. ...“
Optionen

Robocopy ist ein Programm von Microsoft zum Kopieren von Dateien über die Kommandozeile. Der Vorteil von Robocopy ist, dass es nicht abbricht bei Kopierfehlern wenn man viele Dateien kopiert und dass es auch eine aussagefähige Logdatei schreibt. Zudem hat es mehr Optionen als die "regulären" Kopierprogramme unter Windows. Wenn Robocopy auf dem System nicht installiert ist, dann muss man es über das Resource-Kit (findet man auf der Seite von MS) nachinstallieren.

Es gibt auch ein (oder mehrere) grafische Frontends für Robocopy die den Umgang damit erleichtern und, so weit mir bekannt, auch gleich eine Batch erstellen können die man dann über den Taskplaner automatisiert ausführen lassen kann. Suche mal nach Robocopy GUI, dann solltest Du fündig werden.

Gruß

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen