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

Vitaly.IV 24-01-2023 14:54 3001674

Постоянное копирование файлов
 
Добрый день!

Помогите решить проблему пожалуйста.

На сервере А есть папка в которой постоянно появляются новые папки с файлами.
Необходимо настроить копирование всех файлов (только файлов папки можно не копировать) на сервер Б, исходные папки и файлы должны остаться на сервере А без изменения.
С условием что если файл уже копировался повторно его не копировать, даже если он будет убран из папки сервера Б.
Доступ в расшаренную папку на сервере Б по логин паролю (учетка на сервере Б).

DJ Mogarych 24-01-2023 15:07 3001676

См.

https://klyavlin.wordpress.com/2012/...rnamepassword/

https://learn.microsoft.com/en-us/wi...mands/robocopy

Vitaly.IV 25-01-2023 06:46 3001718

Спасибо за направление.

Нашел вот такой 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 3001719

А если будут файлы с одинаковыми именами в разных папках?

Vitaly.IV 25-01-2023 09:11 3001720

В названии файла присутствует дата и время создания, теоретически одинаковых имен не может быть.

DJ Mogarych 25-01-2023 11:05 3001726

Ну можно так попробовать (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 3001786

создавайте такую же струкутру директорий на сервере Б
и простой флаг

Код:

robocopy.exe /?

      /S :: copy Subdirectories, but not empty ones.

собственно robocopy сам создаст


Время: 07:32.

Время: 07:32.
© OSzone.net 2001-