Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Архивация помесячно (http://forum.oszone.net/showthread.php?t=263605)

chelovek1 02-07-2013 15:30 2178086

Архивация помесячно
 
Всем привет! Помогите решить задачку.
Есть папка , в ней лежит много логов, логи создаются каждый час. Логи нужно архивировать помесячно. т.е. если файлы лежат больше 60 дней добавлять в архив, в каждом архиве должны быть файлы только одного месяца.
7zip
Понять когда файл создан можно по нескольким условиям, по имени"20120606"-гггг.чч.мм или по дате создания.
Честно всю голову сломал, не как не могу написать согласно этим условиям.

Iska 02-07-2013 16:13 2178121

Сначала корректно сформулируйте ТЗ.

1. Не выходит:
Цитата:

Цитата chelovek1
помесячно. т.е. если файлы лежат больше 60 дней »

2. В какой момент и с какой частотой будет происходить архивация?

3. Что делать с файлами. прошедшими архивирование?

4. Определитесь:
Цитата:

Цитата chelovek1
по имени"20120606"-гггг.чч.мм или по дате создания. »


chelovek1 02-07-2013 17:02 2178162

Спасибо Вам за отклик!

1. я имел в виду, файлы должны архивироваться через 60 дней, до этого они должны лежать без архивации, чтобы к ним можно было легко обратится.
2. архивация будет проходить раз в месяц.
3. файлы будут лежать в той же папке, переносить не надо.
4. желательно по имени.

Iska 02-07-2013 17:28 2178190

Цитата:

Цитата chelovek1
2. архивация будет проходить раз в месяц. »

Жду ответа на первую часть:
Цитата:

Цитата Iska
2. В какой момент »

вопроса.

Цитата:

Цитата chelovek1
3. файлы будут лежать в той же папке, переносить не надо. »

Тогда что значит это:
Цитата:

Цитата chelovek1
до этого они должны лежать без архивации, чтобы к ним можно было легко обратится. »

Может, Вы не поняли, вопрос был про исходные файлы — что с ними делать?

sunnykey 02-07-2013 18:05 2178226

Код:

#Powershell script.
#Don't forget unlock script executing by
#using command "Set-ExecutionPolicy RemoteSigned" or "Set-ExecutionPolicy Unrestricted"
$TargetDir="C:\Logs"
$60Days=New-TimeSpan -Days 60
$7zipPath="C:\Program Files\7-Zip\7z.exe"
$ArchiveName="$TargetDir\Older_than_"+(Get-Date -Format "yyyyMMdd")+".zip"
Set-Location -Path $TargetDir
$CurFiles=Get-ChildItem .\* -Force | Where-Object {$_.CreationTime -gt ((Get-Date)-$60Days)}
foreach ($el in $CurFiles) {
    cmd /c "`"$7zipPath`" a $ArchiveName $el"
    $el | Remove-Item -Force
}

Проявил свои телепатические навыки

Iska 02-07-2013 19:15 2178265

sunnykey, зачем «cmd /c»?

chelovek1 02-07-2013 19:17 2178266

Цитата:

Цитата Iska
Цитата chelovek1:
2. архивация будет проходить раз в месяц. »
Жду ответа на первую часть:
Цитата Iska:
2. В какой момент »
вопроса. »

1го числа каждого месяца
Цитата:

Цитата Iska
Цитата chelovek1:
3. файлы будут лежать в той же папке, переносить не надо. »
Тогда что значит это:
Цитата chelovek1:
до этого они должны лежать без архивации, чтобы к ним можно было легко обратится. »
Может, Вы не поняли, вопрос был про исходные файлы — что с ними делать? »

Удалять.

Цитата:

Цитата sunnykey
Код:
#Powershell script.
#Don't forget unlock script executing by
#using command "Set-ExecutionPolicy RemoteSigned" or "Set-ExecutionPolicy Unrestricted"
$TargetDir="C:\Logs"
$60Days=New-TimeSpan -Days 60
$7zipPath="C:\Program Files\7-Zip\7z.exe"
$ArchiveName="$TargetDir\Older_than_"+(Get-Date -Format "yyyyMMdd")+".zip"
Set-Location -Path $TargetDir
$CurFiles=Get-ChildItem .\* -Force | Where-Object {$_.CreationTime -gt ((Get-Date)-$60Days)}
foreach ($el in $CurFiles) {
cmd /c "`"$7zipPath`" a $ArchiveName $el"
$el | Remove-Item -Force
}
Проявил свои телепатические навыки »

Спасибо, буду пробовать, хотя бы есть от чего отталкиваться

Iska 02-07-2013 19:28 2178274

Цитата:

Цитата chelovek1
Спасибо, буду пробовать, хотя бы есть от чего отталкиваться »

Если заработает, и Вас устроит — отпишитесь: делать DateAdd() в пакетных файлах я точно не буду (и имеющийся здесь, в разделе, код тоже не возьму).

chelovek1 02-07-2013 19:55 2178283

Если не затруднит предложите вариант на CMD, надеюсь не очень нагло с моей стороны:)

sunnykey 03-07-2013 00:46 2178394

Цитата:

Цитата Iska
sunnykey, зачем «cmd /c»? »

У меня без него 7-zip в консоль не выводит
Цитата:

Цитата chelovek1
Если не затруднит предложите вариант на CMD, надеюсь не очень нагло с моей стороны »

Не идёшь ты в ногу со временем в месте с Microsoft=). Время будет перенесу свой код

Iska 03-07-2013 07:09 2178439

Цитата:

Цитата chelovek1
Если не затруднит предложите вариант на CMD…»

Чур меня, чур ;)!


Цитата:

Цитата sunnykey
У меня без него 7-zip в консоль не выводит »

Странно:
читать дальше »
Код:

C:\
.
Start-Process -FilePath "C:\Program Files\7-Zip\7z.exe" -NoNewWindow
C:\

7-Zip 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18

Usage: 7z <command> [<switches>...] <archive_name> [<file_names>...]
      [<@listfiles...>]

<Commands>
  a: Add files to archive
  b: Benchmark
  d: Delete files from archive
  e: Extract files from archive (without using directory names)
  l: List contents of archive
  t: Test integrity of archive
  u: Update files to archive
  x: eXtract files with full paths
<Switches>
  -ai[r[-|0]]{@listfile|!wildcard}: Include archives
  -ax[r[-|0]]{@listfile|!wildcard}: eXclude archives
  -bd: Disable percentage indicator
  -i[r[-|0]]{@listfile|!wildcard}: Include filenames
  -m{Parameters}: set compression Method
  -o{Directory}: set Output directory
  -p{Password}: set Password
  -r[-|0]: Recurse subdirectories
  -scs{UTF-8 | WIN | DOS}: set charset for list files
  -sfx[{name}]: Create SFX archive
  -si[{name}]: read data from stdin
  -slt: show technical information for l (List) command
  -so: write data to stdout
  -ssc[-]: set sensitive case mode
  -ssw: compress shared files
  -t{Type}: Set type of archive
  -u[-][p#][q#][r#][x#][y#][z#][!newArchiveName]: Update options
  -v{Size}[b|k|m|g]: Create volumes
  -w[{path}]: assign Work directory. Empty path means a temporary directory
  -x[r[-|0]]]{@listfile|!wildcard}: eXclude filenames
  -y: assume Yes on all queries



Время: 09:48.

Время: 09:48.
© OSzone.net 2001-