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 строки кода
----------------------------------------
Как-то так...
Приношу извинение что пост-вопрос стал большим, старался сократить.
Помогите.
Всем откликнувшимся заранее ОГРОМНОЕ СПАСИБО!
Возможно, моя логика не верна - мозг спекся, от множества задач.
Поэтому ищу совета, помощи:
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 строки кода
----------------------------------------
Как-то так...
Приношу извинение что пост-вопрос стал большим, старался сократить.
Помогите.
Всем откликнувшимся заранее ОГРОМНОЕ СПАСИБО!