Incremetal резервное копирование каталогов с помощью пакетного сценария - PullRequest
0 голосов
/ 16 сентября 2010

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

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

Я все еще новичок в написании сценариев оболочки, и я не уверен, как мне это реализовать. Есть идеи? Пакетные сценарии Windows были бы лучше, но сценарии оболочки, которые запускаются на Cygwin, тоже подойдут.

Ответы [ 2 ]

4 голосов
/ 16 сентября 2010

Взгляните на инструмент rsync - он был разработан для минимизации трафика во время синхронизации файлов.

Также, вероятно, будет полезен "cp" с аргументом "-u":

-u, --update

copy only when the SOURCE file is newer than the destination file or when the destination file is missing
0 голосов
/ 16 сентября 2010

Для пакетных сценариев Windows xcopy (встроенный в windows) или robocopy (бесплатная загрузка в windows) оба работают очень хорошо.

Пример xcopyскрипт (в файле .bat):

@echo off
:: /L = list only.
:: /v=Verify, /y=No prompting /s=subdirs /z=Network mode (supports bad)
:: /i=Tells xcopy dest is folder /f=Display names /d=Copy only changed

echo Backing up projects...
xcopy e:\projects h:\projects /V /Y /S /Z /I /F /D

Он даже будет поддерживать потерянные файлы (если вы удалите что-то из вашего источника, вам больше не понадобится копия в резервной копии).Xcopy обычно подходит для ваших нужд, пока вы не справитесь с синхронизацией между файловыми системами NTFS и Fat32 - последняя имеет разрешение всего 2 секунды и проблемы с ежедневной экономией времени, поэтому вы время от времени сталкиваетесь с проблемами: (a) в день изменения времени, когда выможет не получить резервную копию измененного файла - конечно, это зависит от регулярности изменений, или вы можете получить резервную копию всех файлов, даже если ни один не изменился (b) из-за временного разрешения некоторые файлы могут создавать резервные копии, даже если они не изменились.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...