{"id":221,"date":"2014-07-26T07:53:59","date_gmt":"2014-07-26T06:53:59","guid":{"rendered":"http:\/\/ipsview.brownson.at\/?p=221"},"modified":"2016-09-10T18:12:19","modified_gmt":"2016-09-10T17:12:19","slug":"zuruecksichern-von-view-backups","status":"publish","type":"post","link":"https:\/\/ipsview.brownson.at\/?p=221","title":{"rendered":"Zur\u00fccksichern von View Backups"},"content":{"rendered":"<p><span style=\"color: #ff0000;\">ACHTUNG: Mittlerweile ist dieses Skript auch als Modul verf\u00fcgbar<\/span> &#8211; siehe\u00a0<a href=\"http:\/\/ipsview.brownson.at\/?p=731\">Modul &#8211; Backup von Views<\/a><\/p>\n<p>Anbei ein Skript um im Backup Verzeichnis gesicherte Views wieder zur\u00fcckzusichern.<\/p>\n<p>Voraussetzung ist, dass das Skript <a title=\"Automatisches Backup von Views\" href=\"http:\/\/ipsview.brownson.at\/?p=214\">IPSView_Backup<\/a> aktiv ist und in definierten Zeitr\u00e4umen Backups von modifizierten Views anlegt.<\/p>\n<p>In diesem Restore Script spezifiziert man die ID der View und den Backup Suffix mit Datum und Uhrzeit. Erfolgt keine Angabe von Datum und Uhrzeit, dann werden alle vorhandenen Backups der View aufgelistet.<\/p>\n<p>Sollte eine View versehentlich gel\u00f6scht worden sein, steht zur Wiederherstellung ein <a title=\"Wiederherstellen von gel\u00f6schten Views\" href=\"http:\/\/ipsview.brownson.at\/?p=224\">eigenes Skript<\/a> zur Verf\u00fcgung.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"php\" data-enlighter-highlight=\"24-26\" data-enlighter-title=\"Restore Backup\">&lt;?\r\n\t\/**\r\n\t * @file          IPSView_RestoreBackup.php\r\n\t * @author        brownson\r\n\t * @version\r\n\t *   Version 1.0, 2014-07-23 brownson: Initiale Version&lt;br\/&gt;\r\n\t *\r\n\t * IPSView um ein gel\u00f6schtes Script aus dem Backup wiederherzustellen (\r\n\t * Voraussetzung: IPSView_Backup ist installiert)\r\n\t *\r\n\t * Konfiguration Einstellungen:\r\n\t *   * $directory - spezifiziert das Verzeichnis wo die Backups abgelegt werden\r\n\t *                  (relativ zum IP-Symcon Verzeichnis)\r\n\t *   * $viewID    - ID der View die aus einem Backup wiederhergestellt werden soll\r\n\t *   * $dateTime  - Datum und Uhrzeit des Backups, das wiederhergestellt werden soll.\r\n\t *                  Format: YYYYMMDD_hhmm\r\n\t *                  Erfolgt keine Eingabe von Datum und Uhrzeit, dann werden alle\r\n\t *                  verf\u00fcgbaren Backups aufgelistet und die Variable kann per \r\n\t *                  Copy&amp;Paste bef\u00fcllt werden.\r\n\t *\r\n\t *\/\r\n\r\n\t\/\/ Konfiguration\r\n\t$directory = &#039;backup\/ipsview\/&#039;;\r\n\t$viewID    = &#039;&#039;;\r\n\t$dateTime  = &#039;&#039;;\r\n\r\n\t\/\/ -------------------------------------------------------------------------\r\n\r\n\t\/\/ Konfiguration \u00fcberpr\u00fcfen\r\n\tif ($viewID == &#039;&#039;) {\r\n\t\techo &#039;Bitte geben Sie eine ViewID oder einen ViewNamen in der Konfiguration an.&#039;.PHP_EOL;\r\n\t\treturn;\t\r\n\t} else if ($viewID &lt; &#039;10000&#039; or $viewID &gt;= &#039;60000&#039;) {\r\n\t\tdie (&#039;Ung\u00fcltige ViewID &quot;&#039;.$viewID.&#039;&quot; spezifiziert (10000 &lt;= $viewID &lt;= 60000)&#039;);\r\n \t}\r\n\r\n\t\/\/ Backup Verzeichnis \u00fcberpr\u00fcfen\r\n\t$directory = IPS_GetKernelDir().$directory;\r\n\tif (!file_exists($directory)) {\r\n\t\tdie (&#039;Backup Verzeichnis konnte nicht gefunden werden&#039;);\r\n\t}\r\n\r\n\t\/\/ ViewID \u00fcberpr\u00fcfen\r\n\techo &#039;\u00dcberpr\u00fcfung von ViewID &quot;&#039;.$viewID.&#039;&quot;&#039;.PHP_EOL;\r\n\t$view = @IPS_GetMedia($viewID);\r\n\tif ($viewID===false) {\r\n\t\tdie (&#039;Eine View mit der ID &quot;&#039;.$viewID.&#039;&quot; konnte nicht gefunden werden&#039;);\r\n\t}\r\n\t\r\n\t\/\/ Auflistung aller Backup Dateien\r\n\tif ($dateTime==&#039;&#039;) {\r\n\t\techo &#039;Auflistung aller vorhandenen Backup Dateien: &#039;.PHP_EOL;\r\n\t\tShowAllBackupFilesForViewID ($directory, $viewID);\r\n\t\treturn;\r\n\t}\r\n\t\r\n\techo &#039;Starte Wiederherstellung von View mit ID &quot;&#039;.$viewID.&#039;&#039;.PHP_EOL;\r\n\r\n\t$backupFile = $directory.$viewID.&#039;__&#039;.$dateTime.&#039;.ipsView&#039;;\r\n\t$mediaFile  = IPS_GetKernelDir().&#039;media\/&#039;.$viewID.&#039;.ipsView&#039;;\r\n\t\r\n\tif (!file_exists($backupFile)) {\r\n\t\tdie (&#039;ACHTUNG: Die Backupdatei &quot;&#039;.$backupFile.&#039;&quot; konnte nicht gefunden werden&#039;);\r\n\t}\r\n\t\r\n\t\/\/ View Restore\r\n\techo &#039;Kopiere &#039;.$backupFile.&#039; auf &#039;.$mediaFile.PHP_EOL;\r\n\tcopy ($backupFile, $mediaFile);\r\n\r\n\techo &#039; &#039;.PHP_EOL;\r\n\techo &#039;=============================================================&#039;.PHP_EOL;\r\n\techo &#039;View wurde erfolgreich aus dem Backup wiederhergestellt&#039;.PHP_EOL;\r\n\techo &#039;=============================================================&#039;.PHP_EOL;\r\n\r\n\t\/\/ -------------------------------------------------------------------------\r\n\tfunction ShowAllBackupFilesForViewID ($directory, $viewID) {\r\n\t\tif (($handle=opendir($directory))===false) {\r\n\t\t\tdie (&#039;Error Opening Directory &#039;.$directory);\r\n\t\t}\r\n\t\twhile (($file = readdir($handle))!==false) {\r\n\t\t\t$fileID        = substr($file, 0, 5);\r\n\t\t\tif ($fileID &gt;= &#039;10000&#039; and $fileID &lt;= &#039;60000&#039; and $fileID==$viewID) {\r\n\t\t\t   echo &#039;Backup Datei gefunden: &#039;.$file.PHP_EOL;\r\n\t\t\t}\r\n\t\t}\r\n\t\tclosedir($handle);\r\n\t}\r\n\r\n\t\/\/ -------------------------------------------------------------------------\r\n?&gt;\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>ACHTUNG: Mittlerweile ist dieses Skript auch als Modul verf\u00fcgbar &#8211;  [&#8230;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[51,7,4],"class_list":["post-221","post","type-post","status-publish","format-standard","hentry","category-backup","tag-backup","tag-skript","tag-view"],"_links":{"self":[{"href":"https:\/\/ipsview.brownson.at\/index.php?rest_route=\/wp\/v2\/posts\/221","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ipsview.brownson.at\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ipsview.brownson.at\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ipsview.brownson.at\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ipsview.brownson.at\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=221"}],"version-history":[{"count":6,"href":"https:\/\/ipsview.brownson.at\/index.php?rest_route=\/wp\/v2\/posts\/221\/revisions"}],"predecessor-version":[{"id":755,"href":"https:\/\/ipsview.brownson.at\/index.php?rest_route=\/wp\/v2\/posts\/221\/revisions\/755"}],"wp:attachment":[{"href":"https:\/\/ipsview.brownson.at\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=221"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ipsview.brownson.at\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=221"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ipsview.brownson.at\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=221"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}