izhevsk.ru Главная /  Софтинки /  Автоматическое создание RAR
тема закрыта

Имя:
Пароль:
 зарегистрироваться | Войти через
напоминатель пароля
Автоматическое создание RAR
НОВАЯ ТЕМА правила | поиск | картинки | | | о форуме |
  Новости | Авто | Недвижимость | Работа | Бизнес | Стройка | Объявления | Совместная покупка | | |
  следующая тема | предыдущая тема
Автор Тема:   Автоматическое создание RAR   версия для печати
Дент
Рейтинг: 88/-55
-- написано 22-3-2016 18:39 Дент

Ребята, ситуация следующая: Представьте, что имеется некая папка и в ней тыщща мильонов разных файлов. Задача создать другую папку в которой каждый файл будет представлять собой отдельный запароленный RAR архив с именем как у исходного файла. Т.е. text.txt-> text.rar, photo.jpg -> photo.rar и т.п. Вручную архивировать файлы по одному очень долго и трудоёмко. Может можно сделать какой-нибудь батник для решения этой задачи?
Показать текст сообщения полностью
Tips
Рейтинг: 248/-61
-- написано 22-3-2016 18:50 Tips

Froz
Рейтинг: 56/-2
-- написано 22-3-2016 20:40 Froz

files2separate7z.cmd (CP866)
положить в папку с тыщемильоном файлов.
code:

@echo off
for %%i in ("%~dp0*.*") do "%programfiles%\7-Zip\7z" a "%~dp0%%~ni.7z" "%%i" -mx9
del "%~dp0%~n0.7z"


для рара ~аналогично (другие ключи), но рар платный, поэтому 7z.
Также если попадутся файлы file1.txt и file1.doc то будет вопль архиватора на дубль архива, в этом случае меняем %~ni на %~nxi, тогда архивы будут выглядеть как file1.txt.7z и file1.doc.7z.

история редактирования

ELForcer
Рейтинг: 124/-54
-- написано 23-3-2016 11:30 ELForcer

Могу сделать на 7z. Уже готовые алгоритмы есть.
Даже с проверкой TTH исходного файла и архива.

история редактирования

ELForcer
Рейтинг: 124/-54
-- написано 23-3-2016 13:31 ELForcer

@Дент а вы не очередной шифратор (Encoder) хотите сделать случайно?))
А ТЗ прям один к одному)
jaw
Рейтинг: 4/0
-- написано 23-3-2016 14:11 jaw

quote:
Originally posted by Дент:

photo.jpg -> photo.rar



ндя... Вы в курсе, что архив вполне может оказаться больше по объёму, чем исходный jpg?
Дент
Рейтинг: 88/-55
-- написано 23-3-2016 15:12 Дент

quote:
Originally posted by jaw:

Вы в курсе, что архив вполне может оказаться больше по объёму, чем исходный jpg?



Это не имеет значения

quote:
Originally posted by ELForcer:

@Дент а вы не очередной шифратор (Encoder) хотите сделать случайно?))
А ТЗ прям один к одному)



Именно. Есть у меня несколько аккаунтов на мейл.ру и в каждом по бесплатному облаку на терабайт. Хочу хранить в нём всякую всячину, но, разумеется, не в открытом виде. Пробовал разные решения - большинство из них не удобны по тем или иным причинам. Либо шифрование ненадёжное, либо кроссплатформенности нет, либо приходится хранить на локальном жестком диске по 2 копии файлов - одну зашифрованную, синхронизирующуюся с облаком, а вторую расшифрованную, рабочую.

RAR, мне кажется, был бы здесь весьма хорош.
1) Надёжность. Насколько мне известно, RAR архив с хорошим паролем типа "Ехали меdведи на vелоSипеде_954" взломать за приемлемое время невозможно.
2) Кроссплатформенность тоже налицо, RAR есть хоть на винде, хоть на андроиде, хоть на линупсе, хоть где..
3) Не нужно хранить, как например при работе с Boxcryptor, Cryptonite и их собратьями по EncFS, по 2 копии файлов на диске.

quote:
Изначально написано Froz:
files2separate7z.cmd (CP866)
положить в папку с тыщемильоном файлов.
code:

@echo off
for %%i in ("%~dp0*.*") do "%programfiles%\7-Zip\7z" a "%~dp0%%~ni.7z" "%%i" -mx9
del "%~dp0%~n0.7z"


