|
скрипт для бэкапа 1с | ☑ | ||
---|---|---|---|---|
0
1сПупс
01.06.17
✎
08:03
|
добрый день!
пользовался кобиан бэкап, периодически вылетает. Пробовал Directory Backuper - вообще полная ерунда, не бэкапит. файлы по 0 байт в архиве https://s.mail.ru/DKgX/9ahdvN6wq написал скрипт (с хабра подправил): SETLOCAL enabledelayedexpansion
почему-то нет вложенных папок в архиве. Может кто пособит? |
|||
1
1сПупс
01.06.17
✎
09:10
|
ап
|
|||
2
Андрюха
01.06.17
✎
09:19
|
Добавь ключ winrar -R - рекурсивно с вложенными папками
|
|||
3
Доминошник
01.06.17
✎
09:23
|
О ключах rar Командная строка для Rar
|
|||
4
АнтонБ
01.06.17
✎
10:32
|
(0) такие бекапы будут битые.
Если в это время открыт 1с. Так как в файл 1с пишет изменения не сразу. Кеширует. Нужно средствами 1с либо средствами sql сервера. А это профанация. |
|||
5
АнтонБ
01.06.17
✎
10:33
|
(0) Запусти переповедение и забекапь этим скриптом в процессе.
|
|||
6
1сПупс
01.06.17
✎
10:34
|
(5) у меня 7.7 файловая
|
|||
7
lodger
01.06.17
✎
10:35
|
(4) 1с не рекомендует средствами 1с делать бекапы, только для развертки в других форматах и для тестирования.
(6) ты же проверяешь, что в 1с никто не сидит? |
|||
8
Feunoir
01.06.17
✎
10:36
|
(0) Возьми Effector Saver. Для 1С ничего больше и не нужно.
|
|||
9
АнтонБ
01.06.17
✎
11:03
|
(7) Он как раз читает открытые для записи файлы.
Тойесть - не проверяет |
|||
10
1сПупс
01.06.17
✎
11:06
|
(7) не не проверяю, это ночью делается
|
|||
11
SunFox
01.06.17
✎
11:07
|
Если не XP, то вот это лучше https://www.veeam.com/ru/windows-endpoint-server-backup-free.html.
|
|||
12
Йохохо
01.06.17
✎
11:09
|
(0) лучше починить кобиан, например завести для него учетку с правами админа. Скрипт мистаматофильтр и без теневой копии нафиг не нужен, тем более для 7.7 с ее блокировками просто при открытии списка баз
|
|||
13
Vladal
01.06.17
✎
11:09
|
Как вариант - моя поделка в далёком 2007 году
http://catalog.mista.ru/public/14958/ |
|||
14
DJ Anthon
01.06.17
✎
11:51
|
echo off
Setlocal EnableDelayedExpansion set base=%1% if NOT DEFINED base echo Утилита архивирования 3.4 баз данных 1С 7.7 и 8.x by Anthon(tm) Software(r) 2016 if NOT DEFINED base echo ======================== ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ ================================= if NOT DEFINED base echo Backup BaseName if NOT DEFINED base echo Backup BaseName /F c:\1SBases\BaseName d:\1SBases\1SUS\Archive if NOT DEFINED base echo Backup BaseName /F c:\1SBases\BaseName d:\1SBases\1SUS\Archive User if NOT DEFINED base echo Backup BaseName /F c:\1SBases\BaseName d:\1SBases\1SUS\Archive User Pass if NOT DEFINED base echo Backup BaseName /F \\SERVER\BaseName \\SERVER\Archive User Pass C:\BIN\1cv7s.exe C:\WinRAR\WinRAR.exe if NOT DEFINED base echo Backup BaseName /S SERVER\BaseName d:\1SBases\Archive if NOT DEFINED base echo = if NOT DEFINED base echo ================================ ВНИМАНИЕ ======================================= if NOT DEFINED base echo Для использования автоматического закрытия процессов 1С 8.х в серверном вариантедобавьте в файл c:\ProgramData\1C\1CEStart\1CEStart.cfg путь к файлу общих баз if NOT DEFINED base echo CommonInfoBases=C:\ProgramData\1C\1CEStart\common.v8i if NOT DEFINED base echo = if NOT DEFINED base echo ============================ ИСТОРИЯ ВЕРСИЙ ==================================== if NOT DEFINED base echo 3.4 (31.08.2016): Исправлен баг с поиском процессов серверных баз 1cv82/1cv8. if NOT DEFINED base echo ================================================================================ if NOT DEFINED base pause if NOT DEFINED base exit set mode=%2% if NOT DEFINED mode echo Не указано, файловая или серверная база, принята как файловая по умолчанию. if NOT DEFINED mode set mode=/F set bp=%3% if NOT DEFINED bp echo Не указан путь к базе! Путь принят по умолчанию (D:\1SBases\%base%) if NOT DEFINED bp if %mode%==/F (set bp=D:\1SBases\%base%) else set bp=SERVER\%base% set ap1=%4% if NOT DEFINED ap1 echo Не указан путь архивации! Путь принят по умолчанию (D:\1SBases\Archive) if NOT DEFINED ap1 set ap1=D:\1SBases\1SUS\Archive set user=%5% set fuck=%6% set pathWinRAR=%8% if NOT DEFINED pathWinRAR set pathWinRAR="C:\Program Files\WinRAR\WinRAR.exe" set path1c7=%7% if NOT DEFINED path1c7 set path1c7="C:\Program Files (x86)\1Cv77\BIN\1cv7s.exe" if not exist %path1c7% set path1c7="C:\Program Files\1Cv77\BIN\1cv7s.exe" set path1c8="c:\Program Files\1cv8\common\1cestart.exe" if not exist %path1c8% set path1c8="c:\Program Files (x86)\1cv8\common\1cestart.exe" if not exist %path1c8% set path1c8="c:\Program Files\1cv82\common\1cestart.exe" if not exist %path1c8% set path1c8="c:\Program Files (x86)\1cv82\common\1cestart.exe" set longtime=%time:~0,8% set t=%longtime: =0% set t=%t::=% reg QUERY "HKU\S-1-5-18\Software\Sysinternals\Handle" /v EulaAccepted >> nul 2>>nul if NOT ERRORLEVEL 1 goto readyreg echo Настройка реестра... reg QUERY "HKCU\Software\1C\1Cv7\7.7\Options\TIPOTHDAYGLB" >> nul 2>>nul if ERRORLEVEL 1 reg ADD "HKCU\Software\1C\1Cv7\7.7\Options\TIPOTHDAYGLB" /f reg QUERY "HKCU\Software\1C\1Cv7\7.7\Options\TIPOTHDAYGLB" /v TipOfTheDayGlobal >> nul 2>>nul if ERRORLEVEL 1 reg ADD "HKCU\Software\1C\1Cv7\7.7\Options\TIPOTHDAYGLB" /v TipOfTheDayGlobal /t REG_SZ /d "0" /f reg QUERY "HKCU\Software\1C\1Cv7\7.7\Options\TIPOTHDAYGLB\Anthon" >> nul 2>>nul if ERRORLEVEL 1 reg ADD "HKCU\Software\1C\1Cv7\7.7\Options\TIPOTHDAYGLB\Anthon" reg QUERY "HKCU\Control Panel\Desktop" >> nul 2>>nul if ERRORLEVEL 1 reg ADD "HKCU\Control Panel\Desktop" /f reg QUERY "HKCU\Control Panel\Desktop" /v AutoEndTasks >> nul 2>>nul if ERRORLEVEL 1 reg ADD "HKCU\Control Panel\Desktop" /v AutoEndTasks /t REG_SZ /d "1" /f reg QUERY "HKCU\Software\Sysinternals\Handle" >> nul 2>>nul if ERRORLEVEL 1 reg ADD "HKCU\Software\Sysinternals\Handle" /f reg QUERY "HKCU\Software\Sysinternals\Handle" /v EulaAccepted >> nul 2>>nul if ERRORLEVEL 1 reg ADD "HKCU\Software\Sysinternals\Handle" /v EulaAccepted /t REG_DWORD /d 1 /f reg QUERY "HKU\S-1-5-18\Software\Sysinternals\Handle" >> nul 2>>nul if ERRORLEVEL 1 reg ADD "HKU\S-1-5-18\Software\Sysinternals\Handle" /f reg QUERY "HKU\S-1-5-18\Software\Sysinternals\Handle" /v EulaAccepted >> nul 2>>nul if ERRORLEVEL 1 reg ADD "HKU\S-1-5-18\Software\Sysinternals\Handle" /v EulaAccepted /t REG_DWORD /d 1 /f :readyreg set ap1=%ap1%\%base% echo Поиск пути архивации %ap1%\... if not exist %ap1% (md %ap1%) if not exist %ap1% echo Не удалось найти путь архивации, упаковка прекращена. if not exist %ap1% ping -n 10 127.0.0.1 > nul if not exist %ap1% goto end echo Удаляем старые архивы, кроме последнего... if exist %ap1%\*.zip if exist %ap1%\*.old del %ap1%\*.old for /R %ap1%\ %%i in (*.zip) DO ( ren %%~dpi%%~nxi %%~nxi.old if exist %ap1%\*.zip (del %%~dpi%%~nxi.old) else ren %%~dpi%%~nxi.old %%~ni.old ) if exist %ap1%\*.rar if exist %ap1%\*.old del %ap1%\*.old for /R %ap1%\ %%i in (*.rar) DO ( ren %%~dpi%%~nxi %%~nxi.old if exist %ap1%\*.rar (del %%~dpi%%~nxi.old) else ren %%~dpi%%~nxi.old %%~ni.old ) if exist %ap1%\*.dt if exist %ap1%\*.old del %ap1%\*.old for /R %ap1%\ %%i in (*.dt) DO ( ren %%~dpi%%~nxi %%~nxi.old if exist %ap1%\*.dt (del %%~dpi%%~nxi.old) else ren %%~dpi%%~nxi.old %%~ni.old ) echo Анализ %bp%\... if %mode%==/S echo Обнаружена серверная база 1С 8, попытка выгрузки... if %mode%==/S goto v8s if exist %bp%\1Cv8.1CD echo Обнаружена файловая база 1С 8, попытка выгрузки... if exist %bp%\1Cv8.1CD goto v8f if exist %bp%\1cv7.md echo Обнаружена файловая база 1С 7.7, попытка выгрузки... if exist %bp%\1cv7.md goto v77 if exist %pathWinRAR% echo Упаковка каталога с помощью WinRAR... if exist %pathWinRAR% goto RAR goto end :v77 echo [General] > %ap1%\%base%.dat echo UnloadData=Y >> %ap1%\%base%.dat echo AutoExchange=N >> %ap1%\%base%.dat echo Output=%ap1%\(%base%)%DATE%-%t%.txt >> %ap1%\%base%.dat echo [UnloadData] >> %ap1%\%base%.dat echo UnloadToFile=%ap1%\(%base%)%DATE%-%t%.zip >> %ap1%\%base%.dat rem echo Password=123456789 >> %ap1%\%base%.dat if exist %bp%\MD_CHANGER\md_changer.ini ren %bp%\MD_CHANGER\md_changer.ini md_changer!.ini if exist %ap1%\%base%.zip del %ap1%\%base%.zip if exist %ap1%\%base%err.txt del %ap1%\%base%err.txt echo Выгрузка базы %base% в файл %ap1%\%base%.zip if not exist %ap1%\Logs md %ap1%\Logs if exist %ap1%\*.txt move %ap1%\*.txt %ap1%\Logs if exist %ap1%\*.zip ren %ap1%\*.zip *.old if exist %ap1%\*.rar ren %ap1%\*.rar *.old if exist %ap1%\Logs\*.txt xcopy %ap1%\Logs\*.txt %ap1%\Logs\*.old /Y if exist %ap1%\Logs\*.txt del %ap1%\Logs\*.txt /Q set lock=1Cv7.lck echo Проверка на наличие запущенных экземпляров программы 1С 7.7... if exist %bp%\%lock% del %bp%\%lock% /Q ping -n 2 127.0.0.1 > nul if not exist %bp%\%lock% goto ready7 echo Отправка процессам 1С команду на закрытие... handle %bp%\%lock% > pids.txt set was= for /F "tokens=3 skip=5" %%i in (pids.txt) do ( if NOT %%i == !was! taskkill /PID %%i /T set was=%%i ) echo Ожидание 90 секунд закрытия процессов 1C... ping -n 90 127.0.0.1 > nul if not exist %bp%\%lock% goto ready7 echo Закрытие зависших процессов 1C... handle %bp%\%lock% > pids.txt set was= for /F "tokens=3 skip=5" %%i in (pids.txt) do ( if NOT %%i == !was! taskkill /F /PID %%i /T set was=%%i ) if exist %bp%\%lock% del %bp%\%lock% :ready7 if exist pids.txt del pids.txt if DEFINED user set user=/N%user% if DEFINED fuck set fuck=/P%fuck% if exist %path1c7% (%path1c7% config /m /D%bp% %user% %fuck% /@%ap1%\%base%.dat) if exist %bp%\MD_CHANGER\md_changer!.ini ren %bp%\MD_CHANGER\md_changer!.ini md_changer.ini rem if exist %ap1%\*.txt move %ap1%\*.txt %ap1%\Logs if exist %ap1%\%base%.dat del %ap1%\%base%.dat if not exist %ap1%\(%base%)%DATE%-%t%.zip echo Не удалось выгрузить базу %base%. Возможно, не закрыты все подключения к ней. Упаковываем каталог с базой целиком.... if not exist %ap1%\(%base%)%DATE%-%t%.zip ping -n 5 127.0.0.1 > nul if exist %ap1%\(%base%)%DATE%-%t%.zip echo Выгрузка успешно завершена! if exist %ap1%\(%base%)%DATE%-%t%.zip ping -n 2 127.0.0.1 > nul if exist %ap1%\(%base%)%DATE%-%t%.zip goto add goto wrong :v8s set cfgpath=c:\ProgramData\1C\1CEStart\1CEStart.cfg if not exist %cfgpath% ( echo Не найден файл настроек 1С %cfgpath%) & (goto ready8) TYPE %cfgpath% > 1CEStart.txt for /F %%i in (1CEStart.txt) do set %%i del 1CEStart.txt if NOT DEFINED CommonInfoBases ( echo Не указан путь к файлу общих баз в файле настроек 1С %cfgpath%) & (goto ready8) if not exist %CommonInfoBases% ( echo Не найден файл общих баз 1С %CommonInfoBases%) & (goto ready8) TYPE %CommonInfoBases% > common.txt rem for /F %%i in (common.txt) do set %%i set foundbase=0 set foundsql=0 for /F %%i in (common.txt) do ( set full=%%i set cut=!full:%base%=! if NOT !full! == !cut! set foundbase=1 set cut=!full:Ref=! if NOT !full! == !cut! set foundsql=1 set cut=!full:ID=! if NOT !full! == !cut! if !foundbase!==1 if !foundsql!==1 set %%i if NOT !full! == !cut! set foundbase=0 if NOT !full! == !cut! set foundsql=0 ) del common.txt if NOT DEFINED ID ( echo Не найдено базы 1С с наименованием %base% в файле %CommonInfoBases%) & (goto ready8) for /d %%B in (%SystemDrive%\Users\*) do ( set lck="%%B\AppData\Roaming\1C\1Cv82\%ID%\1Cv8.lck" if exist !lck! del !lck! /Q >> nul 2>>nul if exist !lck! echo Найден процесс 1С в каталоге %%B, отправка команды закрытия... if exist !lck! handle !lck! > pids.txt if exist !lck! for /F "tokens=1,2 skip=5 eol=t delims=:omt" %%i in (pids.txt) do taskkill /PID %%j /T if exist !lck! del !lck! /Q >> nul 2>>nul if exist !lck! echo Ожидание закрытия процессов 1C, максимум 10 с... for /L %%A in (0,1,10) do ( if exist !lck! del !lck! /Q >> nul 2>>nul if exist !lck! ping -n 2 127.0.0.1 > nul ) if exist !lck! del !lck! /Q >> nul 2>>nul if exist !lck! echo Принудительное закрытие зависших процессов 1C... if exist !lck! handle !lck! > pids.txt if exist !lck! for /F "tokens=1,2 skip=5 eol=t delims=:omt" %%i in (pids.txt) do taskkill /F /PID %%j /T if exist !lck! echo Ожидание закрытия зависших процессов 1C, максимум 5 с... for /L %%A in (0,1,5) do ( if exist !lck! del !lck! /Q >> nul 2>>nul if exist !lck! ping -n 2 127.0.0.1 > nul ) if exist !lck! del !lck! /Q >> nul 2>>nul if exist !lck! echo Невозможно закрыть процесс, заблокировавший файл !lck! ) rem Повторение - мать заикания. for /d %%B in (%SystemDrive%\Users\*) do ( set lck="%%B\AppData\Roaming\1C\1Cv8\%ID%\1Cv8.lck" if exist !lck! del !lck! /Q >> nul 2>>nul if exist !lck! echo Найден процесс 1С в каталоге %%B, отправка команды закрытия... if exist !lck! handle !lck! > pids.txt if exist !lck! for /F "tokens=1,2 skip=5 eol=t delims=:omt" %%i in (pids.txt) do taskkill /PID %%j /T if exist !lck! del !lck! /Q >> nul 2>>nul if exist !lck! echo Ожидание закрытия процессов 1C, максимум 10 с... for /L %%A in (0,1,10) do ( if exist !lck! del !lck! /Q >> nul 2>>nul if exist !lck! ping -n 2 127.0.0.1 > nul ) if exist !lck! del !lck! /Q >> nul 2>>nul if exist !lck! echo Принудительное закрытие зависших процессов 1C... if exist !lck! handle !lck! > pids.txt if exist !lck! for /F "tokens=1,2 skip=5 eol=t delims=:omt" %%i in (pids.txt) do taskkill /F /PID %%j /T if exist !lck! echo Ожидание закрытия зависших процессов 1C, максимум 5 с... for /L %%A in (0,1,5) do ( if exist !lck! del !lck! /Q >> nul 2>>nul if exist !lck! ping -n 2 127.0.0.1 > nul ) if exist !lck! del !lck! /Q >> nul 2>>nul if exist !lck! echo Невозможно закрыть процесс, заблокировавший файл !lck! ) goto ready8 :v8f set lock=1Cv8tmp.1CL if not exist %bp%\%lock% goto ready8 if exist %bp%\%lock% del %bp%\%lock% /Q >> nul 2>>nul if not exist %bp%\%lock% goto ready8 echo Отправка процессам 1С команду на закрытие... handle "%bp%\%lock%" > pids.txt set was= for /F "tokens=3 skip=5" %%i in (pids.txt) do ( if NOT %%i == !was! taskkill /PID %%i /T set was=%%i ) if exist %bp%\%lock% echo Ожидание закрытия процессов 1C, максимум 10 с... for /L %%A in (0,1,10) do ( if exist %bp%\%lock% del %bp%\%lock% /Q >> nul 2>>nul if exist %bp%\%lock% ping -n 2 127.0.0.1 > nul ) if not exist %bp%\%lock% goto ready8 echo Закрытие зависших процессов 1C... handle "%bp%\%lock%" > pids.txt set was= for /F "tokens=3 skip=5" %%i in (pids.txt) do ( if NOT %%i == !was! taskkill /F /PID %%i /T set was=%%i ) if exist %bp%\%lock% echo Ожидание закрытия зависших процессов 1C, максимум 5 с... for /L %%A in (0,1,5) do ( if exist %bp%\%lock% del %bp%\%lock% /Q >> nul 2>>nul if exist %bp%\%lock% ping -n 2 127.0.0.1 > nul ) :ready8 if exist pids.txt del pids.txt /Q if not exist %ap1%\Logs md %ap1%\Logs if exist %ap1%\*.txt move %ap1%\*.txt %ap1%\Logs if exist %ap1%\Logs\*.txt xcopy %ap1%\Logs\*.txt %ap1%\Logs\*.old /Y if exist %ap1%\Logs\*.txt del %ap1%\Logs\*.txt /Q if exist %ap1%\*.dt ren %ap1%\*.dt *.old if exist %ap1%\*.rar ren %ap1%\*.rar *.old echo Попытка выгрузить базу %bp% в файл echo %ap1%\(%base%)%DATE%-%t%.dt if DEFINED user set user=/N"%user%" if DEFINED fuck set fuck=/P%fuck% %path1c8% CONFIG %mode% %bp% %user% %fuck% /DumpIB"%ap1%\(%base%)%DATE%-%t%.dt" if exist %ap1%\*.txt move %ap1%\*.txt %ap1%\Logs ping -n 15 127.0.0.1 > nul :wait ping -n 5 127.0.0.1 > nul if exist %ap1%\(%base%)%DATE%-%t%.dt goto last if exist %ap1%\(%base%)%DATE%-%t%.n1 echo Выгрузка в процессе (n1)... if exist %ap1%\(%base%)%DATE%-%t%.n1 goto wait :last if not exist %ap1%\(%base%)%DATE%-%t%.dt if not exist %ap1%\(%base%)%DATE%-%t%.n1 goto wrong ren %ap1%\(%base%)%DATE%-%t%.dt (%base%)%DATE%-%t%.dt1 >> nul 2>>nul if not exist %ap1%\(%base%)%DATE%-%t%.dt1 echo Выгрузка в процессе (dt)... if not exist %ap1%\(%base%)%DATE%-%t%.dt1 goto wait ren %ap1%\(%base%)%DATE%-%t%.dt1 (%base%)%DATE%-%t%.dt >> nul 2>>nul if %mode%==/S goto end goto add :wrong if exist %bp% echo Не удалось запустить архивирование через Конфигуратор 1С. Аварийная архивация с помощью WinRAR... if exist %bp% goto RAR if not exist %bp% goto end :add if exist %bp% echo Дополнительная архивация с помощью WinRAR... if exist %bp% goto RAR if not exist %bp% goto end :RAR if not exist %ap1%\Logs md %ap1%\Logs if exist %ap1%\*.rar del %ap1%\*.rar /Q %pathWinRAR% a -y -dh -ibck -ilog%ap1%\(%base%)%DATE%-%t%.txt -r %ap1%\(%base%)%DATE%-%t%.rar -m1 %bp% -x1Cv7.LCK :end echo Архивация завершена. Anthon(tm) Software(r) 2016 ping -n 2 127.0.0.1 > nul |
|||
15
DJ Anthon
01.06.17
✎
11:54
|
пример батника для этого файла
echo off e: cd e:\1SBases\1SUS\Archive call Backup.bat BudgetHRM /F e:\1SBases\BudgetHRM e:\1SBases\1SUS\Archive Архивация Пароль call Backup.bat StateAccounting /S SERVER-8R2\StateAccounting e:\1SBases\1SUS\Archive Архивация Пароль cls |
|||
16
DJ Anthon
01.06.17
✎
11:58
|
нужен еще файл handle.exe от sysinternals, чтобы киллить процессы 1Ски, незакрытые юзерами в терминале, да и просто зависшие или забытые. первый запуск батника надо сделать под админскими правами, чтобы в реестре внеслись небольшие правки для управления конфигуратором в пакетном режиме. старые архивы удаляются, оставляется только один, кроме этого, все пакуется раром на всякий случай. а уже каталог можно гудсинком сбрасывать на фтп, чтобы защититься от шифрователей. все просто и работает как часы уже больше года.
|
|||
17
DJ Anthon
01.06.17
✎
12:00
|
спасибо Abrahams за подкинутые идеи
|
|||
18
Лефмихалыч
01.06.17
✎
12:03
|
обдолбатники... фу...
|
|||
19
arsik
гуру
01.06.17
✎
12:21
|
(16) Вы как в 20 веке живете. Про теневые копии вы походу не в курсе.
|
|||
20
Jump
01.06.17
✎
12:26
|
(19) +1000
|
|||
21
DJ Anthon
02.06.17
✎
11:38
|
(19) в курсе, не понравились, отказался. тем более, что интернет там слабый, мне выгрузки на фтп еле-еле успевают упасть. теневые копии не получится так сделать.
|
|||
22
DJ Anthon
02.06.17
✎
11:39
|
тем более база во время работы коряво копируется, так что это заодно завершение работы юзеров в нужных базах.
|
|||
23
DJ Anthon
02.06.17
✎
11:40
|
копии томов отлично так же шифруются шифровальщиками и содержат кучу мусора.
|
|||
24
arsik
гуру
02.06.17
✎
11:40
|
(21) Какая связь между теневыми копиями и выгрузка на ФТП?
|
|||
25
DJ Anthon
02.06.17
✎
11:43
|
(24) большие сильно. в канал не пролазят
|
|||
26
arsik
гуру
02.06.17
✎
11:50
|
(25) Ты издеваешься что ли? Тебе нужна теневая копия только для того что бы из нее забэкапить свою папку с базой, что бы юзеров не выкидывать. Зачем ее всю то тащить?
Хотя бы статейку какую ни будь прочитай. Вот например https://www.osp.ru/winitpro/2007/06/4361785/ - "важная возможность VSS — архивирование файлов, открытых или блокированных таким приложением, как Microsoft SQL Server или Microsoft Exchange." |
|||
27
arsik
гуру
02.06.17
✎
11:52
|
+ (26) Логика такая.
Создаем теневую копию - Из нее архивируем папку с базой - Удалям теневую копию. |
|||
28
mehfk
02.06.17
✎
11:59
|
(16) Зачем именно handle.exe? taskkill не справился?
|
|||
29
DJ Anthon
02.06.17
✎
12:05
|
(28) тасккилл там есть. handle.exe нужен, чтобы вычленять только определенные процессы 1С, чтобы не все грохать. он создает файл с айди процессов, а затем файл парсится.
(27) ну и зачем столько лишних движений? |
|||
30
mehfk
02.06.17
✎
12:06
|
(29) Понял, отстал.
|
|||
31
DJ Anthon
02.06.17
✎
12:09
|
(26) я понял, вы к чему )) я не админ, мне платят только за 1С, так что этот скрипт - дешево и сердито. если будет необходимость, буду делать теневые копии, но очень сомневаюсь, что буду лезти туда, где все работает. и так забот хватает.
|
|||
32
ildary
02.06.17
✎
12:09
|
(0) я когда то сделал так - в сеансе самого долгоработающего пользователя вечером отлавливается полчаса покоя (idle), после чего происходит ребут компа с базой (мало ли какие процессы могут висеть) и после перезагрузки сразу стартовал архивацию (7zip) - способ работает много лет до сих пор.
|
|||
33
Йохохо
02.06.17
✎
12:22
|
(31) просто мега скрипт от мега 1сника дает низкий шанс, что бэкап рабочий
|
|||
34
DJ Anthon
02.06.17
✎
12:41
|
(33) сбоев не было. dt сам по себе ненадежный, подкрепляю винраром. а там где скуль, там есть админы, которые за ним вроде следят, но уже моя дтшка спасала как-то раз базу
|
|||
35
arsik
гуру
02.06.17
✎
13:37
|
(29) Это не "лишние движения", а сложившаяся практика.
|
|||
36
1сПупс
13.06.17
✎
07:34
|
(32) как с помощью idle отловить покой? это батничек делает?
попробовал эффектор сайвер, почему то он сохраняет только эти файлы https://s.mail.ru/Ghvn/5zRMfhK3v разве этого достаточно? |
|||
37
1сПупс
13.06.17
✎
07:54
|
SETLOCAL enabledelayedexpansion
rem Глубина архивации (количество последних архивов, которые должны быть сохранены) SET ArcDepth=7 rem Путь к каталогу, в который будут складываться резервные копии SET DirName=Y:\backup\77\ rem Путь к каталогу с новым бэкапом (%DATE: =0% %TIME: =0% - замена пробелов в %DATE% и %TIME% на нули) FOR /f "tokens=1-7 delims=/-:., " %%a IN ("%DATE: =0% %TIME: =0%") do ( SET NewBkDir=%DirName%\%%c.%%b.%%a_%%d.%%e.%%f.%%g ) rem Путь к лог-файлу SET LogFile=%DirName%\log.LOG ECHO ***** НАЧАЛО %DATE% %TIME% ***** >> "%LogFile%" IF NOT EXIST "%DirName%" ( MD "%DirName%" ECHO "%DirName%" - создан >> "%LogFile%" ) ECHO Создание нового каталога для бэкапа: >> "%LogFile%" IF NOT EXIST "%NewBkDir%" ( MD "%NewBkDir%" ECHO "%NewBkDir%" - создан >> "%LogFile%" ) ELSE ( ECHO "%NewBkDir%" - существовал ранее >> "%LogFile%" ) rem Блок создания новой резервной копии SET SrcData=D:\WORK\1S77\ SET ArcName1=%NewBkDir% SET ArcName2=%NewBkDir%\77.rar ECHO Архивация "%SrcData%" с помощью RAR >> "%LogFile%" robocopy "%SrcData%" "%ArcName1%" /e F:\77\rar.exe a -m5 -md4096 -ep1 -ri1 -dh -df -ilog"%LogFile%" "%ArcName2%" "%ArcName1%" rem Соблюдение глубины архивации (должны остаться только последние %ARCDEPTH% каталогов) ECHO Удаление старых бэкапов: >> "%LogFile%" SET Index=0 rem DIR /AD /B /O-D "%DirName%" - получение упорядоченного по дате списка каталогов, начиная с самых новых FOR /f "tokens=1" %%i IN ('DIR /AD /B /O-D "%DirName%"') DO ( rem Первые %ArcDepth% архивов пропускаем, остальные удаляем SET /a Index+=1 IF !Index! LEQ %ArcDepth% ( echo "%DirName%\%%i" - оставлен >> "%LogFile%" ) else ( RMDIR /S/Q "%DirName%\%%i" echo "%DirName%\%%i" - удален >> "%LogFile%" ) ) ECHO ***** КОНЕЦ %DATE% %TIME% ***** >> "%LogFile%" ECHO. >> "%LogFile%" ECHO. >> "%LogFile%" логика такая: 1.делаю теневую копию 2.делаю архив из нее 3.удаляю теневую копию еще бы грузить это на dev от яндекса. |
|||
38
1сПупс
13.06.17
✎
07:55
|
все оттещщено работает 100%
рацпредложения поощряются |
|||
39
Jump
13.06.17
✎
08:06
|
(37)Ужас, а не скрипт.
Во время работы скрипта пользователь перепровел пару документов и у вас вместо архива каша. |
|||
40
Jump
13.06.17
✎
08:08
|
(37)>>делаю теневую копию
Покажите в каком месте скрипта вы делаете теневую копию, в упор не вижу. |
|||
41
1сПупс
13.06.17
✎
08:24
|
(39) ночью никто не спит думаете
|
|||
42
1сПупс
13.06.17
✎
08:24
|
?
|
|||
43
1сПупс
13.06.17
✎
08:25
|
robocopy это не теневая копия?
|
|||
44
arsik
гуру
13.06.17
✎
08:29
|
(43) Я тебя расстрою, но нет.
|
|||
45
1сПупс
13.06.17
✎
08:30
|
(44) а может и так норм? нет никого в базе
|
|||
46
Jump
13.06.17
✎
08:31
|
(43) робокопи это утилита для копирования файлов.
Теневая копия это мгновенный снимок состояния тома. Нельзя сделать теневую копию файла - она делается мгновенно для всего диска. При создании теневой копии не происходит никакого копирования. Никуда ничего не копируется. Просто сбрасываются буферы и создается несколько записей в файловой системе и |
|||
47
Jump
13.06.17
✎
08:40
|
Теневую копию из скрипта можно создать например так -
vssadmin.exe create shadow /for=C: Создаст теневую копию диска C: vssadmin.exe List Shadows Покажет все существующие теневые копии. mklink /D C:\shadow \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\ Примонтирует том теневой копии \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1 в каталог C:\shadow |
|||
48
Jump
13.06.17
✎
08:41
|
Если из интерфейса то просто в свойствах диска зайти во вкладку теневые копии, выбрать нужную и она сама примонтируется как сетевой каталог.
|
|||
49
1сПупс
13.06.17
✎
09:42
|
(48) нет вкладки теневые копии
https://s.mail.ru/EVCp/nGXDEEnWm |
|||
50
arsik
гуру
13.06.17
✎
10:02
|
Утилита. Минимум настроек. Все что нужно делает, кроме архивации.
https://lightbackup.com/ |
|||
51
arsik
гуру
13.06.17
✎
10:05
|
(49) Вообще то это и есть теневые копии.
Проверь в командной строке "VSSAdmin List Shadows" |
|||
52
Jump
13.06.17
✎
10:31
|
(49) На скриншоте открыта же вкладка предыдущие версии.
Сделай в командной строке под админом vssadmin.exe create shadow /for=C: и в этой вкладке появится еще одна копия с текущим временем создания. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |