Войти

Показать полную графическую версию : Ищу помощи: CMD 7zip - разно-уровневая архивация, по выбранным расширениям, для много


blacks2
12-01-2021, 06:16
Здравствуйте.

Возможно, моя логика не верна - мозг спекся, от множества задач.
Поэтому ищу совета, помощи:



CMD БЕКАПЕР:
Архивация посредством 7zip,
С раздельным сжатием:
- 1. архивизация папок, исключая по расширению файлы что плохо жмутся (jpg, png, zip, mp3...)
- 2. далее апдейт созданного архива, добавляя файлы исключенные ранее, но с нулевым сжатием в 7zip
= уменьшение времени на сжатие

пример:
7za.exe a -v1000m -ssw -bsp2 -mx=9 -xr@list_exclusions.lst "C:\tmp\test.7z" "C:\tmp\src\"
7za.exe u -v1000m -ssw -bsp2 -mx0 -i@list_exclusions.lst "C:\tmp\test.7z" "C:\tmp\src\"

результат:
работает, если создавать однотомный архив
Но апдейт (7za.exe u) многотомных архивов (-v1000m) - оказался не возможен, средствами 7zip...



ВОЗНИКЛА ЗАДАЧА:
Сохранив алгоритм раздельного сжатия для разных расширений,
Создавать многотомные архивы.
Многотомные – т.к. на облачных хранилищах есть ограничение на размер файла

Ищу решение обхода в 7zip, или ошибку в приведённом примере выше




ПРИДУМАННЫЕ ВАРИАНТЫ:


v 1.0
Не придуманное, упущенное по глупости, по незнанию...




v 2.0
Раз "многотомности нет" = делаем отдельные архивы 0=)
Делим архивируемую папку на -сжатое и -не сжатое.

получаем:
test_papka__A_compress.7z.000 -сжатое
test_papka__A_compress.7z.001 -сжатое
...
test_papka__B_NOcompress.7z.000 -не сжатое (jpg, png, zip, mp3...)
test_papka__B_NOcompress.7z.001 -не сжатое (jpg, png, zip, mp3...)
...


Пример: -ir!%bdir%\*.jpg -ir!%bdir%\*.gif -ir!%bdir%\*.mov
Итоги: ХЗ - тк длинная строчка получится (у меня 40 исключаемых расширений)… Зато всего 2-3 строки

set bdir=C:\tmp\src
7za.exe a -v1000m -ssw -bsp2 -mx=9 -xr@list_exclusions.lst "C:\tmp\test_papka__A_compress.7z" "%bdir%\"
7za.exe a -v1000m -ssw -bsp2 -mx=0 "C:\tmp\test_papka__B_NOcompress.7z" -ir!%bdir%\*.jpg -ir!%bdir%\*.gif -ir!%bdir%\*.mov




v 3.0
А если добавиться функция: архивация 7zip по списку файлов: @"list_for_bkup.lst"

7za.exe a -v1000m -ssw -bsp2 -mx=9 -xr@list_exclusions.lst "C:\tmp\test_papka__A_compress.7z" @"list_for_bkup.lst"
7za.exe u -v1000m -ssw -bsp2 -mx0 -i@list_exclusions.lst "C:\tmp\test_papka__B_NOcompress.7z" @"list_for_bkup.lst"


Тогда, способы созданные выше, как понимаю уже не рабочие.. придется что-то примеров ниже:
Но к сожалению, знаний в циклах/в данных примерах у меня не много...
- полноценно реализовать данный вариант самостоятельно не могу =(
* ниже приведены просто примеры, явно не рабочие

set bdir=C:\tmp\src
FOR /R %%F IN (*.jpg, *.gif, *.mov) DO (7za.exe a -mx=0 "%bdir%\test_papka__B_NOcompress.7z" @"list_for_bkup.lst" %%f)

set bdir=C:\tmp\src
for %%a in (jpg, gif, mov) do (
for /f "delims=" %%b In ('dir /b /s /a-d "%bdir%\*.%%a" 2^>nul') do (
"7za.exe" a -mx=0 "%bdir%\test_papka__B_NOcompress.7z" @"list_for_bkup.lst" "%%~b"
))




v 4.0
Еще можно брать файлы+расширение на архивацию директории, определяемые списком.
Те перед каждой архивацией, каждую папку, сканировать на расширение и выводить в файл:
* Всё-таки наверно(?) правильней переводить в цикл...
** Опять же, как то реализовать своими силами - не знаю - не хватает ума, знаний

set bdir= C:\tmp\src\
goto listcreate
7z a -ssw -bsp2 -v1000m -mx=9 -xr@list_exclusions.lst "C:\tmp\test_papka__A_compress.7z" "%bdir%\"
7z a -ssw -bsp2 -v1000m -mx0 "C:\tmp\test_papka__B_NOcompress.7z" @"list_scan_B.lst"

:listcreate
dir /b %bdir%\*.jpg >> list_scan_B.lst
dir /b %bdir%\*.gif >> list_scan_B.lst

dir /b %bdir%\*.mov >> list_scan_B.lst
goto eof




v 5.0
test_A_compress.7z - архивируем исключив по -xr@list_exclusions.lst (jpg, png, zip, mp3...)
test_B_nocompress.7z - архивируем исключив по -xr@list_exclusions_all.lst все(!) существующие в мире расширений, кроме(!) небольшой группы вырезанные из данного списка: jpg, png, zip, mp3...

= две строки и все работает
= интересное решение

НО:
- где взять список с всеми-всеми расширениями? (искал, находил неполные)
- да, вроде, если, какое-то расширение будет пропущено в списке, то скорее всего файл с ним не слишком большой (крупные-известны)
- а заархивируется-то точно,
- упущенный же размер, упущенных расширений (не сжаты) - ну что же делать... - зато 2 строки кода


----------------------------------------
Как-то так...
Приношу извинение что пост-вопрос стал большим, старался сократить.

Помогите.

Всем откликнувшимся заранее ОГРОМНОЕ СПАСИБО!

DJ Mogarych
12-01-2021, 09:44
Освойте Cobian Backup.

blacks2
12-01-2021, 11:12
Освойте Cobian Backup. »
Благодарю =)
Еще в 2004-2006х его использовал... а может и раньше
На данный момент понимаю что для меня он не столь гибок чем bat/cmd

DJ Mogarych
12-01-2021, 11:17
bat/cmd, может, и более гибок, но не для вас, иначе вы не обращались бы сюда.

В Cobian Backup можно создать 2 задания - одно будет бэкапить несжимаемое, а другое - сжимаемое. И делить на части он умеет.




© OSzone.net 2001-2012