none
Как использовать системные переменные для именования файлов резервного копирования? RRS feed

  • Общие обсуждения

  • Я хочу запланировать ежедневное резервное копирование, но имена файлов чтобы имели вид даты и времени. И желательно что бы было в общем 7 архивов, и они перезаписывались соответственно, т.е. с понедельника по воскресенье, было сделано 7 архивов с именами типа "времяденьмесяцгод.bkf", и в понедельник был бы перезаписан архив сделанный в прошлый понедельник и так все остальные соответсвенно. Как я могу это сделать средствами ntbackup?
    13 января 2009 г. 16:17

Все ответы

  • очень просто не получится, поскольку вам придётся дату и время разбирать и удалять разделители. Даже если это устроит (тогда можно смело использовать просто переменную %date% для указания даты), то переменную %time% использовать напрямую не получится, поскольку обычно разделителем времени является двоеточие, которое в свою очередь запрещено в именовании файлов и папок.

     

    Если вам нужен только CMD вариант, то тут я мало чем смогу помочь. Но если есть возможность использовать PowerShell, то имя файла задаётся следующим образом:

    Code Snippet

    $name = Get-Date -Format hhmmddMMyyyy

    и вы получите время в формате часыминутыденьмесяцгод. И эту переменную используете в имени файла:

    Code Snippet

    D:\Resources\$name.bkf

    А ротацию архивов можно сделать одной строчкой:

     

    Code Snippet

    dir F:\Backups | where {$_.lastwritetime -le $(Get-Date).AddDays(-7)} | del -Force

     

    здесь в скобках в AddDays просто указываете число дней, которые хранятся архивы. Все файлы, которые старше этого срока будут удалены. Но это всё PowerShell. VBS и CMD, я думаю, мои коллеги предложат.

    13 января 2009 г. 17:57
  • Cделайте структуру каталогов:

    Backup

      %ComputerName%

        DAY01

        DAY02

        DAY03

        DAY04

        DAY05

        DAY06

        DAY07

     

    Выполнять ротацию типа

     

    Code Snippet

    rd /s /q DAY07

    ren DAY06 DAY07

    ren DAY05 DAY06

    ren DAY04 DAY05

    ren DAY03 DAY04

    ren DAY02 DAY03

    ren DAY01 DAY02

    md DAY01

     

     

     

     

    Обвешать это дело полными путями и проверками, всё ли создалось.

    Выполнять ntbackup в папку DAY01

     

    Но на самом деле следует выполнять ntbackup во временный каталог, затем оттуда готовый архив копировать в DAY01. Причина в космической фрагментации, создаваемой NTBACKUP (как, собстно, и любым архиватором)

    13 января 2009 г. 19:45
    Отвечающий
  • А вообще каковы преимущества ntbackup, перед созданием обычного скрипта по сжатию файлов в zip и копрованию его в нужное место с нужным именем?
    14 января 2009 г. 10:51
  • В принципе, рабочие файлы вы можете копировать и архиватором или посредством xcopy (без сжатия, что сэкономит время копирования). Основной бонус ntbackup:

    1. входит в состав Windows Server 2003
    2. умеет бэкапить такие вещи, как база данных Active directory и SystemState.

    плюс архиваторы должны уметь:

    1. архивировать файлы и папки вместе с их ACL списками
    2. уметь восстанавливать файлы из архива в то же место, с которого был снят архив.

    Это что пришло на ум. Если мы говорим о резервном копировании Active Directory или SystemState, то кроме ntbackup альтернатив мало - только платные (как Symantec BackupExec, Data Protection Manager).

     

    14 января 2009 г. 11:00
  • Плюс, NTBACKUP умеет брать EFS и прочие атрибуты NTFS; умеет копировать Exchange.

     

    Минус ntbackup: если хотя бы 1 бит архива повреждён, ни черта не восстановишь. Поэтому предпочитаю xcopy для копирования папок бизнес-программ и домашних директорий - хотя бы что-то сохранится, если диск с бэкапами переполнен. Но не всегда это возможно.

    15 января 2009 г. 8:40
    Отвечающий