<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; CMD/BAT: Резервное копирование с версионностью.]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=18212</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=18212&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «CMD/BAT: Резервное копирование с версионностью.».]]></description>
		<lastBuildDate>Sat, 01 Jun 2024 21:29:43 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[CMD/BAT: Резервное копирование с версионностью.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=161045#p161045</link>
			<description><![CDATA[<p>Доброго времени суток всем обитателям столь полезного ресурса, столкнулся с не простым вопросом (для меня, по крайней мере)</p><p>Суть такова:<br />Есть каталог на диске 1, есть каталог зеркала на диске 2, создаваемого с помощью BAT по средствам robocopy.<br />Хочу чтобы был дополнительный BAT который смотрит на каталог диска 1 сравнивая его с зеркалом каталога второго диска но поученный результат копировал в третий каталог своего рода версионность.<br />Суть идеи такова: с понедельника по пятницу работает пять BAT файлов для каждого дня недели, копирующих только те файлы которые были добавлены или изменены, в субботу же запускается основной BAT который очищает каталоги версий и делает новое зеркало.</p><p>Прежде чем создать топик я воспользовался поиском с запросом «robocopy» и «резервное копирование» просмотрев найденное нашел бизкое по теме, но не то что нужно.</p><p>На текущий момент мысли крутятся вокруг следующего кода:</p><div class="codebox"><pre><code>
@echo on
chcp 1251
setlocal enabledelayedexpansion

rem Параметры
set &quot;sourceDir=A:\$SUR&quot;
set &quot;targetDir=A:\$TARGT&quot;
set &quot;backupDir=A:\$CEL&quot;
set &quot;logFile=A:\$log\robocopy.log&quot;

rem Очистка лог-файла перед началом
echo. &gt; &quot;%logFile%&quot;

rem Запуск robocopy для сравнения каталогов и записи изменений в лог-файл
robocopy &quot;%sourceDir%&quot; &quot;%targetDir%&quot; /E /L /FP /NJH /NJS /NDL /NS /NC /XO /XX /LOG:&quot;%logFile%&quot;

rem Показать содержимое лог-файла для проверки
echo Содержимое лог-файла:
type &quot;%logFile%&quot;

rem Чтение лога и копирование измененных файлов
for /f &quot;tokens=*&quot; %%i in (&#039;type &quot;%logFile%&quot;&#039;) do (
    set &quot;line=%%i&quot;
    rem Удаление начальных пробелов
    set &quot;filePath=!line:~14!&quot;

    rem Проверка, что строка не пустая
    if not &quot;!filePath!&quot; == &quot;&quot; (
        echo Обработка файла: !filePath!

        rem Получение полного пути файла относительно исходного каталога
        set &quot;relativeFilePath=!filePath:%sourceDir%\=!&quot;

        rem Полный путь к файлу в целевом каталоге
        set &quot;backupFile=%backupDir%\!relativeFilePath!&quot;
        
        rem Директория файла в целевом каталоге
        set &quot;backupFileDir=!backupFile!&quot;
        for %%k in (&quot;!backupFileDir!&quot;) do set &quot;backupFileDir=%%~dpk&quot;
        
        if not exist &quot;!backupFileDir!&quot; (
            echo Создание каталога: &quot;!backupFileDir!&quot;
            mkdir &quot;!backupFileDir!&quot;
        )

        echo Копирование файла: &quot;%sourceDir%\!relativeFilePath!&quot; в &quot;!backupFileDir!&quot;
        robocopy &quot;%sourceDir%&quot; &quot;!backupFileDir!&quot; &quot;!relativeFilePath!&quot; /COPYALL /R:0 /W:0

        echo Команда robocopy завершена с кодом ошибки: %ERRORLEVEL%
    )
)

echo Копирование измененных файлов завершено.
endlocal
pause
</code></pre></div><p>Но к сожалению не могу понять почему он не работает.<br />Лог файл создается измененные файлы туда заносятся но копирования не происходит, возможно у кого-то есть более здравая мысль как это реализовать корректнее и надежнее…<br />Также необходимо учитывать что robocopy взят по причине присутствия длинных имен и каталогов.</p>]]></description>
			<author><![CDATA[null@example.com (grisha.puding)]]></author>
			<pubDate>Sat, 01 Jun 2024 21:29:43 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=161045#p161045</guid>
		</item>
	</channel>
</rss>
