Войти

Показать полную графическую версию : [решено] Перемещение файлов и удаление дубликатов из source, если файл существует


dedajuno
25-09-2017, 12:29
Добрый день, уважаемые знатоки.

Преамбула:
Есть определенное количество компьютеров, с этих компьютеров ежедневно нужно забирать генерируемые ежедневно файлы. Для этого был использован 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
dedajuno, попробуйте использовать параметр (не проверялось):
/IS :: Include Same files.

dedajuno
26-09-2017, 07:15
Iska, Можете немного пояснить, пожалуйста.

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

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

UPD:

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

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

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

megaloman
26-09-2017, 07:43
dedajuno, @Echo Off

pushd Z:\In\Box_In
robocopy Z:\In\Box_In Z:\Out\Box_Out /minage:5 /move /e /IS
popd
не понял зачем он её удаляет... логику не могу понять. » Что хотели, то и получили, это логика Вашей команды: взять папку 1, переместить её в другое место, там дать ей имя 2.

Iska
26-09-2017, 07:49
Можно ли оставить корневую папку test1, перенеся все файлы и подкаталоги внутри в целевую папку?
Или вообще по изощренному пути пойти и по окончанию операции, создать заново папку test1? :D »
Ничего не понял. Изложите ещё раз на примере.

dedajuno
26-09-2017, 08:09
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

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




© OSzone.net 2001-2012