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
Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge
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.
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
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
2. Backslash Getestet: geht nicht :(
Gruss uspc
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
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.
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
Also ich würde das einfach mit einer Batch-Datei machen. Dann läuft es auch ohne irgendwelchen Webserver ;-)
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
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
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
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.
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
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?
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?
Mit mysqldump ist keine Dateikopie…
Sorry, ich hab mich falsch ausgedrückt. Also erst ein mysqldump durchführen und diese Datei per Script als Backup kopieren.
Mysqldump ist für Szenarien wie bei Dir tendenziell auch eine praktikable Lösung, jedoch risikobehaftet wenn zeitgleich Schreibzugriffe auf die Datenbank erfolgen…
mysqldump lockt die Datenbank. Der Dump ist also konsistent. Es können nur zeitgleich keine Schreibzugriffe stattfinden, d.h. Anwendungen sind ggf blockiert.
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
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:
- Speziell für PST-Dateien: http://backupmymail.codeplex.com/
- Auch für Mails: http://www.mailstore.com/de/mailstore-home.aspx
- Generelle Backups: http://www.cobiansoft.com/index.htm
- Paragon-Backup: http://www.paragon-software.com/de/home/br-free/
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?
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
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ß