Я пытаюсь использовать wget для загрузки с моего сервера AWS ubuntu с apache2. Я пробовал несколько разных вариантов, но все они приводят либо к файлу по имени каталога, либо к файлу index.html.
В каталоге 3 картинки и видео в формате ogg.
Это wget, который я использую:
wget -N -np http://domainorIP/dir/dir2/dirtodownload/
По умолчанию, wget
загружает только URL-адрес, который вы ему даете, а не ресурсы, на которые есть ссылки со страницы HTML. Чтобы перейти по этим ссылкам, вам понадобится -r
(или --recursive
) вариант.
Также есть --page-requisites
опция, которая загружает любые ресурсы, необходимые для отображения страницы, которую вы ей предоставляете, например встроенные изображения и таблицы стилей.
Также есть «сгруппированные» варианты, такие как --mirror
который включает в себя -r
наряду с несколькими другими параметрами, полезными для зеркалирования.
Страница руководства огромна, потому что wget
имеет много функций. Раздел о Recursive Retrieval Options
стоит потратить время на чтение.
Я никогда не добивался успеха curl
или wget
для загрузки файлов, которые обслуживаются с сервера Apache, где indexing directories
включен. Думаю, это и твоя проблема. Когда вы просматриваете каталоги, они выглядят следующим образом:
В Apache они включены, например, так:
<Directory /var/www/domain.com/pdfs>
Options Indexes FollowSymLinks
</Directory>
Используя оболочку, вы можете получить список файлов, а затем загрузить их по одному с помощью такой команды:
% URL="http://www.lamolabs.org/blog/wp-content/uploads/2012/10/"
% curl -s $URL | \
grep "href" | \
grep -v "C=D;O=A" | \
sed "s#^.*href=\"#$URL#" | \
sed 's/">.*$//' | \
xargs wget
Разбивая это:
- URL="..." - is the URL I want to download files from
- curl -s $URL - get's the contents of the index.html generated by Apache
- grep "href" - get lines that contain only href
- grep -v "C=D;O=A" - eliminate the header bar line generated by Apache
- sed "s#^.*href=\"#$URL#" - replace .*href=" lines with URL
- sed 's/">.*$//' - remove trailing characters >.*$
- xargs wget - download each file using wget
Вы можете запустить это как одну команду:
url="http://www.lamolabs.org/blog/wp-content/uploads/2012/10/"; curl -s $url | grep "href" | grep -v "C=D;O=A" | sed "s#^.*href=\"#$url#" | sed 's/">.*$//' | xargs wget
Его запуск приводит к загрузке следующих файлов:
% ls -l
total 1652
-rw-rw-r-- 1 saml saml 1351400 Oct 8 23:35 Anatomy-of-the-Linux-file-system.mht
-rw-rw-r-- 1 saml saml 485 Oct 11 00:42 eratosthenes_prime_sieve.pl_.txt
-rw-rw-r-- 1 saml saml 27191 Oct 3 21:42 Selection_005-150x150.png
-rw-rw-r-- 1 saml saml 24202 Oct 3 21:42 Selection_005.png
-rw-rw-r-- 1 saml saml 27141 Oct 3 21:42 Selection_006-150x150.png
-rw-rw-r-- 1 saml saml 24906 Oct 3 21:42 Selection_006.png
-rw-rw-r-- 1 saml saml 25783 Oct 3 22:17 Selection_007-150x150.png
-rw-rw-r-- 1 saml saml 111915 Oct 3 22:17 Selection_007-650x180.png
-rw-rw-r-- 1 saml saml 48109 Oct 4 09:57 Selection_007-e1349359020755.png
-rw-rw-r-- 1 saml saml 29336 Oct 3 22:17 Selection_007.png
Загрузите браузер CLI и загрузите нужные файлы, вы можете использовать ELinks или W3M
apt-get install elinks w3m