Войти

Показать полную графическую версию : WinRAR


Страниц : 1 2 3 [4] 5 6 7 8 9 10 11 12

Michael
15-11-2007, 09:31
Воссоздал твою структуру каталогов - все работает нормально, по крайней мере *.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 ошибок больше не было, файлы которые не нужно архивировать не архивировались.

Michael
16-11-2007, 08:33
Кстати, когда копировал твой код, у меня –x@c как и у тебя заменилось на Цx@c
Так что получается, что у тебя был неправильно забат один единственный символ - минус перед x@. Вот только вопрос - разве он относится не к первым 127 кодам тоблицы ASCII?

P.S. Хотя если этот символ меняется в разных кодировка, значит это не обычный "минус", а что-то другое

Kelo
16-11-2007, 11:45
Помогите плиз разобраться в 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 файл, скопировать полученный архив на другой комп в сети.

Помогите написать батник для сжатия и копирования. Заранее спасибо.

Vadikan
18-11-2007, 00:23
Помогите написать батник для сжатия и копирования. »
Такая формулировка подразумевает, что вы уже пытались что-то сделать (в противном случае было бы "напишите мне батник":)). Что конкретно? Возможно, имеет смысл обратиться в тему нужна помощь в написании *.bat файлов (http://forum.oszone.net/thread-56001.html)

Kelo
19-11-2007, 09:33
Сказать "напишите мне батник" совесть не позволила :). Проблема в том, чтобы указать rar писать каждый архив в свой файл.

DJ Mogarych
19-11-2007, 11:06
В SQL можно запускать bat-файлы сразу после выполнения резервных копий. Как это сделать конкретно, сказать не могу, т. к. нет SQL-сервера рядом, а не память не воспроизведу. Там надо просто поставить этот "батник" следующим очереди. Т. к. делается два бекапа, то и "батника" будет два.

Bat-файл должен перемещать только что полученный .dat в архив (.dat-файлов тоже два, так что нужно указать egrip*.dat и taxes*.dat для разных заданий резервного копирования), ну, и следующей строкой — копирование полученного архива на другой сервер.
Получается всего 2 строчки в каждом .bat.

А ещё лучше — использовать nnCron или xStarter. Чтобы и старые архивы автоматически удалять, например, да и ещё много что можно сделать полезного для автоматизации рутинной работы.

Michael
19-11-2007, 16:12
Не смотря на то, что мастер 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

HLT
19-11-2007, 16:47
изначально задача стояла не просто сделать архивы, а сжать, удалить оригинал и скопировать в сеть
Сжать каждый архив в своей папке, проверить архив, удалить сам 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 »Не люблю я всякие временные файлы... Если есть возможность обойтись без них - лучше без них.

Kelo
20-11-2007, 11:08
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

К сожалению все в одном архиве. И не исключил файлы по маске. Для пробы закинул туда файлы других расширений.

Что делать?

Michael
20-11-2007, 12:27
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.

Собственно, это просто более подробное рассмотрение моего первого сообщения в этой теме...

HLT
20-11-2007, 12:53
К сожалению все в одном архиве. »
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"


хм. какие-то глюки. мало того что сообщение раздвоилось, так еще и редактировать последнее не даёт :(

L-Soft
20-11-2007, 13:25
Возможно поможет - работает реально уже больше года. Батник запускается еженощно шедулером:


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, т.к. таким же образом делаются бэкапы и других данных
- после всего полученный файл закидывается в нужное место.

Kelo
20-11-2007, 17:40
@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

HLT
21-11-2007, 12:59
при таком раскладе в папке приемнике появляются 10 файлов^ »то есть файлы с расширением .dat ?
Значит, добавляем .rar в команду:

for %%a in (*.dat) do "c:\program files\winrar\winrar.exe" m -ep \\srveod\temp\%%a.rar %%a

Действительно, если указано расширение - то винрар не добавляет .rar самостоятельно
Кстати, те файлы, которые появились - это .rar архивы на самом деле )

Kelo
23-11-2007, 09:33
HLT »
Спасибо помогло. Дополнительно такой вопрос: что поменять тут
for %%a in (*.dat) do "c:\program files\winrar\winrar.exe" m -ep \\srveod\temp\%%a.rar %%a
чтобы архивный файл записывался там же, где находится и дат файл, а не другой комп.
Потом поробую уже батником копировать на другой сервер.

HLT
23-11-2007, 10:09
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

Kelo
23-11-2007, 13:31
Спасибо за помощь 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
Куда вставлять ключи???

HLT
23-11-2007, 14:23
Цитата:
Команда 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