
Это вывод команды tree в одном каталоге:
.
|-- asdf.txt
|-- asd.txt
|-- fabc
| |-- fbca
| `-- file1.txt
|-- fldr1
|-- fldr2
| `-- index.html
|-- fldr3
| |-- cap.txt
| `-- f01
`-- out.txt
6 directories, 6 files
Я запускаю локальный http-сервер в этом каталоге. Далее я запускаю следующую команду:
wget -r -nv --spider --no-parent http://localhost:3000 -o -
...и получаем следующий вывод:
2017-01-02 20:07:24 URL:http://localhost:3000/ [1580] -> "localhost:3000/index.html" [1]
http://localhost:3000/robots.txt:
2017-01-02 20:07:24 ERROR 404: Not Found.
2017-01-02 20:07:24 URL:http://localhost:3000/fabc/ [897] -> "localhost:3000/fabc/index.html" [1]
2017-01-02 20:07:24 URL:http://localhost:3000/fldr1/ [536] -> "localhost:3000/fldr1/index.html" [1]
2017-01-02 20:07:24 URL:http://localhost:3000/fldr2/ [0/0] -> "localhost:3000/fldr2/index.html" [1]
2017-01-02 20:07:24 URL:http://localhost:3000/fldr3/ [896] -> "localhost:3000/fldr3/index.html" [1]
2017-01-02 20:07:24 URL: http://localhost:3000/asd.txt 200 OK
unlink: No such file or directory
2017-01-02 20:07:24 URL: http://localhost:3000/asdf.txt 200 OK
unlink: No such file or directory
2017-01-02 20:07:24 URL: http://localhost:3000/out.txt 200 OK
unlink: No such file or directory
2017-01-02 20:07:24 URL:http://localhost:3000/fabc/fbca/ [548] -> "localhost:3000/fabc/fbca/index.html" [1]
2017-01-02 20:07:24 URL: http://localhost:3000/fabc/file1.txt 200 OK
unlink: No such file or directory
2017-01-02 20:07:24 URL:http://localhost:3000/fldr3/f01/ [548] -> "localhost:3000/fldr3/f01/index.html" [1]
2017-01-02 20:07:24 URL: http://localhost:3000/fldr3/cap.txt 200 OK
unlink: No such file or directory
Found no broken links.
FINISHED --2017-01-02 20:07:24--
Total wall clock time: 0.3s
Downloaded: 7 files, 4.9K in 0s (43.4 MB/s)
- Написано ли wget так, чтобы всегда искать
index.html
? Можно ли это отключить? - Что это за числа, например 1580, 536, 0/0 и т. д.?
- Почему там так написано
unlink: No such file or directory
?
решение1
Вы можете попробовать пропустить файлы с помощью
--reject
параметра (также принимаются подстановочные знаки):wget --reject index.html
Однако вы не хотите этого делать. При использовании wget с -r
, ему каким-то образом нужно получить список файлов внутри каталога. Таким образом, wget запрашивает файл index.html и анализирует его содержимое в надежде получить пути к другим файлам в этом каталоге. Если в папке нет файла index.html, веб-сервер обычно генерирует его для wget - этот файл будет содержать список каталогов. Создание этого файла списка должно быть включено на веб-сервере - в противном случае wget получит ответ HTTP 404 и завершит рекурсивную загрузку с ошибкой.
- Это размер файла в байтах.
- Это означает, что файл не может быть удален (вероятно, потому что он не был создан изначально). У вас есть разрешение на запись в каталог, в который вы загружаете с помощью wget?
Редактировать:После тестирования загрузок wget с помощью --spider
и --recursive
я воспроизвел вашу ошибку отмены ссылки. Похоже, что wget использует тип содержимого ответа, чтобы определить, может ли файл содержать ссылки на другие ресурсы. Если тест типа содержимого не пройден и файл не загружен, wget все равно попытается удалить временный файл, как если бы он был загружен (это становится очевидным при повторном запуске wget с помощью --debug
. Он будет четко указывать Removing file due to --spider in recursive_retrieve():
). Я полагаю, вы нашли ошибку в wget.