Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Перемещение файлов и удаление дубликатов из source, если файл существует (http://forum.oszone.net/showthread.php?t=330038)

dedajuno 25-09-2017 12:29 2766746

Перемещение файлов и удаление дубликатов из source, если файл существует
 
Добрый день, уважаемые знатоки.

Преамбула:
Есть определенное количество компьютеров, с этих компьютеров ежедневно нужно забирать генерируемые ежедневно файлы. Для этого был использован ftpes сервис, но так как ftp не может быть перенаправлен на сетевой диск, для этих целей был выделен отдельный винт, но и его сейчас оказывается мало.

Теперь фабула:

Как можно реализовать скрипт на PowerShell или BAT/CMD такой функционал:

Необходимо из каталога PC, в котором большое количество подкаталогов и файлов перемещать каждые сутки в сетевую папку PC_Backup.
Для этого изначально был использован простейший BAT-скрипт
Код:

robocopy E:\PC\home Y:\PC_Backup /minage:5 /move /e
Однако появилась такая проблема, - если в папке PC\home\user1 имеются файлы, которые уже были перемещены в папку PC_Backup\user1, файл остается там же и занимает места на жестком диске.

Как можно перемещать файлы из каталога PC\home в PC_Backup\, и при этом удалять файлы из источника (PC\home), если он уже имеется в PC_Backup\

Спасибо огромное за помощь.

Iska 25-09-2017 14:50 2766795

dedajuno, попробуйте использовать параметр (не проверялось):
Цитата:

/IS :: Include Same files.

dedajuno 26-09-2017 07:15 2766952

Iska, Можете немного пояснить, пожалуйста.

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

при попытке протестировать командой
Код:

robocopy E:\PC\test1 Y:\PC_Backup\test2 /move /e /is
он удаляет исходную папку test1 зачем то. Можно ли этого как-то избежать? не понял зачем он её удаляет... логику не могу понять.

UPD:

Прошу прощения, почитал и как бы иду в разрез со своим сабжем.

Можно ли оставить корневую папку test1, перенеся все файлы и подкаталоги внутри в целевую папку?

Или вообще по изощренному пути пойти и по окончанию операции, создать заново папку test1? :D

megaloman 26-09-2017 07:43 2766955

dedajuno,
Код:

@Echo Off

pushd Z:\In\Box_In
robocopy Z:\In\Box_In Z:\Out\Box_Out /minage:5 /move /e /IS
popd

Цитата:

Цитата dedajuno
не понял зачем он её удаляет... логику не могу понять. »

Что хотели, то и получили, это логика Вашей команды: взять папку 1, переместить её в другое место, там дать ей имя 2.

Iska 26-09-2017 07:49 2766956

Цитата:

Цитата dedajuno
Можно ли оставить корневую папку test1, перенеся все файлы и подкаталоги внутри в целевую папку?
Или вообще по изощренному пути пойти и по окончанию операции, создать заново папку test1? :D »

Ничего не понял. Изложите ещё раз на примере.

dedajuno 26-09-2017 08:09 2766960

Iska, megaloman,

Всё, этот вопрос был решён добавлением маски /minage:5

В силу некоторых причин инфраструктура текущая у меня оказалось такой:
Есть фтп сервер (на базе FileZilla Server) куда ежесуточно сливаются данные с 200 компов (jpeg, avi, webm, log)
Эти данные необходимо хранить в одном месте, так как сетевой диск от NAS не может являться домашним каталогом, приходится сначала качать на сам сервер (E:\PC\) оттуда разбирать через robocopy в сетевой диск Y:\PC_Backup\.
В случае, если указать просто
Код:

robocopy E:\PC\test1 Y:\PC_Backup\test2 /move /e /is
то он удаляет домашний каталог для фтп (E:\PC), что означает, что дальнейшее копирование прекратится.

В общем решается куда проще))) просто добавить /minage:5 /is

Спасибо, тему можно закрывать.


Время: 22:33.

Время: 22:33.
© OSzone.net 2001-