для рара ~аналогично (другие ключи), но рар платный, поэтому 7z.
Также если попадутся файлы file1.txt и file1.doc то будет вопль архиватора на дубль архива, в этом случае меняем %~ni на %~nxi, тогда архивы будут выглядеть как file1.txt.7z и file1.doc.7z.


Спасибо. Похоже это то что надо.

история редактирования

Tips
Рейтинг: 248/-61
-- написано 23-3-2016 15:19 Tips

quote:
Насколько мне известно, RAR архив с хорошим паролем типа "Ехали меdведи на vелоSипеде_954" взломать за приемлемое время невозможно.

на бытовой кофемолке да, на более менее игровой машине время вполне приемлемо, не говоря о датацентре где те же файлы лежат)
Дент
Рейтинг: 88/-55
-- написано 23-3-2016 15:32 Дент

ELForcer
Рейтинг: 124/-54
-- написано 23-3-2016 15:41 ELForcer

Квантовый компьютер взломает гораздо быстрее, когда допилят до конца))
Дент
Рейтинг: 88/-55
-- написано 23-3-2016 15:51 Дент

Да никто не будет ломать ваши пароли. В случае острой необходимости просто придут с паяльником и всё.
Tips
Рейтинг: 248/-61
-- написано 23-3-2016 16:47 Tips

картинки веселые, только вот давно не правда
asK2jbeE?j
на i7 920\12Gb\2xHD4850 512Mb\6xST3250420AS RAID0 в 2008 сломался за 6 часов, и это еще не самый топ вариант алгоритма был. Теперь посмотрите что предсказывают эти сервисы
Дент
Рейтинг: 88/-55
-- написано 30-3-2016 15:17 Дент

Нашёл на просторах Сети батник для пофайловой рекурсивной архивации RAR с воссозданием структуры каталогов.
Автору понадобилось то же, что и мне: сделать копию каталога с файлами и подкаталогами в виде аналогичного каталога, но с RAR архивами каждого файла. Набросал он батничек:

==========================================================
@echo off
@echo off
Setlocal EnableDelayedExpansion

rem Путь к архиватору (консольному)
set rar="rar.exe"

rem Первый параметр - каталог, в котором лежат файлы для архивирования
set Src=%1
if "%Src%" EQU "" goto help

rem Второй параметр - Путь к каталогу куда будут помещаться архивы
set Dst=%2
if "%Dst%" EQU "" goto help

rem Третий параметр - расширение файлов
set ext=*.*
if "%3" NEQ "" (set ext=%3)

rem Четвертый параметр - пароль для архива
if "%4" NEQ "" (set passw=-hp%4)

:: Пофайловое архивирование с воссозданием каталогов
for /f "delims=" %%i in ('dir /b /s /a-d "%Src%\%ext%"') do (
for /f "delims=" %%j in ("%%i") do (
if not exist "%Dst%%%~pj" (MD "%Dst%%%~pj" > nul)
%rar% a -ep1 -dh -idc -m1 %passw% "%Dst%%%~pj%%~nj" "%%j"
)
)

exit

:help
@echo Пофайловая архивация с воссозданием структуры каталогов
@echo Вызов: %~nx0 каталог_источник каталог_приемник [расширение_файлов] [пароль]
@echo.
@echo Пример1: %~nx0 c:\temp c:\temp1 *.jpg
@echo - архивация всех файлов с раширением jpg без пароля
@echo.
@echo Пример2: %~nx0 c:\temp c:\temp1 "" pupkin
@echo - архивация всех файлов с паролем pupkin

==========================================================

Что-то батник у меня не работает. Куда вставлять путь к архиватору понятно. Не понятно куда здесь вставлять путь к каталогу в котором лежат файлы для архивирования и путь к каталогу куда будут помещаться архивы и пароль? Может разъясните?

(с) Ссылка на страничку автора: http://shsweb.ru/programmirova...turyi-katalogov

история редактирования

Tips
Рейтинг: 248/-61
-- написано 30-3-2016 15:27 Tips

мммм так вроде в самом батнике черным и по белому написано что и куда
Дент
Рейтинг: 88/-55
-- написано 30-3-2016 15:37 Дент

Наверное, я тупой.

quote:
rem Первый параметр - каталог, в котором лежат файлы для архивирования
set Src=%1
if "%Src%" EQU "" goto help

Допустим, исходная папка C:\folder_1. Куда это вставлять? Пытался:

quote:
set Src="C:\folder_1"
if "%Src%" EQU "" goto help

