Was ist der richtige Weg, um eine ESRI-Datei-Geodatabase zu sichern, die auf ArcGIS Server veröffentlicht wird?


11

Ich habe eine ESRI-Datei-Geodatabase (v10), die auf einem Arcgis-Server-Map-Service veröffentlicht wird. Wenn der Dienst ausgeführt wird, ist die fGDB gesperrt. Muss ich den Dienst beenden, um ein sauberes Backup zu erhalten? Oder gibt es eine Möglichkeit, eine Sicherung über ein Arcpy-Skript oder über den Katalog durchzuführen? Ich verwende derzeit Windows Robocopy, um die fGDB auf ein Sicherungslaufwerk zu übertragen. Hier ist die Ausgabe mit den gesperrten Dateien:

 New File           0 Bikepaths.CFP0026.4968.5140.sr.lock
 New File           0 BuildingFootprints.CFP0026.4968.5140.sr.lock

etc, etc ...

Antworten:


4

Jeder Server sollte ein Schattenlaufwerk haben. Sie können die ‚Schatten - Laufwerk‘ verwenden , um zu komprimieren die File- und das wird die .lock Dateien und Nachbestellung die Datei auf die effizienteste Art und Weise entfernen. Dann können Sie diese Datei sichern. Hier sind ein paar gute Ausgangspunkte:

http://help.arcgis.com/de/arcgisdesktop/10.0/help/index.html#/File_geodatabases_compressing_vs_compacting/003n0000007r000000/

Hinweis: Das Schattenlaufwerk hat einen anderen Namen für die Datenträgerspiegelung

http://en.wikipedia.org/wiki/Disk_mirroring


Ah, ich habe immer angenommen, dass die Verdichtung für SD-Geodatabases gedacht ist. Vielen Dank!
Mogollon22

Ich verwalte mehrere Server und keiner von ihnen hat Schatten- oder gespiegelte Laufwerke, obwohl sie redundante Festplatten (RAID5, Drobo) haben und den Ausfall eines oder mehrerer Laufwerke ohne Datenverlust überleben können. Abgesehen von diesem Einwand kopiere ich die fgdb's mit xcopy(oder xxcopy ), überspringe die Fehler und komprimiere dann das Ergebnis. Dies ist nicht die beste Lösung, da eine aufgrund einer Bearbeitungssitzung gesperrte Feature-Class beschädigt werden kann. Dies unterscheidet sich jedoch nicht von einem Schatten- / Spiegellaufwerk.
Matt Wilkie

2

Wir haben mehrere produktionsstarke Produktionswebanwendungen, die auf REA im Backend ausgeführt werden. Die FGDBs werden ausgelöscht und jede Nacht mit neuen Daten neu erstellt. Wir haben eine .NET-Konsolen-App, die ich geschrieben habe und die auf AGSSOM basiert und die Dienste stoppt, während der Aktualisierungsprozess ausgeführt wird. Schauen Sie sich AGSSOM an, es ist ziemlich schick. Hier sind einige der C #, die ich verwende, um ein Backup der aktuellen REA zu erstellen, bevor ich sie wegblase:

// Only archive it FGDB already exists, if this is first run, then nothing to archive
            if (Directory.Exists(String.Concat(c.fgdbDir, @"\", kvp.Key[0], ".gdb")))
            {
                c.msg = String.Concat(Environment.NewLine, "Archiving data for ", kvp.Key[0], " - ",
                                      DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss tt"));
                Messaging.Log(c.msg, c.lw);
                // Create the FGDB folder in archive dir if not already there
                if (!Directory.Exists(String.Concat(c.fgdbArchiveDir, @"\", kvp.Key[0], ".gdb")))
                {
                    Directory.CreateDirectory(String.Concat(c.fgdbArchiveDir, @"\", kvp.Key[0], ".gdb"));
                    // Now copy from clips to archive
                    foreach (FileInfo fi in source.GetFiles())
                    {
                        fi.CopyTo(System.IO.Path.Combine(target.ToString(), fi.Name), true);
                    }
                }
            }

Es werden nur Directory.CreateDirectory und FileInfo.CopyTo verwendet, um die FGDB zu kopieren - Windows sieht die FGDB nur als einen anderen Ordner. Funktioniert wie ein Champion. Nach Abschluss des Aktualisierungsvorgangs starten wir die Dienste erneut mit der AGSSOM-basierten Anwendung.


Das war sehr wertvoll!
Mogollon22
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.