Показать полную графическую версию : WinRAR
Страниц :
1
2
3
[
4]
5
6
7
8
9
10
11
12
Воссоздал твою структуру каталогов - все работает нормально, по крайней мере *.jpg, *.mp3 и *.bmp в архив не вошли
maslinaV
15-11-2007, 18:18
Попробовал , запустилось окно cmd
C:\Program Files\WinRAR>winrar a -r -ag -rr -os -ow -ibck -v1G c:\temp4backup\sh
ared @c:\temp4backup\bat\back_shared.lst Цx@c:\temp4backup\bat\not_back.lst
Вот это я наблюдал.
...Цx@c:\temp4backup\bat\not_back.lst
Открываю bat файл и копирую в строку интерпретатора
C:\Program Files\WinRAR>winrar a -r -ag -rr -os -ow -ibck -v1G c:\temp4backup\sh
ared @c:\temp4backup\bat\back_shared.lst -x@c:\temp4backup\bat\not_back.lst
Опять ошибка
! Невозможно прочитать содержимое Цx@c:\temp4backup\bat\not_back.lst
Заметьте что в интерпетатор ключ x скопирован с символом - , но winrar не понял
Открыл bat файл в редакторе AkelPad и дал команду сохранить в кодировке в DOS - 866
И запустил на обработку WinRar ошибок больше не было, файлы которые не нужно архивировать не архивировались.
Кстати, когда копировал твой код, у меня –x@c как и у тебя заменилось на Цx@c
Так что получается, что у тебя был неправильно забат один единственный символ - минус перед x@. Вот только вопрос - разве он относится не к первым 127 кодам тоблицы ASCII?
P.S. Хотя если этот символ меняется в разных кодировка, значит это не обычный "минус", а что-то другое
Помогите плиз разобраться в winrar. Задача следующая.
Есть следующая иерархия папок и файлов:
Backup
----------Egrip
--------------------egrip_200711011300.dat
--------------------egrip_200711011800.dat
--------------------egrip_200711021300.dat
--------------------egrip_200711021800.dat
----------Taxes
--------------------taxes_200711011300.dat
--------------------taxes_200711011800.dat
--------------------taxes_200711021300.dat
--------------------taxes_200711021800.dat
Архив делается внутренними средствами SQL в 13.00 и в 18.00 ежедневно. Каждый попадает в свою папку.
Надо следующее. Сжать каждый архив в своей папке, проверить архив, удалить сам dat файл, скопировать полученный архив на другой комп в сети.
Помогите написать батник для сжатия и копирования. Заранее спасибо.
Помогите написать батник для сжатия и копирования. »
Такая формулировка подразумевает, что вы уже пытались что-то сделать (в противном случае было бы "напишите мне батник":)). Что конкретно? Возможно, имеет смысл обратиться в тему нужна помощь в написании *.bat файлов (http://forum.oszone.net/thread-56001.html)
Сказать "напишите мне батник" совесть не позволила :). Проблема в том, чтобы указать rar писать каждый архив в свой файл.
DJ Mogarych
19-11-2007, 11:06
В SQL можно запускать bat-файлы сразу после выполнения резервных копий. Как это сделать конкретно, сказать не могу, т. к. нет SQL-сервера рядом, а не память не воспроизведу. Там надо просто поставить этот "батник" следующим очереди. Т. к. делается два бекапа, то и "батника" будет два.
Bat-файл должен перемещать только что полученный .dat в архив (.dat-файлов тоже два, так что нужно указать egrip*.dat и taxes*.dat для разных заданий резервного копирования), ну, и следующей строкой — копирование полученного архива на другой сервер.
Получается всего 2 строчки в каждом .bat.
А ещё лучше — использовать nnCron или xStarter. Чтобы и старые архивы автоматически удалять, например, да и ещё много что можно сделать полезного для автоматизации рутинной работы.
Не смотря на то, что мастер winrar дает возможность архивировать каждый файл в отдельный архив, консоль похоже этого не позволяет. Но можно сделать так:
dir /B c:\backup\egrip>list.txt
FOR /F %%i IN (list.txt) DO "c:\program files\winrar\winrar.exe" a -ep c:\backup\egrip\%%i.rar c:\backup\egrip\%%i
del list.txt
изначально задача стояла не просто сделать архивы, а сжать, удалить оригинал и скопировать в сеть
Сжать каждый архив в своей папке, проверить архив, удалить сам dat файл, скопировать полученный архив на другой комп в сети. »
Поэтому делаем так:@echo off
c:
cd \backup\egrip
for %%a in (*.dat) do "c:\program files\winrar\winrar.exe" m -ep \\server\share\%%a %%a
cd ..\taxes
for %%a in (*.dat) do "c:\program files\winrar\winrar.exe" m -ep \\server\share\%%a %%a
Пояснения к командной строке:
for %%a in (*.dat) - для каждого файла с расширением .dat в текущем каталоге
do "c:\program files\winrar\winrar.exe" m -ep - файлы будут ПЕРЕМЕЩЕНЫ в архив (с удалением исходных файлов в случае успешного архивирования)
\\server\share\%%a - на сервере server в шаре share будут созданы файлы вида egrip_200711011300.dat.rar
dir /B c:\backup\egrip>list.txt »Не люблю я всякие временные файлы... Если есть возможность обойтись без них - лучше без них.
HLT »
Файл szhatie.bat вот такого содержания:
@echo off
c:
cd \backup\egrip
for %%a in (*.dat) do "c:\program files\winrar\winrar.exe" m -ep \\srveod\temp\
cd ..\taxes
for %%a in (*.dat) do "c:\program files\winrar\winrar.exe" m -ep \\srveod\temp\
На сервере в папке temp появился файл .rar с таким содержимым
Def_US.SFX
Default.SFX
Descript.ion
egrip_20071101.dat
egrip_20071102.dat
egrip_20071103.dat
egrip_20071104.dat
egrip_20071105.dat
File_Id.diz
License.txt
Order.htm
ReadMe.txt
ReadMe.rus.txt
taxes_20071101.dat
taxes_20071102.dat
taxes_20071103.dat
taxes_20071104.dat
taxes_20071105.dat
К сожалению все в одном архиве. И не исключил файлы по маске. Для пробы закинул туда файлы других расширений.
Что делать?
for %%a in (*.dat) do "c:\program files\winrar\winrar.exe" m -ep \\server\share\%%a %%a »
for %%a in (*.dat) do "c:\program files\winrar\winrar.exe" m -ep \\srveod\temp\ »
Kelo, где потерял последние %%a? Без них твоя запись означает переместить все содержимое текущей папки в один архив без сохранения путей в папку \\srveod\temp\, что ты собственно и получил
DJ Mogarych
20-11-2007, 12:28
Используйте -tn<время>
Обрабатывать файлы не старее, чем указанный период времени.
Задающая время строка имеет следующий формат:
[<дни>d][<часы>h][<минуты>m][<секунды>s]
Например, для обработки файлов, изменённых менее 15 дней назад,
используйте ключ '-tn15d', а для обработки файлов, изменённых
менее чем 2 часа 15 минут назад, используйте '-tn2h15m'.
Т. к. самая маленькая разница между резервными копированиями 5 часов, соответственно, получается, к примеру, -tn1h.
А чтобы 2 файла, попадающие под эти условия, не паковались вместе, используйте маски — egrip*.dat и taxes*.dat.
Собственно, это просто более подробное рассмотрение моего первого сообщения в этой теме...
К сожалению все в одном архиве. »
Kelo, где потерял последние %%a? »
for %%a in (*.dat) do "c:\program files\winrar\winrar.exe" m -ep \\server\share\%%a %%aКоманда for берет по одному все файлы, попадающие под маску *.dat и для каждого из них запускает команду. При этом имя текущего файла содержится в переменной %%a
Если нет 2го параметра %%a, то в каждый архив \\server\share\%%a попадут все файлы в каталоге.
Если есть - то только 1 файл. Нужный.
Используйте -tn<время>
Обрабатывать файлы не старее, чем указанный период времени. »В данном случае этот вариант не подходит. В наличии куча файлов с разными датами и временем создания. Обрабатывать надо все по очереди.
используйте маски — egrip*.dat и taxes*.dat »А смысл? Файлы лежат в разных каталогах.
Кстати. Дерево каталогов и имена файлов точно такие, как указано в первом посте?
Если есть пробелы в названиях каталогов и/или именах файлов, то можно немного изменить командную строку:
for %%a in (*.dat) do "c:\program files\winrar\winrar.exe" m -ep "\\server\share\%%a" "%%a"
хм. какие-то глюки. мало того что сообщение раздвоилось, так еще и редактировать последнее не даёт :(
Возможно поможет - работает реально уже больше года. Батник запускается еженощно шедулером:
rem Архивация SQL
pkzipc -add -dir=current temp \\172.хх.хх.хх\for_copir\*.* > sql04.prot
Rem Проставим дату в имя ф-ла и закинем файл в нужный каталог
rnm d:\kopia\temp.zip
for %%f in (*.zip) do ren %%f "sql_%%f"
move /Y *.zip d:\Kopia\FS04\
Пояснения:
- sql создает и хранит одну копию в сутки
- zip используется по причине фриварности
- rnm - самописная консольная утилита заменяющая имя файла на дату - получается в итоге наприммер 011107.ZIP
- циклом переименовывается в sql_011107.ZIP, т.к. таким же образом делаются бэкапы и других данных
- после всего полученный файл закидывается в нужное место.
@echo off
c:
cd \backup\egrip
for %%a in (*.dat) do "c:\program files\winrar\winrar.exe" m -ep \\srveod\temp\%%a %%a
cd ..\taxes
for %%a in (*.dat) do "c:\program files\winrar\winrar.exe" m -ep \\srveod\temp\%%a %%a - при таком раскладе в папке приемнике появляются 10 файлов^
egrip_20071101.dat
egrip_20071102.dat
egrip_20071103.dat
egrip_20071104.dat
egrip_20071105.dat.
taxes_20071101.dat
taxes_20071102.dat
taxes_20071103.dat
taxes_20071104.dat
taxes_20071105.dat
при таком раскладе в папке приемнике появляются 10 файлов^ »то есть файлы с расширением .dat ?
Значит, добавляем .rar в команду:
for %%a in (*.dat) do "c:\program files\winrar\winrar.exe" m -ep \\srveod\temp\%%a.rar %%a
Действительно, если указано расширение - то винрар не добавляет .rar самостоятельно
Кстати, те файлы, которые появились - это .rar архивы на самом деле )
HLT »
Спасибо помогло. Дополнительно такой вопрос: что поменять тут
for %%a in (*.dat) do "c:\program files\winrar\winrar.exe" m -ep \\srveod\temp\%%a.rar %%a
чтобы архивный файл записывался там же, где находится и дат файл, а не другой комп.
Потом поробую уже батником копировать на другой сервер.
for %%a in (*.dat) do "c:\program files\winrar\winrar.exe" m -ep \\srveod\temp\%%a.rar %%a »
чтобы архивный файл записывался там же, где находится и дат файл »for %%a in (*.dat) do "c:\program files\winrar\winrar.exe" m -ep %%a.rar %%a
если структура папок такая, как в первом посте, то лучше создать каталог c:\backup\rar и паковать в него:
for %%a in (*.dat) do "c:\program files\winrar\winrar.exe" m -ep ..\rar\%%a.rar %%a
Backup
----------Egrip
--------------------egrip_200711011300.dat
--------------------egrip_200711011800.dat
--------------------egrip_200711021300.dat
--------------------egrip_200711021800.dat
----------Taxes
--------------------taxes_200711011300.dat
--------------------taxes_200711011800.dat
--------------------taxes_200711021300.dat
--------------------taxes_200711021800.dat
----------Rar
--------------------egrip_200711011300.dat.rar
--------------------egrip_200711011800.dat.rar
--------------------egrip_200711021300.dat.rar
--------------------egrip_200711021800.dat.rar
--------------------taxes_200711011300.dat.rar
--------------------taxes_200711011800.dat.rar
--------------------taxes_200711021300.dat.rar
--------------------taxes_200711021800.dat.rar
Спасибо за помощь HLT!
В хелпе к проге написано:
добавить информацию для восстановления в архив pictures размером 5% от общего объёма архива: WinRAR rr5p pictures
Куда именно вставлять надо эти rr5p??? Что-то не получается.
Команда M — переместить в архив файлы и папки. После успешного завершения архивации файлы и папки удаляются.
А полученному архиву доверять можно?
Ключ -T — протестировать файлы после архивирования.
Проверка файлов после помещения их в архив. Этот ключ особенно полезен в сочетании с командой перемещения файлов в архив, поскольку файлы будут удалены с диска только в том случае, если их копии в архиве были успешно протестированы.
Тестирование можно добавить?
Ключ -ILOG[имя] — записывать протокол ошибок в файл.
Записывать сообщения произошедших при работе ошибок в файл rar.log, создаваемый в папке WinRAR. Вы можете просмотреть содержимое этого файла командой "Просмотр протокола" в меню "Параметры". Вместо принимаемого по умолчанию файла rar.log вы можете указать другое имя файла, например:
-ilogc:\log\backup.log
Если в указанном имени не содержится путь, файл с протоколом будет создан в папке %APPDATA%\WinRAR.
Если в общих параметрах программы включён параметр "Запись протокола ошибок", то сообщения об ошибках будут записываться в файл rar.log даже без указания ключа -ilog.
И ввобще, где следует вставлять ключи???
Синтаксис командной строки. WinRAR допускает управление из командной строки. Общий синтаксис командной строки таков:
WinRAR <команда> -<ключ1> -<ключN> <архив> <файлы…> <@файл-список…> <путь для извлечения\>
В моем случае:
@echo off c: cd \backup\egrip for %%a in (*.dat) do "c:\program files\winrar\winrar.exe" m -ep ..\rar\%%a.rar %%a cd ..\taxes for %%a in (*.dat) do "c:\program files\winrar\winrar.exe" m -ep ..\rar\%%a.rar %%a
Куда вставлять ключи???
Цитата:
Команда M — переместить в архив файлы и папки. После успешного завершения архивации файлы и папки удаляются.
А полученному архиву доверять можно? »Если не было ошибок при создании архива, то исходные файлы удаляются. Если произошли какие-то ошибки - то нет.
Тестирование можно добавить? »Почему бы и нет. Просто время архивирования увеличится в ~1.5 раза. Если не критично - пусть проверяет.
Куда вставлять ключи??? »
В приведенных ранее примерах m - это команда, -ep это ключ. Остальные ключи добавляем по вкусу перед/после -ep
Например,
for %%a in (*.dat) do "c:\program files\winrar\winrar.exe" m -ep -T -rr5p -ilogc:\log\backup.log ..\rar\%%a.rar %%a
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.