и так:

quote:
set Src=%1
if "%Src%" EQU "C:\folder_1" goto help

НЕ РАБОТАЕТ. В первом случае при запуске батника чёрное окно появляется на долю секунды и сразу закрывается, видимо, с какой-то ошибкой. Не успеваю прочитать. Во втором случае вижу пустое чёрное окно. Ничего не происходит, кроме зверской 50% загрузки ЦП (четырехъядерный, 3,2 ГГц) процессом cmd.exe. В исходной папке всего штук 5 файлов на 5 мб общим весом. В папке назначения пусто.

PS: Ну я же не спец по программированию...

история редактирования

Дент
Рейтинг: 88/-55
-- написано 30-3-2016 16:01 Дент

Вот текст батника в моей редакции:

quote:
@echo off
@echo off
Setlocal EnableDelayedExpansion

rem Путь к архиватору (консольному)
set rar="C:\Program Files\WinRAR\rar.exe"

rem Первый параметр - каталог C:\src, в котором лежат файлы для архивирования
set Src=%1
if "%Src%" EQU "C:\src" goto help

rem Второй параметр - Путь к каталогу C:\dst куда будут помещаться архивы
set Dst=%2
if "%Dst%" EQU "C:\dst" goto help

rem Третий параметр - расширение файлов
set ext=*.*
if "%3" NEQ "" (set ext=%3)

rem Четвертый параметр - пароль для архива
if "%4" NEQ "" (set passw=-hp%4)

:: Пофайловое архивирование с воссозданием каталогов
for /f "delims=" %%i in ('dir /b /s /a-d "%Src%\%ext%"') do (
for /f "delims=" %%j in ("%%i") do (
if not exist "%Dst%%%~pj" (MD "%Dst%%%~pj" > nul)
%rar% a -ep1 -dh -idc -m1 %passw% "%Dst%%%~pj%%~nj" "%%j"
)
)

exit

:help
@echo Пофайловая архивация с воссозданием структуры каталогов
@echo Вызов: %~nx0 каталог_источник каталог_приемник [расширение_файлов] [пароль]
@echo.
@echo Пример1: %~nx0 c:\temp c:\temp1 *.jpg
@echo - архивация всех файлов с раширением jpg без пароля
@echo.
@echo Пример2: %~nx0 c:\temp c:\temp1 "" pupkin
@echo - архивация всех файлов с паролем pupkin

Третий и четвертый параметры не трогал. Там всё без изменений и дополнений. Батник не работает. Вижу пустое чёрное окно. Ничего не происходит, кроме зверской загрузки ЦП процессом cmd.exe.

Tips
Рейтинг: 248/-61
-- написано 30-3-2016 16:05 Tips

вызов в консоли: test.bat D:\Temp\test1 D:\Temp\test2 *.* P@$$W0rD
иными словами: [имя батника] [источник] [приемник] [пароль]

единственное но, надо поправить в оригинале - прописать полный путь до rar.exe или закинуть его в папку с батником или в system32

Дент
Рейтинг: 88/-55
-- написано 30-3-2016 16:21 Дент

Спасибо! Заработало! )))))))))))))))))))))))))))))))))))
Дент
Рейтинг: 88/-55
-- написано 30-3-2016 16:27 Дент

Небольшой облом. Имена архивов портятся, если в имени есть точка. Получается просто файл с именем без расширения rar.
Надо или подправить исходный батник или создать новый, который искал бы в папке назначения файлы без расширения и переименовывал ьы их в rar.

Файл1.rar, Файл2.rar, файл3, Файл4.rar -> Файл1.rar, Файл2.rar, файл3.RAR Файл4.rar

история редактирования

Froz
Рейтинг: 56/-2
-- написано 30-3-2016 22:59 Froz

Если надо папку с подпапками пофайлово упаковать, то что-то типа этого:
code:

@for /r "%~dp0" %%f in (*) do if /i not "%%~xf"==".7z" "%programfiles%\7-Zip\7z.exe" a "%%~dpf%%~nxf.7z" "%%f" -mx9
@del "%~dp0%~n0.7z"


Могут быть косяки, надо тестировать.

история редактирования

Дент
Рейтинг: 88/-55
-- написано 31-3-2016 08:45 Дент

@Froz, спасибо, но это для 7z.

quote:
если попадутся файлы file1.txt и file1.doc то будет вопль архиватора на дубль архива, в этом случае меняем %~ni на %~nxi

