Ответы пользователя по тегу Резервное копирование
  • Как бэкапить БД Oracle?

    erge
    @erge
    Примус починяю
    В пределах ОС одного семейства (типа) просто "холодный" бекап - копирование файлов БД.
    с созданием соответствующего init файла и возможно пересозданием control файлов (если пути до базы различаются), так же настроить listener для прослушки соединений на БД, при этом сами СУБД должны быть полностью идентичны (одна и та же версия, разрядность и т.п.)

    PS: возможно не самый быстрый способ, но самый простой.

    PPS: если переносить между разными версиями СУБД и ОС, то имхо , только exp/imp
    можно еще по линкам данные перекачивать или велосипедные файловые репликации (но это между рабочими БД со структурой данных)...
    Ответ написан
    Комментировать
  • Я хочу автоматизировать процесс создания дампа одной таблицы из MySQL и заливки его на GitHub - какие шаги нужны?

    erge
    @erge
    Примус починяю
    MySQL 5.7 и выше уже умеет JSON (google)

    как пример:

    CREATE TABLE employees(id INT PRIMARY KEY, name VARCHAR(45), age INT);
    INSERT INTO employees(id, name, age) VALUES (1,'John', 34);
    INSERT INTO employees(id, name, age) VALUES (2,'Mary', 40);
    INSERT INTO employees(id, name, age) VALUES (3,'Mike', 44);


    на SQL Запрос такой будет:
    SELECT JSON_PRETTY(JSON_ARRAYAGG(
     JSON_OBJECT("id", id, "name", name, "age", age)
     )) json
     FROM employees


    результат:
    [
      {
        "id": 1,
        "age": 34,
        "name": "John"
      },
      {
        "id": 2,
        "age": 40,
        "name": "Mary"
      },
      {
        "id": 3,
        "age": 44,
        "name": "Mike"
      }
    ]


    см. пример на dbfiddle

    на PHP фетчите запрос, сохраняете в файл в репозиторий.

    затем через shell_exec
    выполняете
    git add ...
    git commit
    git push

    PS: но имхо проще на bash'e написать.
    Ответ написан
    2 комментария
  • Как в Windows сделать бэкап файлов, копируемых с заменой?

    erge
    @erge
    Примус починяю
    1) можно использовать нормальную систему контроля версий, например система - git, есть готовый сервис GitHub

    посмотрите инфу в сети, видео на ютюбе, все станет понятно как и что работает.

    2) можно самому написать скрипты например на PowerShell, что-то типа этого:

    $BackupPath = "D:\SomeBackupPath"
    $SourcePath="C:\Some\Source\Path"
    $DestinationPath="C:\Some\Destionation\Path"
    $7zip="C:\Program Files\7-Zip\7z.exe"
    
    $SourceFiles = ( Get-ChildItem $SourcePath -Recurse -Force | where {$_.Mode -notlike 'd*'} | foreach {$_.FullName.Replace("$SourcePath\","") } )
    
    $DestinationFiles = ( Get-ChildItem $DestinationPath -Recurse -Force | where {$_.Mode -notlike 'd*'} | foreach {$_.FullName.Replace("$DestinationPath\","") } )
    
    $ToPackFiles = @()
    
    $SourceFiles | foreach { if ($DestinationFiles -match "^"+ $_.Replace("\","\\") +"$") { $ToPackFiles += "'$_'" } }
    
    cd $DestinationPath
    
    if ($ToPackFiles) { $ToPackFiles | & $7zip a -mx9 ("$BackupPath\"+(Get-Date -Format "yyyy-MM-dd_HHmmss")+".7z") }
    
    Copy-Item "$SourcePath\*" -Recurse $DestinationPath -Force -PassThru | foreach { Write-Host $_.FullName }


    выложил на GitHub - BackupAndCopy.ps1

    скрипт берет файлы из SourcePath сравнивает с DestinationPath, если есть совпадающие, то пакует совпадающие файлы из DestinationPath в 7z архив в папку BackupPath (имя файла дата+время)
    после чего копирует файлы из SourcePath в DestinationPath
    PS: в системе должен быть установлен 7zip , указать к нему путь в переменной $7zip

    Upd:
    Так же посмотрите ZPAQ, он поддерживает версионность файлов, т.е. внутри одного архива можно сохранять например 10 копий одного и того же файла с разными датами изменения.

    Upd2:
    Обновил скрипт, исправил некоторые ошибки (сравнение скрытых файлов, упаковка лишних файлов)
    Ответ написан
    1 комментарий