ArcGIS Server'da yayınlanan bir ESRI Dosya Coğrafi Veritabanını yedeklemenin doğru yolu nedir?


11

Bir arcgis sunucu harita hizmetine yayınlanan bir ESRI dosya coğrafi veritabanı (v10) var. Hizmet çalışırken fGDB kilitlenir. Temiz bir yedek almak için hizmeti durdurmam gerekir mi? Veya arklı bir komut dosyası veya Katalog aracılığıyla yedekleme yapmanın bir yolu var mı? Şu anda bir yedek sürücüye fGDB aktarmak için Windows robocopy kullanıyorum. Kilitli dosyaları gösteren çıktı:

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

vesaire vesaire...

Yanıtlar:


4

Herhangi bir sunucunun gölge sürücüsü olmalıdır. Coğrafi veritabanını sıkıştırmak için 'gölge sürücüsünü' kullanabilirsiniz; bu, .lock dosyalarını kaldıracak ve dosyayı en verimli şekilde yeniden sıralayacaktır. Sonra bu dosyayı yedekleyebilirsiniz. İşte iyi bir çift iyi bir başlangıç ​​noktası:

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

Not: Gölge sürücünün başka bir disk yansıtma adı vardır

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


Ah, her zaman sıkıştırmanın sde coğrafi veri tabanları için olduğunu varsaydım. Teşekkürler!
mogollon22

Birden fazla sunucuyu yönetiyorum ve bunların hiçbirinin gölge veya yansıtılmış sürücüleri yok, ancak yedek diskleri (RAID5, Drobo) var ve veri kaybı olmadan bir veya daha fazla sürücünün başarısızlığından kurtulabiliyorlar. Her neyse, bu itiraz bir yana, fgdb'leri xcopy(veya xxcopy ) ile kopyalarım , hataları atlıyorum ve sonucu sıkıştırıyorum. Düzenleme oturumu bozulabileceği için bir özellik sınıfı olarak kilitlenmiş en iyi çözüm değil, ancak bu bir gölge / ayna sürücüsünden farklı değil.
matt wilkie

2

Arka uçta FGDB'lerde çalışan birçok yüksek kullanımlı üretim web uygulamamız var. FGDB'ler silinir ve her gece yeni verilerle yeniden oluşturulur. Güncelleme işlemi devam ederken hizmetleri durduran AGSSOM tabanlı bir .NET konsol uygulamamız var . AGSSOM'a bakın, oldukça kaygan. İşte o FFDB onu uçurmadan önce bir yedek yapmak için kullandığım C # bazıları:

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

FGDB'yi kopyalamak için sadece Directory.CreateDirectory ve FileInfo.CopyTo kullanır - Windows FGDB'yi başka bir klasör olarak görür. Bir şampiyon gibi çalışır. Ardından, güncelleme işlemi tamamlandıktan sonra AGSSOM tabanlı uygulamayı kullanarak hizmetleri yeniden başlatırız.


Bu çok değerliydi!
mogollon22
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.