UniFi Eski Verileri Kaldırma
UniFi – Eski Verileri Kaldırma (Budama) ve Mongo Veritabanı Boyutunu Ayarlama
UniFi, bağlı cihazlar, uygulama yapılandırması, istemciler ve istatistikler hakkında ilgili bilgileri depolamak için MongoDB’yi kullanır. UniFi Network uygulaması, veritabanını uygulamanın içinden sıkıştırma seçeneği sunar. UniFi Network uygulamasında oturum açabildiğinizi varsayarsak, bu makaledeki manuel budama talimatlarını izlemek yerine lütfen Ayarlar > Bakım bölümündeki Hizmetler bölümünün altındaki kompakt veritabanı düğmesini kullanın.
Kompakt veritabanı seçeneği, verileri veritabanından kaldırmaz, yalnızca şu anda veritabanında bulunanın dataSize boyutunu küçültür. Veritabanını sıkıştırma, birleştirmeyi içerir, ancak hata düzeltmeyi içermez. Veritabanınızda şüpheli geçersiz veya bozuk girişler varsa, lütfen aşağıdaki talimatları izleyin.
Windows’ta Barındırılan Bir UniFi Ağ Uygulamasını Budama
1. mongo’yu indirin. Windows UniFi yükleyici, mongo ikili dosyasını içermez. MongoDB resmi indirme web sitesini ziyaret edin ve MongoDB günlüğünde görüldüğü gibi veya Topluluktaki uygulama sürüm notlarında belirtildiği gibi, işletim sisteminize ve UniFi Network uygulama sürümünüzün kullandığına uyan MongoDB’ye karşılık gelen .zip sürümünü indirin. .
2. Mongo’yu çıkarın. \bin\mongo.exe dosyasını istediğiniz bir çalışma dizinine çıkarın. Bu örnekte, biz C:\prune\ kullanılmıştır. Pakette bulunan diğer tüm dosyaları yok sayabilirsiniz.
3. Komut Dosyasını İndirin. Komut dosyasını buraya tıklayarak sunucuya indirin ve çalışma dizininize kaydedin.
4. Komut İstemi’ni açın. WINDOWS + R tuşlarına basarak komut istemini açın. Açılır pencerede cmd yazın ve ENTER tuşuna basın.
5. Çalışma Dizinine girin. Komut isteminde, aşağıdaki komutu yazıp enter tuşuna basarak çalışma dizininize geçin:
cd C:\kuru erik\
6. Test Çalıştırmasını gerçekleştirin. Varsayılan olarak, komut dosyası “kuru çalıştırma” modundadır ve fiilen yapılmadan veritabanından neyin budanacağını gösterir. Bu adım, betiğin beklendiği gibi çalıştığından emin olmak içindir. Aşağıdaki komutu yazın ve enter tuşuna basın:
mongo.exe --port 27117 < mongo_prune_js.js
Çıktı şuna benzer görünmelidir:
7. “Kuru çalıştırmayı” devre dışı bırakın. Kuru çalıştırmayı devre dışı bırakmak için komut dosyasını düzenleyin ve tutulacak verilerin gün sayısını yapılandırın. Varsayılan olarak, komut dosyası 7 günlük veri tutar. Komut dosyasını değiştirmek ve kaydetmek için Notepad++ veya benzeri bir düz metin düzenleyici kullanın. Gizli karakterler ekleyebilen ve satır sonlarına uymayan Wordpad veya Word gibi zengin metin düzenleyicileri kullanmayın.
Düzenle var gün=7; kaç günlük verinin tutulacağını değiştirmek ve var dryrun=true; var dryrun=false; komut dosyasının yalnızca bir test çalıştırması yapmak yerine veritabanını gerçekten budamasına izin vermek için.
8. Veritabanını Budayın. Değişiklikler yapıldıktan ve kaydedildikten sonra, değiştirilmiş komut dosyasını çalıştırın, bu sefer veritabanını gerçekten temizleyin:
mongo.exe --port 27117 < mongo_prune_js.js
9. Tamamlandığını Doğrulayın. İşlemin başarıyla tamamlandığını ve herhangi bir hata bildirilmediğini doğrulayın. Çıktı şuna benzer olmalıdır:
10. Temizleme. Oluşturduğunuz dizini ve içindeki dosyaları tekrar kullanmayı düşünmüyorsanız silin.
MacOS’ta Barındırılan Bir UniFi Ağ Uygulamasını Budama
1. Bir Çalışma Dizini oluşturun. Bilgisayarda bir çalışma dizini oluşturun. Bu makalenin amacı için /prune adında bir dizin oluşturacağız.
2. mongo’yu indirin. macOS UniFi yükleyici, mongo ikili dosyasını içermez. MongoDB resmi indirme web sitesini ziyaret edin ve sunucunuzun CPU mimarisine karşılık gelen .tgz sürümünü indirin. Doğru MongoDB sürümü, Topluluğumuzda bulunan UniFi Network uygulamasının sürüm notlarında görünecektir .
3. Mongo’yu çıkarın. İndirilen paketi çalışma dizininize taşıyın ve çift tıklayarak veya istediğiniz uygulamayı kullanarak çıkartın.
4. mongo’yu Çalışma Dizinine taşıyın. bin/mongo ikili dosyasını bulun ve çalışma dizininize kopyalayın. Bu noktada, indirilen .tgz paketi ve ekstra çıkarılan dosyalar sadece mongo ikili dosyasına ihtiyacımız olduğu için silinebilir.
5. Çalışma Dizinine girin. Bir Terminal penceresi açın ve aşağıdaki komutla Adım 1’de oluşturulan çalışma dizinindeki dizinleri değiştirin:
cd / kuru erik
6. Komut Dosyasını İndirin. Budama komut dosyasını aşağıdaki komutla indirin:
curl -kO "https://help.ui.com/hc/article_attachments/115024095828/mongo_prune_js.js" -o "mongo_prune_js.js"
7. Test Çalıştırmasını gerçekleştirin. Komut dosyasının bir test çalıştırmasını gerçekleştirin. Varsayılan olarak, komut dosyası “kuru çalıştırma” modundadır ve fiilen yapılmadan veritabanından neyin budanacağını gösterir. Bu adım, betiğin beklendiği gibi çalışmasını sağlar:
./mongo --port 27117 < mongo_prune_js.js
Çıktı şuna benzer görünmelidir:
8. “Kuru çalıştırmayı” devre dışı bırakın. Her şey doğru görünüyorsa, kuru çalıştırmayı devre dışı bırakmak için komut dosyasını düzenleyin ve tutulacak verilerin gün sayısını yapılandırın. Varsayılan olarak, komut dosyası 7 günlük veri tutar. Komut dosyasını aşağıdaki gibi değiştirmek için nano veya benzer bir düzenleyici kullanın:
nano mongo_prune_js.js
Dosyayı düzenlemek için nano kullandığınızı varsayarsak, metinde gezinmek için ok tuşlarını kullanın. Düzenle var gün=7; kaç günlük verinin tutulacağını değiştirmek ve var dryrun=true; var dryrun=false; komut dosyasının yalnızca bir test çalıştırması yapmak yerine veritabanını gerçekten budamasına izin vermek için. Hazır olduğunuzda, dosyayı kaydetmek için CTRL + O tuşlarına basın (onaylamak için Enter tuşlarına basın) ve çıkmak için CTRL + X tuşlarına basın.
9. Veritabanını Budayın. Bu sefer veritabanını temizleyerek değiştirilmiş komut dosyasını çalıştırın:
./mongo --port 27117 < mongo_prune_js.js
10. Tamamlandığını Doğrulayın. İşlemin başarıyla tamamlandığını ve herhangi bir hata bildirilmediğini doğrulayın. Çıktı şuna benzer olmalıdır:
11. Oturumu Bitirin. Aşağıdaki komutu yazıp enter tuşuna basarak Terminal oturumunu sonlandırın. Ardından Terminal penceresini kapatın.
çıkış
12. Temizleme. Tekrar kullanmayı düşünmüyorsanız, çalışma dizinini kaldırın.
UYARI: kabuk ve sunucu sürümleri eşleşmiyor
Lütfen mongoDB’nin daha eski bir sürümünü indirin. Mevcut sürüm yerine v3.4.x’i deneyin:
https://fastdl.mongodb.org/osx/mongodb-osx-ssl-x86_64-3.4.24.tgz
Linux’ta Barındırılan Bir UniFi Ağ Uygulamasını Budama (Ubuntu, Debian ve Cloud Key)
Komut dosyasını çalıştırmadan önce Ağ uygulaması çalışıyor olmalıdır. Çalışmıyorsa, lütfen aşağıdaki adımları gerçekleştirmeden önce uygulamayı başlatın ve Adım 2: Çalışma Dizinine girin.
sudo hizmeti unifi başlangıcı
1. Bağlantı Kurun. Tercih ettiğiniz istemciyi kullanarak sunucunuza SSH üzerinden bağlanın ve kimlik doğrulaması yapın. Makalenin bu bölümündeki ekran görüntüleri Windows’ta PuTTY’den alınmıştır. Bir Linux veya Mac istemcisi kullanıyorsanız, yerleşik Terminal uygulamasını kullanarak sunucuya bağlanabilirsiniz.
2. Çalışma Dizinine girin. Ev dizininize geçin veya seçtiğiniz bir çalışma dizini oluşturun. Bu makale için ana dizini kullanılacaktır.
cd ~
3. Komut Dosyasını İndirin. Budama komut dosyasını sunucunuza indirin:
curl -kO https://help.ui.com/hc/article_attachments/115024095828/mongo_prune_js.js
4. Test Çalıştırmasını gerçekleştirin. Komut dosyasının bir test çalıştırmasını gerçekleştirin. Varsayılan olarak, komut dosyası “kuru çalıştırma” modundadır ve fiilen yapılmadan veritabanından neyin budanacağını gösterir. Bu adım, betiğin beklendiği gibi çalıştığını doğrular:
mongo --port 27117 < mongo_prune_js.js
Çıktı şuna benzer görünmelidir:
5. “Kuru çalıştırmayı” devre dışı bırakın. Kuru çalıştırmayı devre dışı bırakmak için komut dosyasını düzenleyin ve tutulacak verilerin gün sayısını yapılandırın. Varsayılan olarak, komut dosyası 7 günlük veri tutar. Komut dosyasını aşağıdaki gibi değiştirmek için nano veya benzer bir düzenleyici kullanın:
nano mongo_prune_js.js
Dosyayı düzenlemek için nano kullandığınızı varsayarsak, metinde gezinmek için ok tuşlarını kullanın. Düzenle var gün=7; kaç günlük verinin tutulacağını değiştirmek ve var dryrun=true; var dryrun=false; komut dosyasının yalnızca bir test çalıştırması yapmak yerine veritabanını gerçekten budamasına izin vermek için. Hazır olduğunuzda, dosyayı kaydetmek için CTRL + O tuşlarına basın (onaylamak için Enter tuşlarına basın) ve çıkmak için CTRL + X tuşlarına basın.
sudo apt-get update && sudo apt-get -y install nano
6. Budama Veritabanı. Değiştirilen komut dosyasını çalıştırın, bu sefer veritabanını gerçekten temizleyin:
mongo --port 27117 < mongo_prune_js.js
7. Tamamlandığını Doğrulayın. İşlemin başarıyla tamamlandığını ve herhangi bir hata bildirilmediğini doğrulayın. Çıktı şuna benzer olmalıdır:
8. Temizleme. Komut dosyasını tekrar kullanmayı düşünmüyorsanız, ana dizininizden kaldırın:
rm mongo_prune_js.js
9. Oturumu Bitirin. Terminal oturumunu sonlandırın:
çıkış
UniFi OS’de Barındırılan Bir UniFi Ağ Uygulamasını Budama (UDM-Pro)
1. Kabuğa girin ve komut dosyasını indirin:
unifi-os kabuk kıvrılması https: //help.ui .com/hc/ makale _attachments/115024095828/mongo_prune_js.js -o /tmp/mongo_prune_js.js
2. Verilerin tutulacağı günleri tanımlayın. Verilerin tutulacağı gün miktarını değiştirmek için aşağıdaki komutları verin. Aşağıdaki örnek, ‘verilerin tutulacağı günleri’ 14 gün olarak ayarlar; varsayılan değer 7’dir. Örneğin, days_to_keep=”14″ öğesini days_to_keep=”21″ olarak değiştirerek, ‘verilerin tutulacağı günleri’ 21 olarak ayarlarsınız ve 21 günden eski tüm veriler budanır.
current_days=$(awk '/var günler/{print$2}' /tmp/mongo_prune_js.js | sed -e 's/days=//g' -e 's/;//g') days_to_keep ="14" sed -i "s/days=${current_days}/days=${ days_to_keep }/g" /tmp/mongo_prune_js.js
3. Bir test çalıştırması gerçekleştirin. Bir “kuru çalıştırma” çalıştırmak için aşağıdaki komutları verin:
sed -i 's/dryrun=yanlış/dryrun=true/g' /tmp/mongo_prune_js.js mongo --port 27117 < /tmp/mongo_prune_js.js
4. Komut dosyasını çalıştırın. Bu, betiği “kuru çalıştırma” olmadan çalıştıracaktır.
sed -i 's/dryrun=true/dryrun=yanlış/g' /tmp/mongo_prune_js.js mongo --port 27117 < /tmp/mongo_prune_js.js
5. Komut dosyasını kaldırın ve kabuktan çıkın:
rm /tmp/mongo_prune_js.js çıkışı
Referans için Budama Komut Dosyası
Bu, başvuru için budama komut dosyasıdır veya bunu makalenin altındaki eklerden indirebilirsiniz:
// N günlük veriyi koru var days=7; // komut dosyasının eski kayıtları veritabanından gerçekten hariç tutmasını sağlamak için false olarak değiştirin. Doğru olsa da, DB'de hiçbir değişiklik yapılmayacaktır var dryrun=true; var şimdi = new Date().getTime(), time_criteria = şimdi - gün * 86400 * 1000, time_criteria_in_seconds = time_criteria / 1000; print((dryrun ? "[dryrun] " : "") + "budama verileri " + gün + " günden (" + time_criteria + ")... "); as kullan; var collectionNames = db.getCollectionNames(); for (i=0; i<collectionNames.length; i++) { var name = collectionNames[i]; var sorgu = boş; if (isim === 'olay' || isim === 'alarm' } // haydut ap if (ad === 'haydut') { sorgu = {son_görülen: {$lt:time_criteria_in_seconds}}; } // '$gün'den daha önce sona eren kuponları kaldırır // aktif ve kullanılmayan kuponlara dokunulmaz if (isim === 'kupon') { sorgu = {end_time: {$lt:time_criteria_in_seconds}}; } // misafir yetkilendirme if (name === 'misafir') { sorgu = {son: {$lt:time_criteria_in_seconds}}; } // bir kullanıcı yalnızca BİR KEZ görüldüyse, $last_seen tanımlanmaz // bu nedenle, $last_seen tanımlanmadıysa, bunun yerine $ilk_seen kullanalım // ayrıca $blocked veya $use_fixedip'in ayarlanıp ayarlanmadığını kontrol edin. Doğruysa, TEMİZLEMEYİN // giriş kaç yaşında olursa olsun. Blocked/fixed_ip kullanıcılarının devam etmesini istiyoruz //blocked/fixed_ip. Ayrıca belirtilen kullanıcılar silinmemelidir. if (name === 'user') { sorgu = { engellendi: { $ne: true}, use_fixedip: { $ne: true}, not: { $ne: true}, $or: [ {last_seen: {$ lt:time_criteria_in_seconds} }, {son_seen: {$exists: false}, first_seen: {$lt:time_criteria_in_saniye} } ] }; } if (sorgu) { sayı1 = db.getCollection(ad).count(); sayı2 = db.getCollection(ad).find(sorgu).count(); print((dryrun ? "[dryrun] " : "") + "budama " + sayı2 + " girişler (toplam " + sayı1 + ") " + ad + "... "); if (!dryrun) { db. db.runCommand({ kompakt: isim }); } } } if (!dryrun) db.repairDatabase(); ace_stat kullanın; var collectionNames = db.getCollectionNames(); for (i=0; i<collectionNames.length; i++) { var name = collectionNames[i]; var sorgu = boş; // geçmiş istatistikler (stat.*) if (name.indexOf('stat')==0) { sorgu = {time: {$lt:time_criteria}}; } if (sorgu) { sayı1 = db.getCollection(ad).count(); sayı2 = db.getCollection(ad).find(sorgu).count(); print((dryrun ? "[dryrun] " : "") + "budama " + sayı2 + " girişler (toplam " + sayı1 + ") " + ad + "... "); if (!dryrun) { db. db.runCommand({ kompakt: isim }); } } } if (!dryrun) db.repairDatabase();