Рекурсивная упаковка bzip2+upload ftp

Столкнулись с проблемой в использовании Far? Здесь можно получить помощь.
Post Reply
v1r11
Posts: 5
Joined: Mon 18 Jul, 2016 22:39

Рекурсивная упаковка bzip2+upload ftp

Post by v1r11 »

Hi All,

периодически требуется вручную архивировать вложенные папки с файлами в формате bz2 и выкладывать их по ftp.

Как можно автоматизировать данный процесс?

Заранее благодарю за ответы.
v1r11
Posts: 5
Joined: Mon 18 Jul, 2016 22:39

Рекурсивная упаковка bzip2+upload ftp

Post by v1r11 »

Спасибо за попытку, но если там есть вложенные папки, никакой рекурсии не происходит и не может произойти в силу ограничений bzip2, в котором нет поддержки упаковки папок.

Кроме того, мне нужно эту операцию сделать с помощью FAR, почему я сюда и обратился.

Выделить требуемую папку, выбрать пункт в меню и получить на выходе дерево с упакованными файлами, и желательно результат отправить через netbox (но и wput тоже годно).
2useven10
Posts: 5232
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 315 times

Рекурсивная упаковка bzip2+upload ftp

Post by 2useven10 »

ЕМНИП bzip2 просто сжимает данные, никакой информации об именах и тем более структуре он не хранит.
Поэтому эту работу должен выполнить кто-то другой, стандарный способ tar -> bzip2.
Можно отдельными утилитами, можно с помощью 7z.
Засылать через netbox не умею, у меня на него аллергия.
v1r11
Posts: 5
Joined: Mon 18 Jul, 2016 22:39

Рекурсивная упаковка bzip2+upload ftp

Post by v1r11 »

Нельзя использовать tar. Файлы bz2 потом качают клиенты и их ПО поддерживает только bz2.

Вопрос решается скриптом обхода всех папок. Потом его нужно присобачить к фару.
2useven10
Posts: 5232
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 315 times

Рекурсивная упаковка bzip2+upload ftp

Post by 2useven10 »

v1r11 wrote: Вопрос решается скриптом обхода всех папок. Потом его нужно присобачить к фару.
Фактически нужен скрипт реализующий ф-и tar - рекурсивный сбор потока данных из каталога и обратное восстановление.
2useven10
Posts: 5232
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 315 times

Рекурсивная упаковка bzip2+upload ftp

Post by 2useven10 »

а зачем такие сложности?
если фар у клиентов стоит - там есть arclite со всеми его возможностями.
v1r11
Posts: 5
Joined: Mon 18 Jul, 2016 22:39

Рекурсивная упаковка bzip2+upload ftp

Post by v1r11 »

У клиентов проприетарное ПО. Поэтому им нужно скармливать только bz2 без промежуточных упаковок.
User avatar
zg
zero-gravity
Posts: 6036
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Рекурсивная упаковка bzip2+upload ftp

Post by zg »

в чём проблема организовать обход папок рекурсивно через for /d?
2useven10
Posts: 5232
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 315 times

Рекурсивная упаковка bzip2+upload ftp

Post by 2useven10 »

zg wrote: в чём проблема организовать обход папок рекурсивно через for /d?
Очевидно, что просто обхода недостаточно, надо сохранить файловую структуру (имена, даты, атрибуты?...).
К тому же это никак не поможет восстановить файлы на клиентской стороне где 'только bz2'.
User avatar
zg
zero-gravity
Posts: 6036
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Рекурсивная упаковка bzip2+upload ftp

Post by zg »

2useven10 wrote:Очевидно, что просто обхода недостаточно, надо сохранить файловую структуру (имена, даты, атрибуты?...).
вы что, издеваетесь? локально мы зашли в папку и у нас есть её путь, сформировать путь на фтп с учётом этой папки несложно, дальше даже делать ничего не надо, wput по умолчанию создаёт папку на ftp, если её нет.
2useven10
Posts: 5232
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 315 times

Рекурсивная упаковка bzip2+upload ftp

Post by 2useven10 »

v1r11 wrote: периодически требуется вручную архивировать вложенные папки с файлами в формате bz2 и выкладывать их по ftp.
Я это интерпретирую - как один архив на папку с последующей передачей на ftp, а не передачу индивидуальных файлов (даже упакованных).
User avatar
zg
zero-gravity
Posts: 6036
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Рекурсивная упаковка bzip2+upload ftp

Post by zg »

2useven10 wrote:
v1r11 wrote: периодически требуется вручную архивировать вложенные папки с файлами в формате bz2 и выкладывать их по ftp.
Я это интерпретирую - как один архив на папку с последующей передачей на ftp, а не передачу индивидуальных файлов (даже упакованных).
первый вариант невозможен и топикстартер об этом знает:
v1r11 wrote:Спасибо за попытку, но если там есть вложенные папки, никакой рекурсии не происходит и не может произойти в силу ограничений bzip2, в котором нет поддержки упаковки папок.
более того, интерпретировать вот это иначе, как 1 файл -> 1 архив у меня не получается:
v1r11 wrote:Выделить требуемую папку, выбрать пункт в меню и получить на выходе дерево с упакованными файлами, и желательно результат отправить через netbox (но и wput тоже годно).
v1r11
Posts: 5
Joined: Mon 18 Jul, 2016 22:39

Рекурсивная упаковка bzip2+upload ftp

Post by v1r11 »

Для решения такой задачи есть и такой вариант - сжать целевое дерево чем угодно и передать на сервер, где его обработает баш и пережмет как надо. Но на тот сервер нет доступа, только фтп. Соответственно он отпадает.

Эту задачу можно решать посредством lua, написав плагин с настройками. Это красивый вариант. И другим юзерам понравится.

Или можно взять и написать рекурсию в cmd/powershell, и потом передавать из фара в скрипт параметром целевую папку и уже сам скрипт будет паковать и отправлять файлы.
EGez
Posts: 145
Joined: Thu 04 Oct, 2012 13:53
Location: Hamburg, DE
Has thanked: 2 times
Been thanked: 2 times

Рекурсивная упаковка bzip2+upload ftp

Post by EGez »

v1r11 wrote: периодически требуется вручную архивировать вложенные папки с файлами в формате bz2 и выкладывать их по ftp.
Это обязательно в Far'е делать?

Т.к. bzip2 в принципе файловой структуры не поддерживает, будем исходить из того, что один файл - один архив.

Тогда можно вот таким скриптом: (предполагает наличия MSYS2/MINGW/Cygwin или прочих аналогов)

Code: Select all

#!/bin/bash

dir="/d/example_path"

find "${dir}" -type f -not -name \*.bz2 -exec bzip2 --best {} +
wput [option]... "${dir}" ftp://...
Аргументы для wput придется дополнить самому.
Post Reply

Return to “Нужна помощь”