• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Удалить доки старше определенного периода

Статус
Закрыто для дальнейших ответов.

R4z0R

Green Team
06.08.2009
269
7
BIT
0
архив юзера разросся до 66Гб, естественно он больше не открывается. Можно ли как-то удалить в нем письма старше года?
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
в свойствах репликации поставить галочку - удалить через столько-то дней, только заменить 90 на например 500 дней ;)
 

R4z0R

Green Team
06.08.2009
269
7
BIT
0
в свойствах репликации поставить галочку - удалить через столько-то дней, только заменить 90 на например 500 дней ;)
у него нет локальной реплики (нет столько свободного места) и про дни я не совсем понял
[doublepost=1498041475,1498037519][/doublepost]если запустить такой пример, то доки удалятся?
Код:
Dim s As New NotesSession
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Dim nextdoc As NotesDocument
Dim dtolddate As New NotesDateTime(Today)
Dim servername As String
Dim amounttoadjust As Integer

'NEED TO SET THESE VARIABLES
'Set variable containing server name
serverName = "ARC/DOM/ORG" 'Set to "" for local client
'Set variable parameter to how old the docs should be, here -60 means 60 day old
AmountToAdjust=-365


Call dtOldDate.AdjustDay(AmountToAdjust)
Dim dbdir As New NotesDbDirectory(serverName)
Set db = dbdir.GetFirstDatabase(user.nsf)
'Skip databases which you don't have access to
On Error 4060 Goto ErrorHandling
On Error 4000 Goto ErrorHandling
While Not db Is Nothing
' You can optionally specify a specific directory to act on.
' This will act on databases and subdirectories below the specified directory
' Note: It is critical to include the trailing backslash (directory decimeter)
' The example below acts on the Mail directory.

' If Instr(db.FilePath,"mail\") Then 'Unremark this line to act on specified directory
Call db.Open("", "")
Set dc = db.AllDocuments
Set doc = dc.GetFirstDocument
While Not doc Is Nothing
Set nextDoc = dc.GetNextDocument(doc)
If doc.Created < dtOldDate.lslocaltime Then
Call doc.Remove(True)
End If
Set doc = nextDoc
Set nextDoc = Nothing
Wend
' End If 'Unremark this line to act on specified directory
GetNextDb:
Set db = dbdir.GetNextDatabase
Wend
Exit Sub
ErrorHandling:
'If the code reaches here then
' either the user does not have access rights to the database (error 4060)
' or they don't have the rights to delete documents (error 4000)
Resume GetNextDb
но это пример для всей директории mail, как я понимаю?
[doublepost=1498129200][/doublepost]может кроме compact есть что-нибудь для очистки базы от старых писем?
 
K

Kee_Keekkenen

в таких случаях оычно использую scanEz
 

Мыш

Lotus Team
12.02.2008
1 220
29
BIT
68
у него нет локальной реплики (нет столько свободного места) и про дни я не совсем понял
Локальная реплика и не нужна, да и репликация тут как бы сбоку. Просто в базе, где эта галка установлена, документы, не изменявшиеся в течение указанного кол-ва дней, будут удалены.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
215
эта галка - опасная штука ;), если допустить ошибку в кол-ве дней - прощай документы
а потому - файловый бэкап д.б.!
 

R4z0R

