![]() |
Условия для копирования.
Доброго времени суток. На самом деле я не смыслю в написании скриптов и поэтому прошу Вашей помощи.
Нужен скрипт который будет анализировать папку 1 и папку 2 (Папка 1 находится на одном компьютере, а папка 2 на другом. Компы в одной сети). Если в папке 1 нет данных, а в папке 2 есть данные, то из папки 2 начинается копирование файлов в папку 1 с последней датой изменения файла. (т.е. есть файлы 22.05 и 22.06 копирование файла произойдет 22.06). Если в папке 1 есть данные и в папке 2 есть данные, то начинается сверка файлов по дате, если в папке 1 старее файлы чем в папке 2, то файлы в папке 1 удаляются, после чего идет копирование файлов в папку 1 (опять же с последней датой изменения). Не судите строго я еще зеленый. |
То есть, папка 1 должна быть точной копией папки 2?
|
tubxtru, вам лучше ПО для синхронизации какое-нибудь посмотреть.
|
tubxtru
Просто средствами скриптов это, наверное, проблематично сделать...((( Я для подобных задач (по сути, это односторонняя синхронизация папки 1 с папкой 2) использую nnbackup.exe от nncron. nnbackup.exe - command-line утилита, подключаем сетевой диск и CMD-шник типа такого (у меня такая строка параметров): Код:
Set In=C:\papka-2 |
nncron был хорош во времена Windows XP, сейчас в нём смысла никакого, да и польская нотация - это на большого любителя.
Для синхронизации и копирования очень хорошо подходит robocopy. Синхронизировать папки 1 -> 2 можно так: Код:
robocopy c:\1 c:\2 /MIR |
Цитата:
|
Извините господа. Это я не правильно понял задачу. И не правильно ее изложил Вам.
На сервере каждый день формируется бэкап. Этот бэкап нужно перекинуть на 2 харда. Еще раз попробую выложить свое понимание ситуации: если на диске 1 и 2 нет бэкапа, то бэкап записывается на оба, если на диске 1 есть бэкап, а на диске 2 его нет то пишется на 2 диск. Т.е. бэкап на 1 диске остается старым. (как резервная копия) Если на диске 1 и 2 уже есть бэкапы, то определяется самый старый, а из предыдущего условия самый старый бэкап остался на диске 1, то происходит удаление старого бэкапа с диска 1 и начинается запись свежего. Т.е. теперь бэкап на диске 2 уже становится старым ну и аналогично дальше. Опять же для всего этого нужен лог файл где написано имя бэкапа машины дата время начала копирования и так же окончание копирования. #---задаем имя машины и каталоги резервного копирования, каталог логирования, записываем время начала $VMName ="1cs" $log ="C:\Scripts\logs\" + $VMName+ ".log" $data = Get-Date -Format "dddd MM/dd/yyyy HH:mm" $VMName+" --- START --- "+$data >> $log $txt1 = "\\pk1\F$\pk7\1sc.txt" $txt2 = "\\pk2\R$\pk7\1sc.txt" $istxt1 = Test-Path $txt1 $istxt2 = Test-Path $txt2 if ($istxt1 -eq "True" -and $istxt2 -ne "True") #=================================== $BackupPath=$BackupDisk+$VMName Get-ChildItem -Path $BackupPath -Include * | remove-Item -recurse #---Проверяем наличие папки назначения, если нет, то создаем if (!(Test-Path $BackupPath)){md $BackupPath} $data = Get-Date -Format "dddd MM/dd/yyyy HH:mm" $VMName+" --- FINISH --- "+$data >> $log я не знаю может это чем поможет но это у меня как образец... { New-Item -Path "\\pk1\R$\pk7\" -name 1sc.txt -type "file" $BackupDisk = "\\pk2\R$\pk7\" Remove-Item -Path $txt1 }elseif ($istxt2 -eq "True" -and $istxt1 -ne "True") { New-Item -Path "\\pk1\F$\pk7\" -name 1sc.txt -type "file" $BackupDisk = "\\pk2\F$\pk7\" Remove-Item -Path $txt2 }elseif ($istxt2 -eq "True" -and $istxt1 -eq "True") { $file1 = Get-Item $txt1 $file2 = Get-Item $txt2 if ($file1.LastWriteTime -gt $file2.LastWriteTime) { $BackupDisk = "\\pk2\R$\pk7\" Remove-Item -Path $txt1 }else { $BackupDisk = "\\pk1\F$\pk7\" Remove-Item -Path $txt2 } }elseif($istxt1 -ne "True" -and $istxt2 -ne "True"){ New-Item -Path "\\pk2\R$\pkr7\" -name 1sc.txt -type "file" $BackupDisk = "\\pk2\R$\pkr7\" } |
Время: 23:34. |
Время: 23:34.
© OSzone.net 2001-