LINUX.ORG.RU

Дамп сайта через консоль


0

0

Адреса немного зашифровал, ибо админы ресурса не очень дружелюбны...

Имеем ресурс с аудио-книгами для слепых по адресу http://ццц.аv3715.кг/library. Книги записаны в формате LКF (зашареный MP3) и запакованы в архив, который расположен на ftp://78.107.2-5-2.2-2-4/КНИГИ/. При том сам сайт аv3715 имеет адрес 213.189.197.13, и является только интерфейсом к ftp.

Проблема заключается в том, что с FTP можно скачивать только при помощи браузера FireFox и никем/ничем более. Возможно, эта проблема из-за кирилических именём FTP-каталогов, а, возможно, другие качатели просто забанены. Помогите сдампить сайт...

★★

другие качатели просто забанены

в curl и wget можно подменить user-agent. разрешаю тебе открыть ман и найти самому

anonymous
()

zzdnx

Проблема заключается в том, что с FTP можно скачивать только при помощи браузера FireFox и никем/ничем более. Возможно, эта проблема из-за кирилических именём FTP-каталогов

какая кодировка имён FTP каталогов? Вот её и юзайте. например преобразовать кодировку в 1251 можно так

YYY=$(echo $XXX | iconv -t cp1251)

zzdnx

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

вот, нашёл, раз вам ман к curl'у не открыть

-A/--user-agent <agent string> (HTTP) Specify the User-Agent string to send to the HTTP server. Some badly done CGIs fail if this field isn't set to «Mozilla/4.0». To encode blanks in the string, surround the string with single quote marks. This can also be set with the -H/--header option of course.

If this option is set more than once, the last one will be the one that's used.

drBatty ★★
()
Ответ на: комментарий от anonymous

user-agent, кодировка, для wget

О user-agent я прекрасно знаю... Но не знал, как написать представление мозилы, за которое большое спасибо kitar.

drBatty, о curl знаю, но пользоваться этой штукой не умею в силу плохо знания английского. Переводить лень. За конвертацию - спасибо. Метода забавная и простая... Но вот вопрос - как этим методом (curl + iconv) рекрсивно скачать ВЕСЬ КАТАЛОГ сайта?

zzdnx ★★
() автор топика
Ответ на: комментарий от kitar

anonymous и kitar

ОГРОМНОЕ СПАСИБИЩЕ! когда я представился мозилой - качание пошло! Вызвал миррорить (wget -m)...

Новая проблема - плохая кодировка имён скачаных файлов... Причина, думаю, вот в чём:

=> «\321\345\360\340\377 \352\356\370\352\340 (\314\350\355\340\345\342\340 \315.).rar» Устанавливается соединение с 78.1-0-7.2-5-2.2-2-4:21... соединились. Регистрация под именем anonymous ... Регистрация прошла успешно! ==> SYST ... сделано. ==> PWD ... сделано. ==> TYPE I ... готово. ==> CWD (1) /\312\315\310\303\310/\300\341\360\340\354\366\345\342\340 \315 ... сделано. ==> SIZE \321\345\360\340\377 \352\356\370\352\340 (\314\350\355\340\345\342\340 \315.).rar ... 27780286 ==> PASV ... сделано. ==> RETR \321\345\360\340\377 \352\356\370\352\340 (\314\350\355\340\345\342\340 \315.).rar ... сделано. Длина: 27780286 (26M) (не достоверно)

2012-03-03 18:35:14 (231 KB/s) - «\321\345\360\340\377 \352\356\370\352\340 (\314\350\355\340\345\342\340 \315.).rar» saved [27780286]

