Qual é a maneira correta de fazer backup de um geodatabase de arquivo ESRI publicado no ArcGIS Server?

11

Eu tenho um geodatabase de arquivo ESRI (v10) publicado em um serviço de mapa do servidor arcgis. Quando o serviço está sendo executado, o fGDB está bloqueado. Preciso interromper o serviço para obter um backup limpo? Ou existe uma maneira de executar um backup através de um script arcpy ou através do Catalog? Atualmente, estou usando o robocopy do Windows para transferir o fGDB para uma unidade de backup. Aqui está a saída mostrando os arquivos bloqueados:

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

etc etc...

mogollon22
fonte

Respostas:

4

Qualquer servidor deve ter uma unidade de sombra. Você pode usar a 'unidade de sombra' para compactar o geodatabase do arquivo e isso removerá os arquivos .lock e reordenará o arquivo da maneira mais eficiente. Então você pode fazer backup desse arquivo. Aqui estão alguns bons pontos de partida:

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

Nota: A unidade sombra tem outro nome de espelhamento de disco

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

Mapperz
fonte
Ah, eu sempre assumi que a compactação era para geodatabases sde. Obrigado!
precisa
Eu gerencio vários servidores e nenhum deles possui unidades espelhadas ou espelhadas, embora possua discos redundantes (RAID5, Drobo) e possa sobreviver à falha de uma ou mais unidades sem perda de dados. De qualquer forma, excluindo essa objeção, copio os fgdb com xcopy(ou xxcopy ), pulando as falhas e compactando o resultado. Não é a melhor solução, pois uma classe de recurso bloqueada por causa de uma sessão de edição pode ser corrompida, mas isso não é diferente de uma unidade de sombra / espelho.
31511 Matthilkie
2

Temos vários aplicativos da Web de produção de alto uso que são executados em FGDBs no back-end. Os FGDBs são eliminados e reconstruídos com novos dados todas as noites. Escrevemos um aplicativo de console .NET que escrevi baseado no AGSSOM que interrompe os serviços enquanto o processo de atualização é executado. Confira AGSSOM, é muito liso. Aqui estão alguns dos C # que eu uso para fazer um backup do FGDB atual antes que eu o exploda:

// 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);
                    }
                }
            }

Ele apenas usa Directory.CreateDirectory e FileInfo.CopyTo para copiar o FGDB - o Windows vê o FGDB como apenas outra pasta. Funciona como um campeão. Depois que o processo de atualização estiver concluído, reiniciaremos os serviços usando o aplicativo baseado em AGSSOM.

Chad Cooper
fonte
Isso foi extremamente valioso!
precisa