|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Условия для копирования. |
|
PowerShell - Условия для копирования.
|
Новый участник Сообщения: 17 |
Доброго времени суток. На самом деле я не смыслю в написании скриптов и поэтому прошу Вашей помощи.
Нужен скрипт который будет анализировать папку 1 и папку 2 (Папка 1 находится на одном компьютере, а папка 2 на другом. Компы в одной сети). Если в папке 1 нет данных, а в папке 2 есть данные, то из папки 2 начинается копирование файлов в папку 1 с последней датой изменения файла. (т.е. есть файлы 22.05 и 22.06 копирование файла произойдет 22.06). Если в папке 1 есть данные и в папке 2 есть данные, то начинается сверка файлов по дате, если в папке 1 старее файлы чем в папке 2, то файлы в папке 1 удаляются, после чего идет копирование файлов в папку 1 (опять же с последней датой изменения). Не судите строго я еще зеленый. |
|
Отправлено: 02:49, 10-06-2020 |
fascinating rhythm Сообщения: 6626
|
Профиль | Отправить PM | Цитировать То есть, папка 1 должна быть точной копией папки 2?
|
------- Отправлено: 09:58, 10-06-2020 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать tubxtru, вам лучше ПО для синхронизации какое-нибудь посмотреть.
|
Отправлено: 11:14, 10-06-2020 | #3 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать tubxtru
Просто средствами скриптов это, наверное, проблематично сделать...((( Я для подобных задач (по сути, это односторонняя синхронизация папки 1 с папкой 2) использую nnbackup.exe от nncron. nnbackup.exe - command-line утилита, подключаем сетевой диск и CMD-шник типа такого (у меня такая строка параметров): У утилиты довольно широкие возможности по резервному копированию и синхронизации, поэтому при адаптации утилиты под свои нужды лучше обратиться к её документации. |
Отправлено: 14:04, 10-06-2020 | #4 |
fascinating rhythm Сообщения: 6626
|
Профиль | Отправить PM | Цитировать |
|
------- Отправлено: 21:27, 10-06-2020 | #5 |
Забанен Сообщения: 793
|
Цитата lev0tsk:
|
|
Отправлено: 22:53, 10-06-2020 | #6 |
Новый участник Сообщения: 17
|
Профиль | Отправить PM | Цитировать Извините господа. Это я не правильно понял задачу. И не правильно ее изложил Вам.
На сервере каждый день формируется бэкап. Этот бэкап нужно перекинуть на 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\" } |
Последний раз редактировалось tubxtru, 11-06-2020 в 01:35. Отправлено: 01:19, 11-06-2020 | #7 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
PowerShell - [решено] как использовать ошибку в предыдущей команде для условия | milligan | Скриптовые языки администрирования Windows | 10 | 26-06-2014 14:06 | |
Любой язык - Скрипт для автоматического копирования | SFlash | Скриптовые языки администрирования Windows | 0 | 18-03-2013 16:25 | |
CMD/BAT - Батник для копирования файла | scorp1992 | Скриптовые языки администрирования Windows | 0 | 23-06-2012 13:56 | |
CMD/BAT - [решено] Команда копирования файла с указанием времени копирования | Pozia | Скриптовые языки администрирования Windows | 6 | 16-10-2010 04:27 | |
CMD/BAT - Скрипт для копирования пользователей. | mitiya | Скриптовые языки администрирования Windows | 6 | 30-04-2009 16:13 |
|