Как я могу пакетно дублировать папку, но только архивировать файлы в новой папке для архивирования?

Я настраиваю задание, позволяющее копировать файлы журналов в качестве запланированного пакетного задания на ящиках Windows.

Текущий каталог на машине А:

Logs\   YYYYMMDD\   Logfile1.log
                    Logfile2.log
                    Logfile3.log

На этой машине обычно в любое время хранятся журналы за 3 дня.

Я уже настроил задание Robocopy как запланированное задание на другом сервере (машина B), чтобы скопировать файлы на машину B, но не перемещать что-либо, что уже было скопировано, с помощью этой команды...

Robocopy "\\machineA\Logs" "\\machineB\LOGSTORAGE\machineA\Logs" /s /zb /r:2 /w:2 /eta /LOG+:\\machineB\LOGSTORAGE\logmove.log /TEE

Я хочу заархивировать файлы на машине A, а затем переместить их, а не копировать, и убедиться, что у меня нет дубликатов zip-файлов, созданных заданием после их перемещения.

Возможно, я мог бы воссоздать структуру папок в другом месте и поделиться ею, чтобы машина B имела доступ к папкам в том виде, в каком они есть, но с zip-файлами в качестве содержимого, как показано ниже:

Logs\       YYYYMMDD\       Logfile1.zip
                            Logfile2.zip
                            Logfile3.zip

В идеале я хочу, чтобы архивирование происходило с помощью Windows, без необходимости установки 7Zip или какого-либо другого программного обеспечения для сжатия. Эта страница упоминает PowerShell для выполнения этой работы, но я не знаю, как я могу отредактировать это в соответствии со своими требованиями.

Поскольку в любое время на машине могут храниться журналы за 3 дня, есть ли способ убедиться, что задание zip сжимает только файлы, которые еще не были перемещены в конечный пункт назначения?

Кто-нибудь может мне с этим помочь?


person delprimero    schedule 20.09.2013    source источник
comment
Ваш вопрос выходит за рамки работы форума, имхо.   -  person Endoro    schedule 20.09.2013
comment
@Endoro Итак, где я могу спросить об этом, чтобы получить помощь?   -  person delprimero    schedule 24.09.2013
comment
Я бы порекомендовал более конкретный сайт, например. Достипс.   -  person Endoro    schedule 24.09.2013


Ответы (2)


Прошло много времени, но в итоге я изменил требование заархивировать всю папку, потому что просто заархивирование файлов означало, что дата файла была сохранена как фактическая дата создания zip, а не оригинал, и для этой задачи все даты были важны. В конце концов, было проще просто заархивировать папки, не создавая временный каталог, а затем позволить машине B получить файлы с помощью Robocopy.

Это то, что я использовал в конце

@echo off
for /d %%x in ("C:\Program Files\Logs\*.*") do start "C:\Program Files\7-Zip\7z.exe" /b /low /wait "C:\Program Files\7-Zip\7z.exe" a -tzip "%%x.zip" "%%x\"
person delprimero    schedule 03.10.2014

Ну, я не знаком с Robocopy, однако вы можете создать пакет для архивирования файлов, скопировать их с помощью robocopy, а затем удалить. Это можно сделать, поместив код Robocopy между ними следующим образом (используется 7zip, извините):

@ECHO OFF
REM Adds all folders in the current directory to archives 
for /d %%a in (*) do (7za a -tzip %%~na.zip "%%a")
REM Insert Robocopy code here.
REM Deletes the remaining folders
for /d %%a in (*) do (if exist "%%a\" del "%%a")
pause

Этот ответ не идеален, поэтому, если вы что-то не понимаете, спросите меня, и я постараюсь уточнить.

person John Smith    schedule 13.05.2014