Как бороться? Ubunt`e пофиг на имена, но нужно это сделать как-то по-человечески...

zzdnx ★★
() автор топика
Ответ на: комментарий от AITap

convmv

То, что надо! Осталось только понять из какой и в какую кодировку преобразовать... Как определить кодировку имени файла? Моя локаль UTF-8. Пробовал:

convmv -r --notest ./*
Your Perl version has fleas #37757 #49830
ascii doesn't cover all needed characters for: "./�����/_������������/���������� �� ��������, 6 ����� (������������ �.)(preview).mp3"
ascii doesn't cover all needed characters for: "./�����/_������������/���������� �� ��������, 6 ����� (������������ �.).rar"
ascii doesn't cover all needed characters for: "./�����/_������������"
ascii doesn't cover all needed characters for: "./�����"
To prevent damage to your files, we won't continue.
First fix this or correct options!

zzdnx ★★
() автор топика
Ответ на: convmv от zzdnx

1) convmv -f cp1251 -t utf8 ./*
2) Проверяете результат
3) Только после (2) добавляете --notest

AITap ★★★★★
()
Ответ на: convmv от zzdnx

можешь воспользоваться «декодером» от Темы Лебедева или же попытаться iconv'ом подобрать.

silw ★★★★★
()
Ответ на: convmv от zzdnx

man file

kitar ★★★★★
()
Ответ на: convmv -r -f cp1251 -t utf8 --notest ./* от zzdnx

Новая проблема:

/�����/.listing: Неверный или неполный мультибайтный или широкий знак

Именно это выдал мне wget, когда я начал зеркалить на диск с NTFS. Дело в том что домашний каталог не очень большой и не вместит весь сайт (даже его 0,1...). Делать образ диска с ExT и монтировать его - извращение... Есть идеи?

zzdnx ★★
() автор топика
Ответ на: Новая проблема: от zzdnx

zzdnx

менно это выдал мне wget, когда я начал зеркалить на диск с NTFS.

дык вы на самом деле качаете файлы с именами в cp1251, потом эти имена перекодируете. EXT такое издевательство допускает, а ntfs нет. Как лечить - я не знаю. Разве что в скрипте обходить каталоги, и сохранять файлы по одному, с нормальным именем.

drBatty ★★
()
Ответ на: комментарий от drBatty

Не вариант. Мечу тему как рещёную... Поднятый вопрос не касается нашей темы.

В линукс можно сделать динамический том/образ диска и отформатировав в ExT смонтировать его в каталог? LVM это поддерживает?

zzdnx ★★
() автор топика
Ответ на: комментарий от zzdnx

zzdnx

Не вариант.

почему-же? я примерно так делал, работает.

zzdnx

В линукс можно сделать динамический том/образ диска и отформатировав в ExT

легко!
берёте файл нужной величины, и mkfs.ext4 image_file

смонтировать его можно так mount -o loop image_file mount_point

говорят, тормозной зело. Без понятия. Ещё не пробовал на NTFS.

drBatty ★★
()
Ответ на: комментарий от drBatty

Это статика и я умею её делать. Мне нужен динамический диск, так как объём закачиваемого неизвестен, а иметь файл на 1 ТВ просто так, как мусор - глупо...

zzdnx ★★
() автор топика
Ответ на: комментарий от zzdnx

zzdnx

Это статика и я умею её делать. Мне нужен динамический диск

не нужен, потому-что можно предварительно посчитать объём. (например curl --list-only). Как я понимаю, ваша цель скачать всё?

drBatty ★★
()
Ответ на: комментарий от drBatty

Ваша цель скачать всё?

В яблочко. Но тут есть ещё одна проблема - всё это должно выполняться на удалённом компьютере, которым пользуется слепой человек... Набор его действий ограничен, а я постоянно на связи быть не могу. Да и что делать, когда книгатека на ресурсе пополнится???

Вообще, изначальная идея состояла в зеркале сайта и поддержании этого зеркала в актуальном состоянии. Хотя я могу смириться с переименовыванием файлов, но я категорически против того, чтобы занимать большой объём одним файлом, который при этом будет по бОльшей части бесполезен и неиспользуем...

Может, поколдовать с параметрами монтирования NTFS-диска?

zzdnx ★★
() автор топика
Ответ на: Ваша цель скачать всё? от zzdnx

zzdnx

В яблочко. Но тут есть ещё одна проблема - всё это должно выполняться на удалённом компьютере, которым пользуется слепой человек... Набор его действий ограничен, а я постоянно на связи быть не могу. Да и что делать, когда книгатека на ресурсе пополнится???

Вообще, изначальная идея состояла в зеркале сайта и поддержании этого зеркала в актуальном состоянии. Хотя я могу смириться с переименовыванием файлов, но я категорически против того, чтобы занимать большой объём одним файлом, который при этом будет по бОльшей части бесполезен и неиспользуем...

всё потому-что вы изначально не так делаете. Надо качать файлы по одному, скриптом. Тогда они сразу будут ложится на ФС в верной кодировке, и проблем не будет. В вашем случае скрипт может ещё и сообщать о новых/изменившихся файлах, что полезно и для зрячих, и уж тем более для слепых. Вы хотели сделать «как проще», а получилось ессно как всегда - вы утратили контроль процесса закачки. Постфактум оно да, ректально получается.

zzdnx

Может, поколдовать с параметрами монтирования NTFS-диска?

насколько я знаю, нет там такого параметра. Вот в FAT есть codepage, а в NTFS нету.

drBatty ★★
()
Ответ на: комментарий от drBatty

Хотели сделать "как проще", а получилось...

Ну так научите как надо... Задача тупа до безопразия - дамп сайта со всеми каталогами и поддерживание зеркала в актуальном состоянии (только докачиваем новое). Зеркалируем на диск с NTFS, и в нашем распоряжении Ubuntu Linux со всеми сопутствующими возможностями и проблемами.

Я решил сделать скриптами так: Зеркало создаём wget`ом, и когда готово - копируем его, и в копии правим кодировку, радуемся. Когда нужно обновить зеркало - сносим копию, обновляем оригинал зеркала, снова копируем и правим копию. (сам понимаю какая это глупость, но другого что-то не остаётся...)

