Имя: Пароль:
IT
Админ
Автоматическая очистка места на диске
,
0 Сергиус
 
08.08.12
09:50
Есть диск, на который складываются бекапы. Периодически он заполняется. Вот думаю, реально ли как-то очищать его при достижении определенного лимита..ну или на крайний случай, получать какое-то уведомление на почту.. Как можно реализовать подобное?
1 Aleksey
 
08.08.12
09:50
Что такое лимит?
2 Fish
 
08.08.12
09:51
(0) Формат?
3 Сергиус
 
08.08.12
09:51
(1) ну допустим, диск 500 гигов..а свободного места осталось 50 или меньше..
4 Сергиус
 
08.08.12
09:52
(2) в смысле?
5 Fish
 
08.08.12
09:52
(4) Раз в день форматируй диск и он никогда не заполнится :)
6 ildary
 
08.08.12
09:52
Лучше реализовать и то и другое - и purge старых файлов и уведомление, что место на диске заканчивается. Реализовать можно любым скриптовым языком - vbs, autoit и т.п.
7 Сергиус
 
08.08.12
09:53
(5) ты жестокий человек..если все так решаешь радикально)
8 Сергиус
 
08.08.12
09:54
(6) не подскажешь..где можно посмотреть какие-то работающие решения?
9 Alize
 
08.08.12
09:54
Планировшик запускает батник,раз в месц,тот удаляет файло
10 Fish
 
08.08.12
09:55
(7) А если серьёзно, то есть куча софта, который это умеет делать.
11 pumbaEO
 
08.08.12
09:56
(8) можешь даже на 1С написать, перебрать файлы, получить атрибуты и удалить ненужные.
12 Heckfy
 
08.08.12
09:56
(0) А что за бекапы?
13 Сергиус
 
08.08.12
09:56
(11) ну кстати да..вариант..надо подумать
14 Сергиус
 
08.08.12
09:57
(12) базы 1с
15 Нуф-Нуф
 
08.08.12
09:57
формат С в шедулер
16 Alize
 
08.08.12
09:57
(8)А голова тебе зачем?
17 Heckfy
 
08.08.12
09:57
(14) Если скулем бекапишь, то вообще проблемы нету.
18 Сергиус
 
08.08.12
09:58
(17) скулем..там это как то можно настроить?
19 Мулька
 
08.08.12
09:59
*vbs - Оставляет только последние два дня
On Error Resume Next
Dim Foleder, Folders

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("E:\LogShipping\CTF")

Set Folders = Folder.SubFolders
For Each Folder In Folders

datenew = DateAdd("d", 2, Folder.DateCreated)

if datenew < now then

Folder.delete
end if

Next
Set FSO = Nothing
20 Heckfy
 
08.08.12
10:01
(18) Да, можно. Называется "Задача "Очистка после обслуживания" в планах обслуживания.
21 ildary
 
08.08.12
10:02
(8) на autoit (удаление старых файлов):


#NoTrayIcon

#include <Array.au3>
#include <Date.au3>
#include <File.au3>

Local $Folder, $FileList, $FileType = '*.*', $ScavangeDate = 10

Dim $LogFileName = @ScriptName
   $LogFileName = StringLeft( $LogFileName, StringInStr( $LogFileName, "." ) - 1 ) & ".log"

_Main()

Func ErrMsg( $ErrStr, $ErrorCode = 1 )

   $ErrStr = " Ошибка: " & $ErrStr

   MsgBox( 0, "Ошибка", $ErrStr, 600 )

   Exit $ErrorCode

EndFunc ;ErrMsg

Func _Main()

   If $CmdLine[ 0 ] < 1 Then ;выведем ошибку и выйдем

       ErrMsg( "Не указаны все параметры (нужно 1)"  )

   EndIf

   $Folder = $CmdLine[ 1 ]
   If Not FileExists( $Folder ) Then

       ErrMsg( "Папка не существует: " & $Folder )

   EndIf

   ;~ $Folder = FileSelectFolder('Choose The Diretory To Scavange For Old Files', '')
   ;~ If @error Then Exit


   If $CmdLine[ 0 ] > 1 Then ;получим колво дней для удаления

       $ScavangeDate = $CmdLine[ 2 ]
       $ScavangeDate = Number ( $ScavangeDate )

   EndIf

   $FileList = _FileListToArray( $Folder, $FileType, 1 )
   If @error Then Exit

   For $i = $FileList[0] To 1 Step -1

       $FullFileName = $Folder & '\' & $FileList[ $i ]

       Local $FileDate = FileGetTime( $FullFileName )

       If IsArray($FileDate) Then

           Local $Date = $FileDate[0] & '/' & $FileDate[1] & '/' & $FileDate[2] & ' ' & $FileDate[3] & ':' & $FileDate[4] & ':' & $FileDate[5]

;~ MsgBox( 0, "", "File: " & $FileList[$i] & ", Date: " & $Date & ", DateDiff: " & _DateDiff('D', $Date, _NowCalc()) )

           If _DateDiff('D', $Date, _NowCalc()) < $ScavangeDate Then ContinueLoop

       EndIf

       FileDelete( $FullFileName )

       ;_ArrayDelete($FileList, $i)

   Next

EndFunc ;_Main
22 Heckfy
 
08.08.12
10:02
23 Сергиус
 
08.08.12
10:03
(20) я думаю, это то что нужно! спасибо Всем
24 BigHarry
 
08.08.12
13:23
Со сравнением дат поаккуратнее, а то был случай - после "удачной" синхронизации времени дата на компе с быкапами ушла далеко вперед, и все архивы были затерты как сильно устаревшие :D
25 Йохохо
 
08.08.12
13:50
просто так делать не верно, надо "удалить все кроме последних успешных Х"
26 smaharbA
 
08.08.12
13:57
создать в планировщике 7 заданий с именами бекапов - бекап1, бекап2, ..., бекап7
все будет само
27 smaharbA
 
08.08.12
13:58
и никакого программирования
28 smaharbA
 
08.08.12
13:58
+ в виндузе есть встроенная команда удаления старых файлов