Компьютерный форум 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=248510)

rox33 06-12-2012 12:05 2039772

Логирование синхронизации папок
 
Добрый день, уважаемые!
Веду неравную борьбу с ведением лога при синхронизации папок
Вот скрипт, взял с интернета, доработал чуть-чуть под себя.
читать дальше »
Код:

function FolderMirror {
 param ($source, $dest)

#Сравнение, копирование
$comparedirs = Compare-Object (gci $source) (gci $dest)
 if ($comparedirs | Where-Object {$_.SideIndicator -eq ‘<=’}) {
 $comparedirs | Where-Object {$_.SideIndicator -eq ‘<=’} | ForEach-Object{Write-Host "Копирую"($_.InputObject).FullName "в" $dest (Get-Date)
 Copy-Item ($_.InputObject).FullName -Destination $dest;Write-Output "Копирую"($_.InputObject).FullName "в" $dest (Get-Date) | out-file "c:\result.txt"}
 } else {
 Write-Host "Нечего копировать. Каталоги одинаковы"
 }

#Создание директорий из источника
$files = Get-ChildItem $source
 foreach ($file in $files) {
 if($file.mode -match “d”) {
 write-host "Folder – " $file
 if (Test-Path $dest\$file) {
 } else {
 New-Item $dest\$file -ItemType Directory
 }

 FolderMirror "$source\$file" "$dest\$file"

 } else {

 }
 }

}

$source = "d:\BCKP_TEST"
$dest = "d:\ttt"

$files = Get-ChildItem $source
 foreach ($file in $files) {
 if($file.mode -match “d”) {
 write-host "Folder – " $file
 if (Test-Path $dest\$file) {
 } else {
 New-Item $dest\$file -ItemType Directory
 }
 Write-Host "$source\$file" "$dest\$file"
 FolderMirror "$source\$file" "$dest\$file"
 } else {
 FolderMirror $source $dest
 }
 }


Всё работает хорошо, но лог, собака, пишет только последнюю операцию.
Как заставить его писать всё, что сделано за операцию?
И, в идеале, ДОзаписывать лог после каждого выполнения.

Заранее огромное спасибо за помощь!

Kazun 06-12-2012 13:03 2039835

Используйте robocopy,что гораздо проще и удобнее.

:: Параметры ведения журнала:
::
/L :: Только список - файлы не копируются, не удаляются, не помечаются отметками времени.
/X :: Сообщать обо всех дополнительных файлах, а не только о выбраных.
/V :: Подробный вывод с указанием пропущенных файлов.
/TS :: Включать в вывод метки времени исходных файлов.
/FP :: Включать в вывод полные пути файлов.
/BYTES :: Печатать размеры в байтах.

/NS :: Без размера - не заносить в журнал размер файлов.
/NC :: Без класса - не заносить в журнал классы файлов.
/NFL :: Без списка файлов - не заносить в журнал имена файлов.
/NDL :: Без списка папок - не заносить в журнал имена папок.

/NP :: Без хода процесса - не отображать число скопированных процентов.
/ETA :: Показывать оценку времени окончания копирования файлов.

/LOG:файл :: Записывать состояние в файл журнала (перезаписывать существующий журнал).
/LOG+:файл :: Записывать состояние в файл журнала (добавлять к существующему журналу).

/UNILOG:файл :: Записывать состояние в файл журнала в формате Юникод (перезаписывать существующий журнал).
/UNILOG+:файл :: Записывать состояние в файл журнала в формате Юникод (добавлять к существующему журналу).

/TEE :: Направлять выходные данные в окно консоли и в файл журнала.

/NJH :: Без заголовка задания.
/NJS :: Без сведений о задании.

/UNICODE :: Cостояние вывода в формате Юникод.

register01 29-09-2013 16:04 2225726

Вложений: 1
Этот же скрипт, но немного доработан, по желанию инициатора дописывает в лог


Время: 01:34.

Время: 01:34.
© OSzone.net 2001-