А в батнике из 13 поста можно так же сделать?

Froz
Рейтинг: 56/-2
-- написано 31-3-2016 10:59 Froz

quote:
в батнике из 13 поста

часто проще свой код написать чем разбираться в чужом


Можно попробовать %%~nj заменить на %%~nxj

%rar% a -ep1 -dh -idc -m1 %passw% "%Dst%%%~pj%%~nj" "%%j"
%rar% a -ep1 -dh -idc -m1 %passw% "%Dst%%%~pj%%~nxj" "%%j"

Дент
Рейтинг: 88/-55
-- написано 31-3-2016 17:53 Дент

Спасибо. Попробую.
Morituruz
Рейтинг: 100/-91
-- написано 4-4-2016 20:52 Morituruz

Первая же ссылка в гугле:
http://i.stack.imgur.com/ddWkL.png
+ полно всяких графических оболочек для архиваторов, например PeaZip, так что чем городить колхоз из батников лучше сначала ознакомиться с готовыми и бесплатными решениями.

И готовые колхозы с батниками тоже гуглятся:
http://www.cyberforum.ru/cmd-bat/thread764356.html

Ну а вообще это называется бэкап, и так бэкап не делают.

история редактирования

Дент
Рейтинг: 88/-55
-- написано 20-4-2016 17:45 Дент

@Morituruz

https://i.stack.imgur.com/ddWkL.png

Это что за софтина? Если PeaZip, то какой версии? Последняя на сегодня 6-я и там я не вижу функции "рекурсивно архивировать подпапки". Там вообще другой интерфейс, не такой, как на картинке.

история редактирования

Morituruz
Рейтинг: 100/-91
-- написано 20-4-2016 19:33 Morituruz

Это Total Commander, но я уже не уверен, что под ваши костыли подойдёт.
Повторю, что бэкап так не делают :-)
Wolf666
Рейтинг: 49/-21
-- написано 20-4-2016 23:56 Wolf666

А как сделать чтоб он не файлы каждый в свой архив архивировал, а каталоги?
Допустим: есть папка D:\хрень\ и в ней лежат папки хрень1, хрень2, хрень3, ..., хреньN. Надо заархивировать каждую папку например в D:\архивы\хрень1.7z, хрень2.7z, хрень3.7z, и т.д.
А ещё желательно, чтоб если в папке-получателе есть уже архивы хрень1.7z и хрень2.7z, то чтоб скрипт начинал архивировать сразу с папки хрень3
Такое возможно?
Morituruz
Рейтинг: 100/-91
-- написано 21-4-2016 00:13 Morituruz

Wolf666
не вижу фразы <проверил всё, что советовали выше, не помогло>
Froz
Рейтинг: 56/-2
-- написано 21-4-2016 11:16 Froz

quote:
Такое возможно?

если только один уровень папок то примерно так:
code:

@echo off
set SRC=D:\хрень
set DST=D:\архивы
for /D %%D in ("%SRC%\*") do if not exist "%DST%\%%~nD.7z" (
pushd "%SRC%"
"%programfiles%\7-Zip\7z.exe" a "%DST%\%%~nD.7z" "%%~nD\*" -mx9
popd
)

история редактирования

Wolf666
Рейтинг: 49/-21
-- написано 21-4-2016 22:09 Wolf666

quote:
Изначально написано Froz:

примерно так:



Благодарю! Ща запробуем)
Froz
Рейтинг: 56/-2
-- написано 22-4-2016 09:13 Froz

хотя лучше пуш и поп вынести из цикла, незачем дёргаться лишний раз
code:

@echo off
set SRC=D:\хрень
set DST=D:\архивы
pushd "%SRC%"
for /D %%D in (*) do if not exist "%DST%\%%~nD.7z" "%programfiles%\7-Zip\7z.exe" a "%DST%\%%~nD.7z" "%%~nD\*" -mx9
popd

Да и если какая-то папка первого уровня внутри будет пустая, то архиватор создаст пустой архив и не засунет туда саму пустую папку.

Wolf666
Рейтинг: 49/-21
-- написано 22-4-2016 13:33 Wolf666

*пошёл изучать синтаксис bat-файлов
Дент
Рейтинг: 88/-55
-- написано 22-4-2016 17:37 Дент

quote:
Originally posted by Morituruz:

Ну а вообще это называется бэкап, и так бэкап не делают.



