Mirror Site
HTTrack, Скачивание сайта, site downloader, зеркалирование сайта, зеркало сайта, site mirror, копия сайта.
sudo apt install httrack webhttrack
webhttrack— выполняется в браузереhttrack— выполняется в командной строке
cd ~/websites
httrack http://ssi.test/ --path httrack --robots=0 --generate-errors=0 --urlhack --footer "" -%N0 --keep-alive --disable-security-limits --sockets=80 --connection-per-second=50 --max-rate=0 --timeout=30 --retries=10 --quiet --display
httrack http://www.appraiser.org.ua/ --path appraiser28 --robots=0 --generate-errors=0 --urlhack --footer "" -%N0 --keep-alive --disable-security-limits --sockets=80 --connection-per-second=50 --max-rate=0 --timeout=30 --retries=5 --quiet --display --advanced-progressinfo httrack http://www.appraiser.org.ua/ -O appraiser28 -s0 -o -%u -%F -%N0 -%k -%! -c80 -%c50 -A0 -T30 -R5 -q -%v -#p httrack http://www.obzor.com.ua/ --path obzor2 --robots=0 --generate-errors=0 --urlhack --footer "" -%N0 --keep-alive --disable-security-limits --sockets=80 --connection-per-second=50 --max-rate=0 --timeout=30 --retries=5 -*/*?page=* --quiet --display --advanced-progressinfo httrack http://www.obzor.com.ua/ -O obzor2 -s0 -o -%u -%F -%N0 -%k -%! -c80 -%c50 -A0 -T30 -R5 -*/*?page=* -q -%v -#p
httrack http://amoral.com.ua/ --path amoral2 --robots=0 --generate-errors=0 --urlhack --footer "" -%N0 --keep-alive --disable-security-limits --sockets=80 --connection-per-second=50 --max-rate=0 --timeout=30 --retries=5 --quiet --display
httrack http://krasnodon.org.ua/ --path krasnodon --robots=0 --generate-errors=0 --urlhack --footer "" -%N0 --keep-alive --disable-security-limits --sockets=80 --connection-per-second=50 --max-rate=0 --timeout=30 --retries=5 -*/*?page=* --quiet --display --advanced-progressinfo
httrack https://krasnodon.org.ua/ --path krasnodon3 --robots=0 --generate-errors=0 --urlhack --footer "" -%N0 --keep-alive --disable-security-limits --sockets=80 --connection-per-second=50 --max-rate=0 --timeout=30 --retries=10 --quiet --display
httrack https://www.assistantasad.org.ua/ --path assistantasad --robots=0 --generate-errors=0 --urlhack --footer "" -%N0 --keep-alive --disable-security-limits --sockets=80 --connection-per-second=50 --max-rate=0 --timeout=30 --retries=10 --quiet --display
httrack http://www.perspectiva-corp.com/ --path perspectiva --robots=0 --generate-errors=0 --urlhack --footer "" -%N0 --keep-alive --disable-security-limits --sockets=80 --connection-per-second=50 --max-rate=0 --timeout=30 --retries=10 --quiet --display
httrack http://voroshilov.org.ua/ --path voroshilov --robots=0 --generate-errors=0 --urlhack --footer "" -%N0 --keep-alive --disable-security-limits --sockets=80 --connection-per-second=50 --max-rate=0 --timeout=30 --retries=10 --quiet --display
httrack https://donest.zina.design/ --path donest --robots=0 --generate-errors=0 --urlhack --footer "" -%N0 --keep-alive --disable-security-limits --sockets=80 --connection-per-second=50 --max-rate=0 --timeout=30 --retries=10 --quiet --display
httrack https://f-krup.zina.design/ --path f-krup --robots=0 --generate-errors=0 --urlhack --footer "" -%N0 --keep-alive --disable-security-limits --sockets=80 --connection-per-second=50 --max-rate=0 --timeout=30 --retries=10 --quiet --display
httrack https://favoritecards.zina.design/ --path favoritecards --robots=0 --generate-errors=0 --urlhack --footer "" -%N0 --keep-alive --disable-security-limits --sockets=80 --connection-per-second=50 --max-rate=0 --timeout=30 --retries=10 --quiet --display
httrack http://192.168.33.10/ --path vagrant --robots=0 --generate-errors=0 --urlhack --footer "" -%N0 --keep-alive --disable-security-limits --sockets=80 --connection-per-second=50 --max-rate=0 --timeout=30 --retries=10 --quiet --display
Для более щадящего режима (медленнее, но меньше нагрузка на хостинг) изменить параметры:
--sockets=20 --connection-per-second=25
Для наиболее безопасного скачивания убрать параметры:
--disable-security-limits --sockets=80 --connection-per-second=50 --max-rate=0
Минимальный набор параметров:
-O,--path— папка, куда сохранять сайт, лог-файлы и кэш-s0,--robots=0— игнорировать указания robots.txt и мета-robots-тегов (0=игнорировать, 1=частично учитывать, 2=всегда следовать правилам (параметр по умолчанию), 3=всегда следовать даже строгим правилам)-o0,--generate-errors 0— не создавать файлы для 404 страниц-%u,--urlhack— использовать все возможные способы, чтобы избежать создания дубликатов страниц (двойные слэши //, www.foo.com==foo.com и т.д.)-%F "",--footer ""— не вставлять внизу HTML строку:-%F "Mirrored [from host %s [file %s [at %s]]]"
Параметры для максимальной скорости скачивания:
-%N0— delayed type check, don t make any link test but wait for files download to start instead (experimental) (%N0 don t use, %N1 use for unknown extensions, * %N2 always use)-%k,--keep-alive— use keep−alive if possible, greately reducing latency for small files and test requests (%k0don t use)-%!,--disable-security-limits— bypass built−in security limits aimed to avoid bandwidth abuses (bandwidth, simultaneous connections)-c80,--sockets=80— количество одновременных соединений (по умолчаниюc8)-%c50,--connection-per-second=50— максимальное количество соединений в секунду (по умолчанию%c10)-A0,--max-rate=0— maximum transfer rate in bytes/seconds (1000=1KB/s max)
Поведение, если возникают проблемы:
-T5,--timeout=5— сколько секунд выжидать после того, как обнаружится, что ссылка не отвечает-R3,--retries=3— сколько повторных попыток делать, если возникает таймаут или некритичная ошибка (по умолчаниюR1)
Исключить URL'ы типа http://www.obzor.com.ua/news/armiya-novorossii38076?page=1480:
-*/*?page=*
Параметры отображения процесса скачивания:
-q,--quiet— без вопросов (тихий режим)-%v,--display— показывать на экране имена скачиваемых файлов −%v1(по умолчанию) упрощенная версия,%v2с полной анимации-#p,--advanced-progressinfo— показывать простой интерфейс прогресса скачивания
Параметры, которые можно не указывать, потому что они идут по умолчанию:
-%P,--extended-parsing[=N]— extended parsing, attempt to parse all links, even in unknown tags or Javascript (%P0don't use)-D— can only go down into subdirs-a— stay on the same address-K0,--keep-links[=N]— конвертировать ссылки в относительные (K0относительные ссылки,Kабсолютные/оригинальные ссылки,K3absolute URI links)
Убраны параметры, потому что и без них норм работает:
+*.png +*.gif +*.jpg +*.jpeg +*.svg +*.css +*.js +*.ppt +*.doc +*.docx +*.xls +*.xlsx +*.zip +*.rar \ -ad.doubleclick.net/*
-F— user-agent field sent in HTTP headers (-F "user-agent name") (--user-agent <param>)
-F "Mozilla/4.5 (compatible; HTTrack 3.0x; Windows 98)" \ -F "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36" -F "Mozilla/5.0 (Windows NT 10.0)"
-%i— make a top index for a project folder (по умолчанию%i0don t make) (--build-top-index)-x,--replace-external— replace external html links by error pages-n,--near— get non-html files 'near' an html file (ex: an image located outside)- По умолчанию:
-%P— extended parsing, attempt to parse all links, even in unknown tags or Javascript (%P0don't use) (--extended-parsing[=N])
- По умолчанию:
-%c1— maximum number of connections/seconds (по умолчанию%c10)-%B— tolerant requests (accept bogus responses on some servers, but not standard!) (--tolerant)
-w,--mirror— make a mirror of site(s) (default)-iC2,--update— update a mirror, without confirmation-i— continue an interrupted mirror using the cache-C— create/use a cache for updates and retries (C0no cache,C1cache is prioritary,C2test update before)
Параметры при обновлении:
-%s— update hacks: various hacks to limit re−transfers when updating (identical size, bogus response..) (--updatehack)
sudo chmod -R 664 * && find * -type d -exec chmod 755 {} \;
Массовое рекурсивное переименование файлов с расширением .shtml в .html:
— тестирование:
find . -name "*.shtml" | rename -v -n "s/\.shtml$/.html/"
— выполнение переименования:
find . -name "*.shtml" | rename -v "s/\.shtml$/.html/"
Дополнительно: заменить во всех .html файлах упоминание .shtml на .html:
find . -name "*.html" -exec sh -c 'sed -E "s/\.shtml/\.html/g" "{}" > tmp && mv tmp "{}"' \;
Кнвертировать все файлы .html во вложенных папках:
find . -type f -name '*.shtml' | while read i; do iconv -f WINDOWS-1251 -t UTF-8 "$i" > tmp; mv tmp "$i"; done
Заменить в файлах .html строку указанием кодировки windows-1251 на UTF-8:
find . -type f -name "*.html" -exec sh -c 'sed "s/windows-1251/UTF-8/g" "{}" > tmp && mv tmp "{}"' \;
Объединенная команда — конвертирует все .html файлы из windows-1251 в utf-8 и заменяет упоминание кодировки в тексте:
find . -type f -name "*.html" -exec sh -c 'iconv -f WINDOWS-1251 -t UTF-8 "{}" > tmp && sed "s/windows-1251/UTF-8/g" tmp > "{}" && rm tmp' \;
Убрать <!-- Added by HTTrack -->:
find . -type f -name "*.html" -exec sed -i 's/<!-- Added by HTTrack -->//g' {} \;
Убрать <!-- /Added by HTTrack -->:
find . -type f -name "*.html" -exec sed -i 's/<!-- \/Added by HTTrack -->//g' {} \;
Убрать <!-- Created by HTTrack Website Copier/3.49-5 [XR&CO'2014] -->:
find . -type f -name "*.html" -exec sed -i 's/<!-- Created by HTTrack Website Copier\/3.49-5 \[XR\&CO'\''2014\] -->//g' {} \;
find . -type f -name "*.html" -exec sed -i '/<!--bigmir)net TOP 100-->/,/<!--bigmir)net TOP 100-->/d' {} \;
find . -type f -name "*.html" -exec sed -i '/<!--LiveInternet counter-->/,/<!--\/LiveInternet-->/d' {} \;
Если в помощью редиректов Nginx будет настроено скрытие расширений .html, то в тексте всех HTML файлов нужно заменить:
— убрать .html:
find . -name "*.html" -exec sh -c 'sed -E "s/(href=\"\S+)\.html\"/\1\"/g" "{}" > tmp && mv tmp "{}"' \;
find . -name "*.html" -exec sh -c 'perl -pi -e "s/(href=\"\S+)\.html\"/\1\"/g" "{}"' \;
— убрать закрывающий слеш /:
find . -name "*.html" -exec sh -c 'sed -E "s/(href=\"\S+)\/\"/\1\"/g" "{}" > tmp && mv tmp "{}"' \;
find . -name "*.html" -exec sh -c 'perl -pi -e "s/(href=\"\S+)\/\"/\1\"/g" "{}"' \;
Следующий код некорректный, потому что в некоторых директориях ссылка без слеша - это ссылка на файлы в этой же директории, и добавление слеша ломает ссылки.
— добавить открывающий слеш, если ссылка начинается не со слеша или http (делается с помощью не sed, а perl, потому что sed не умеет look-ahead): (протестировать избегание двух точек в начале (?!\.\.))
find . -name "*.html" -exec sh -c 'perl -pi -e "s/href=\"(?!http)(?!\/)(?!\.\.)(\S+)\"/href=\"\/\1\"/g" "{}"' \;
Копирование только *.html файлов с сохранением структуры директорий:
find . -name "*.html" | cpio -updm /path/to/destdir