Green Team
06.08.2009
269
7
BIT
0
в свойствах репликации поставить галочку - удалить через столько-то дней, только заменить 90 на например 500 дней ;)
в свойствах реплики есть только пункт Remove documents not modified in the last (days). Это он?
P.S. не могу попасть в свойства репликации. Долго думает и открывает только верхнюю часть, где Заголовок, на каком сервере, Имя файла и его тип...и все((( ошибка B-tree structure is invalid
 
Последнее редактирование:

Мыш

Lotus Team
12.02.2008
1 220
29
BIT
68
в свойствах реплики есть только пункт Remove documents not modified in the last (days). Это он?
P.S. не могу попасть в свойства репликации. Долго думает и открывает только верхнюю часть, где Заголовок, на каком сервере, Имя файла и его тип...и все((( ошибка B-tree structure is invalid

Удаление док-тов не приведет к уменьшению размера базы, все равно потом компактить надо.
Можно попробовать создать реплику этой базы (локально или на др. сервере) - иногда помогало при превышении размеров.
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
Удаление док-тов не приведет к уменьшению размера базы, все равно потом компактить надо.
Можно попробовать создать реплику этой базы (локально или на др. сервере) - иногда помогало при превышении размеров.
удаление будет ежедневное и её рост фактически будет остановлен
 

R4z0R

Green Team
06.08.2009
269
7
BIT
0
пришлось вернуться к этому же вопросу, но теперь это касается всех. Не нашел как массово всем поставить эту галку и нужный период, есть такая возможность?
 

swyatogor

Green Team
24.02.2014
593
24
BIT
0
мы решали другим путем..
в шаблоне почты создавался спец вид, который содержал в себе все документы до определенного времени (т.е. старше чем нам нужно).. а потом агент удалял все доки в этом виде.. мы так обрезали архив почты до 01,01,2014 у всех кроме определенных сотрудников..
 

swyatogor

Green Team
24.02.2014
593
24
BIT
0
можно поподробнее и код агента?
а чтом подробнее.. у Вас все базы на основании какого то шаблона почтового.. вот в нем (в шаблоне) создаете вид с выборкой какую Вам нуно.. например:
Код:
SELECT @IsNotMember("A"; ExcludeFromView) & IsMailStationery != 1 & Form != "Group" & Form != "Person"&@Year(@If(DeliveredDate != ""; DeliveredDate; PostedDate != ""; PostedDate; @Created))<2015
ночью это изменение накатывается дизайнером на все почтовые базы..
а вот агент нуно искать где валяется)) ща поищу) - но там логика простая - все доки из вида - удалить..
 

swyatogor

Green Team
24.02.2014
593
24
BIT
0
вот.. нашел))
Код:
Sub Initialize
    Dim s As New NotesSession
    Dim db As NotesDatabase
    Dim arcdb As NotesDatabase
    Dim vie As NotesView
    Dim dc As NotesDocumentCollection
    Dim vieEc As NotesViewEntryCollection
    Dim doc As NotesDocument
    Dim rtitem As NotesRichTextItem
    Dim folder As variant
    Dim FSO As Variant
    Dim nameOw As NotesName
    Dim prof As NotesDocument
    Dim entdc As NotesViewEntryCollection
    Dim ent As NotesViewEntry
    '*********************************
    '* список пропускаемых
    '*********************************
    Dim spisok (10) As String ' список кого не обрезаем commonname
    spisok(0) = ""
    spisok(1) = ""
    spisok(2) = ""
    spisok(3) = ""
    spisok(4) = ""
    spisok(5) = ""
    spisok(6) = ""
    spisok(7) = ""
    spisok(8) = ""
    spisok(9) = ""
    
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set folder = FSO.GetFolder("z:\")
    
    

    Set db = s.Currentdatabase
    Set doc = db.Createdocument()
    doc.form = "CleanOld"
    Set rtitem = doc.Createrichtextitem("Body")
    
    
    Forall fil In folder.Files    ' перебираем все файлы в папке FolderPath
'        Print fil.path
        If FSO.GetExtensionName(fil.path)="nsf" Then
            If Left(fil.name,2)="a_" Then
                Print  fil.name
'                Print FSO.GetExtensionName(fil.path)
                Call rtitem.Appendtext(fil.name)
                Call rtitem.Addtab(1)
                Set arcdb = s.Getdatabase("ezop", "archive/"+fil.name,false)
                If  Not arcdb Is Nothing Then
                    Call rtitem.Addtab(1)
                    Call rtitem.Appendtext(arcdb.Size)   
                    Set prof = arcDB.Getprofiledocument("CalendarProfile")
                    If Not prof Is Nothing Then
                        Call rtitem.Addtab(1)                       
                        Set nameow = s.Createname(prof.Getitemvalue("Owner")(0))           
                        If IsNull(ArrayGetIndex(spisok, nameOw.Common, 5 )) Then
                            Call rtitem.Appendtext(nameow.Common)
                            Set vie = arcDB.Getview("CleanOld")
                            If Not vie Is Nothing Then
                                Call rtitem.Addtab(1)                                               
                                Call rtitem.Appendtext(vie.Allentries.Count)
'                                Dim size As Long
'                                size = 0
'                                Set entdc = vie.Allentries
'                                Set ent = entdc.Getfirstentry()
'                                Do Until ent Is Nothing
'                                    If ent.Isdocument Then
'                                        size = size+ent.Document.Size/1024
'                                    End If
'                                    Set ent = entdc.Getnextentry(ent)                                       
'                                Loop
'                                Call rtitem.Addtab(1)                                               
'                                Call rtitem.Appendtext(size)
                                
                                Call vie.Allentries.Removeall(false)
                                'arcdb.Undeleteexpiretime =0   
                            Else
                                Call rtitem.Addtab(2)                       
                            End If
                        Else
                            Call rtitem.Appendtext("Пропускаем - в списке")                           
                        End If 
                    Else
                        Call rtitem.Addtab(4)                       
                    End If
                Else
                    Call rtitem.Addtab(3)
                End If
                Call rtitem.Addnewline(1, True)
            End If                           
        End If
    End ForAll
    Call doc.Save(true, false)
    
End Sub

в серединке закоментированные строки - я сначала считал сколько примерно освободится места)
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
у Вас все базы на основании какого то шаблона почтового.. вот в нем (в шаблоне) создаете вид с выборкой какую Вам нуно.. например:
:poop::poop::poop:

то есть вы предлагаете создать вид для тысячи баз? :eek::eek::eek: а сервер потом вытянет такую фичу? а ФТиндекс? а индекс вида? а свободное место? :ROFLMAO:



создаём ОДИН агент в ОДНОЙ базе, который ночью проходится по тысячам баз и если надо и чистит и удаляет и компактит и т.д.
 

swyatogor

Green Team
24.02.2014
593
24
BIT
0
ну.. агент в другой отдельной базе и есть.. но он только удаляет.. компакт запускается уже сервером по расписанию отдельным процессом
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!