Показать полную графическую версию : Постоянное копирование файлов
Vitaly.IV
24-01-2023, 14:54
Добрый день!
Помогите решить проблему пожалуйста.
На сервере А есть папка в которой постоянно появляются новые папки с файлами.
Необходимо настроить копирование всех файлов (только файлов папки можно не копировать) на сервер Б, исходные папки и файлы должны остаться на сервере А без изменения.
С условием что если файл уже копировался повторно его не копировать, даже если он будет убран из папки сервера Б.
Доступ в расшаренную папку на сервере Б по логин паролю (учетка на сервере Б).
DJ Mogarych
24-01-2023, 15:07
См.
https://klyavlin.wordpress.com/2012/09/19/robocopy-network-usernamepassword/
https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/robocopy
Vitaly.IV
25-01-2023, 06:46
Спасибо за направление.
Нашел вот такой bat-ник. Но не копирует файлы из папок если таковые есть (копировать папки не нужно достаточно только файлы).
Как это можно поправить?
@Echo off
set $from=\\server1\copy
set $dest=\\server2\copy
set $log=c:\copyfile.log
NET USE \\server2\copy /u:server2\LOGINUSER *password*
for /f "delims=" %%i in ('dir "%$from%" /B/A:-D') do Call :CheckLog "%%i"
:CheckLog
If Exist "%$log%" For /f "delims=" %%a in (%$log%) Do If "%%a"=="%~1" Exit /B
robocopy "%$from%" "%$dest%" "%~1" /minage:30
if %errorlevel%==1 (echo.Copy is successful - %~1&echo.%~1>>"%$log%")
DJ Mogarych
25-01-2023, 09:07
А если будут файлы с одинаковыми именами в разных папках?
Vitaly.IV
25-01-2023, 09:11
В названии файла присутствует дата и время создания, теоретически одинаковых имен не может быть.
DJ Mogarych
25-01-2023, 11:05
Ну можно так попробовать (Powershell)
Сначала нужно создать файл с учётными данными для входа, чтобы потом на них сослаться в скрипте.
$cred = Get-Credential
$cred | Export-Clixml -Path "D:\temp\cred.xml"
Скрипт
$from = "D:\temp\from"
$to = "\\server\share"
$fileList = "D:\temp\log.txt"
$drive = "W"
$cred = Import-Clixml -Path "D:\temp\cred.xml"
New-PSDrive -Name $drive -PSProvider FileSystem -Root "$to" -Credential $cred
$allFiles = dir "$from" -Recurse |? psiscontainer -eq $false
$selectedFiles = $allFiles |? {(gc "$fileList") -NotContains $_.Name}
$selectedFiles |cp -Destination "$($drive + ":")"
$selectedFiles.name >> "$fileList"
Serguei Kouzmine
25-01-2023, 21:20
создавайте такую же струкутру директорий на сервере Б
и простой флаг
robocopy.exe /?
/S :: copy Subdirectories, but not empty ones.
собственно robocopy сам создаст
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.