zzdnx ★★
() автор топика
Ответ на: комментарий от drBatty

насколько я знаю, нет там такого параметра.

Есть что-то такое: codepage=cp866,iocharset=utf8

Может это оно и есть?

zzdnx ★★
() автор топика

zzdnx

Ну так научите как надо... Задача тупа до безопразия - дамп сайта со всеми каталогами и поддерживание зеркала в актуальном состоянии

ну начнём с того, что никакой юзер-агент там не нужен. Вам какую-то ересь подсказали, такой фишки в FTP отродясь не было. Треки прекрасно стягиваются вашим любимым wget'ом

$ wget -O 1.mp3 "ftp://78.107.2-5-2.2-2-4/%CA%CD%C8%C3%C8/%DF%F5%EE%ED%F2%EE%E2%20%C0/%D0%EE%EC%E0%ED%20%F1%20%EC%E5%F0%F2%E2%EE%E9%20%E4%E5%E2%F3%F8%EA%EE%E9%20(%C1%F0%EE%F6%EA%E0%FF%20%CB.)(preview).mp3"
...
2012-03-03 17:54:36 (280 KB/s) - «1.mp3» saved [724270]

$ mpg123 1.mp3 
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layers 1, 2 and 3
	version 1.13.3; written and copyright by Michael Hipp and others
	free software (LGPL/GPL) without any warranty but with best wishes

Playing MPEG stream 1 of 1: 1.mp3 ...
MPEG 2.0 layer III, 48 kbit/s, 22050 Hz mono
^C
[0:23] Decoding of 1.mp3 finished.
Обратите внимание на имя файла - я его задал в команде. Список каталогов можно получить командой
$ wget -O - "ftp://78.107.2-5-2.2-2-4"
ну а потом выдёргиваете из списка ссылку на каталог, и рекурсивно обходите их все. Выдёргивать ссылки удобно sed'ом (см. мою книжку). Ну и так для каждого файла. Долго конечно, но вам-то что? Работает скрипт, а не вы :-)

zzdnx

Может это оно и есть?

оно, но разве NTFS это поддерживает? Ну попробуйте конечно...

drBatty ★★
()
Ответ на: комментарий от drBatty

drBatty

%CA%CD%C8%C3%C8

как это перевести в человеческий вид я тоже уже писал.

drBatty ★★
()
Ответ на: комментарий от drBatty

но разве NTFS это поддерживает?

Да, уже давно использую эти параметры монтирования, чтобы корректно отображалась кирилица в именах, ибо диск использовался под разными ОС поочерёдно.

%XX - HEX-код, если я правильно понимаю, и перевести на русский не проблема.

Что касается sed`а - хороший вариант))) Я плохо представлял как получить список каталогов... Теперь знаю, и проблем быть не должно.

zzdnx ★★
() автор топика
Ответ на: комментарий от zzdnx

zzdnx

Да, уже давно использую эти параметры монтирования, чтобы корректно отображалась кирилица в именах, ибо диск использовался под разными ОС поочерёдно.

наверное у меня не установлен ntfs-3g. Потому в мануале и нет некоторых опций.

drBatty ★★
()
Ответ на: комментарий от drBatty

А у меня как раз именно ntfs-3g. Так что есть возможность попробовать... Какие параметры монтирования ntfs-3g стоит использовать, чтобы избавиться от несовпадения кодировок? Можно попробовать решить этот вопрос и проблема слива wget -m будет решена в лоб и окончательно.

zzdnx ★★
() автор топика
Ответ на: комментарий от zzdnx

zzdnx

Какие параметры монтирования ntfs-3g стоит использовать, чтобы избавиться от несовпадения кодировок?

без понятия. наверное cp1251.

drBatty ★★
()
Ответ на: комментарий от drBatty

Сейчас нет времени тестить. До понедельника вопрос отложен... Отпишусь по результатам. Если не прокатит монтирование с кодировкой - напишу скрипт.

Большое всем спасибо за участие!

zzdnx ★★
() автор топика
Ответ на: комментарий от zzdnx

Избавляемся от очередного велосипеда!

curlftpfs 78.107.2-5-2.2-2-4/ /media/ftp/ -o allow_other,modules=iconv,from_code=CP1251,to_code=UTF8 -s

Желательно дописать в конец /etc/rc.local, если нужно монтировать при загрузке системы, и ещё - каталог /media/ftp/ должен существовать.

zzdnx ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.