А как делают? Просветите.
Была поставлена задача создать безопасное облачное хранение файлов таким образом, чтобы они были доступны на любом устройстве с любой ОС. Перепробовал множество шифровальщиков, но удовлетворяющих мои потребности не нашёл. Тот же boxcryptor, например, почему-то не может (хотя должен) расшифровать на ПК с виндой файл, зашифрованный в том же бокскрипторе под андроидом. И наоборот. С другими шифровальщиками ещё печальнее. Зашифрованный RAR в данном случае то что надо. Он имеется практически на любой ОС. Один минус. Качать и расшифровывать из-за одного маленького файла архив на десятки или сотни гигибайт совсем не комильфо. Поэтому и задался целью - а почему бы не создавать зашифрованные архивы пофайлово? И это получилось.
Froz
Рейтинг: 56/-2
-- написано 22-4-2016 20:47 Froz

quote:
удовлетворяющих

VeraCrypt + ownCloud / BTSync / яндексдиск / etc ?

история редактирования

Дент
Рейтинг: 88/-55
-- написано 22-4-2016 21:11 Дент

Veracrypt для андроида не существует, во всяком случае, я не нашел.

Для дроида существует много шифровальщиков, но нет их версий для винды.
Для винды существует много шифровальщиков, но нет их версий для дроида.
Boxcryptor classic одна из самых удобных софтин, 9существует и для винды и для андроида, однако, они почему-то несовместимы. Файлы, зашифрованные под одной ОСью не открываются под другой, хотя метод шифрования в настройках одинаков AES256 и тут и там и пароль верен. Вот так всё грустно. Поэтому и обратил свой взгляд на rar.

история редактирования

Wolf666
Рейтинг: 49/-21
-- написано 24-4-2016 01:12 Wolf666

А если попробовать encfs? Под ведроидом есть, под форточками тоже, под линухом вроде тоже. Сам только планирую затестить, но как я это себе представляю: допустим, с дропбоксом, папка dropbox синхронизируется - её делаем хранилищем зашифрованных файлов. То есть, синхронизироваться будут именно зашифрованные файлы. А эту папку в свою очередь encfs'ом монтируем на каждом устройстве в нужную папку (пусть будет encfs). Соответственно, кидаем файлы в папку encfs, они на лету шифруются и в зашифрованном виде идут в папку dropbox, откуда синхронизируются на сервер и на другие устройства. На которых файл читается в обратной последовательности. В теории должно работать, на практике не тестил.
Froz
Рейтинг: 56/-2
-- написано 24-4-2016 12:10 Froz

quote:
Veracrypt для андроида

EDS/EDS Lite же прямо на скрине.
Теоретически: создаём на компе контейнер, кладём его в ядиск (у многих провов туда сейчас "локальная сеть" 100 мбит), лазим через ведро: офиц.ядискапп+EDS, виндокомп: NetBox-webdav (штатный плагин FAR Manager) или через монтирование webdav в эксплорере (инструкция в хелпе ядиска)
правда через сторонние webdav-софтины яндекс скорость режет.
Но вариант с шифрованными архивами тоже хорош, а для парольных 7z для ведра есть zarchiver.

история редактирования

Wolf666
Рейтинг: 49/-21
-- написано 24-4-2016 14:52 Wolf666

quote:
Изначально написано Froz:

через сторонние webdav-софтины яндекс скорость режет.



Причём, некисло Через встроенный виндовый клиент около 50-80 кбит/с максимум выдавало.

Кстати, а можно как-то родной яндексовской софтиной одновременно несколько аккаунтов подцепить?

история редактирования

Froz
Рейтинг: 56/-2
-- написано 25-4-2016 08:35 Froz

quote:
встроенный виндовый клиент

netbox на прове марк показывает в среднем 250 кбайт/сек, иногда доходит до 400.
quote:
родной яндексовской софтиной

никак, только если руками передёргивать в настройках логин и папку. Или автоматизировать линуксячьим консольным клиентом.

история редактирования

Дент
Рейтинг: 88/-55
-- написано 25-4-2016 23:27 Дент

Кстати, Boxcryptor Classic на винде и андроиде теперь дружат. Самый удобный способ шифрования заработал. Ура.

200x150 320x240 400x300 800x600    без переносов   
быстрый ответ   

подпись
следующая тема | предыдущая тема

Главная /  Софтинки /  Автоматическое создание RAR форумы izhevsk.ru

 
 
 
 
 
© ООО "Марк" 2020
 
Интернет-провайдер КК МАРК-ИТТ