Если Вы хотите исключить весь каталог, Ваш шаблон должен соответствовать тому каталогу, не файлам в нем. Использовать --exclude=/data/sub1
вместо --exclude='/data/sub1/*'
Будьте осторожны с заключением в кавычки шаблонов для защиты их от расширения оболочки.
Посмотрите этот пример с проблемой в заключительном вызове:
$ for i in 0 1 2; do mkdir -p /tmp/data/sub$i; echo foo > /tmp/data/sub$i/foo; done
$ find /tmp/data
/tmp/data
/tmp/data/sub2
/tmp/data/sub2/foo
/tmp/data/sub0
/tmp/data/sub0/foo
/tmp/data/sub1
/tmp/data/sub1/foo
$ tar -zvcf /tmp/_data.tar /tmp/data --exclude='/tmp/data/sub[1-2]'
tar: Removing leading `/' from member names
/tmp/data/
/tmp/data/sub0/
/tmp/data/sub0/foo
$ tar -zvcf /tmp/_data.tar /tmp/data --exclude=/tmp/data/sub[1-2]
tar: Removing leading `/' from member names
/tmp/data/
/tmp/data/sub0/
/tmp/data/sub0/foo
$ echo tar -zvcf /tmp/_data.tar /tmp/data --exclude=/tmp/data/sub[1-2]
tar -zvcf /tmp/_data.tar /tmp/data --exclude=/tmp/data/sub[1-2]
$ tar -zvcf /tmp/_data.tar /tmp/data --exclude /tmp/data/sub[1-2]
tar: Removing leading `/' from member names
/tmp/data/
/tmp/data/sub2/
/tmp/data/sub2/foo
/tmp/data/sub0/
/tmp/data/sub0/foo
/tmp/data/sub2/
tar: Removing leading `/' from hard link targets
/tmp/data/sub2/foo
$ echo tar -zvcf /tmp/_data.tar /tmp/data --exclude /tmp/data/sub[1-2]
tar -zvcf /tmp/_data.tar /tmp/data --exclude /tmp/data/sub1 /tmp/data/sub2
Простые базовые инструменты командной строки как nc
, socat
кажется, не могу обработать определенное продолжение материала HTTP (блоки, кодировка передачи, и т.д.). В результате это может произвести неожиданное поведение по сравнению с тем, чтобы говорить с реальным веб-сервером. Так, моя первая мысль состоит в том, чтобы совместно использовать самый быстрый способ, которым я знаю об установке крошечного веб-сервера и создании ее просто сделать то, что Вы хотите: выведите весь вывод.
Самое короткое я мог придумать использование Торнадо Python:
#!/usr/bin/env python
import tornado.ioloop
import tornado.web
import pprint
class MyDumpHandler(tornado.web.RequestHandler):
def post(self):
pprint.pprint(self.request)
pprint.pprint(self.request.body)
if __name__ == "__main__":
tornado.web.Application([(r"/.*", MyDumpHandler),]).listen(8080)
tornado.ioloop.IOLoop.instance().start()
Замените pprint
строка для вывода только определенных полей Вам нужно, например self.request.body
или self.request.headers
. В примере выше его слушает на порте 8080, во всех интерфейсах.
Альтернативы этому - много. web.py, Бутылка, и т.д.
(Я - вполне ориентированный Python, извините),
Если Вы не любите его способ произвести, просто выполняете его так или иначе и попытка tcpdump
как это:
tcpdump -i lo 'tcp[32:4] = 0x484f535420'
видеть реальный необработанный дамп всех запросов HTTP-POST. С другой стороны, просто выполните Wireshark.
Я сам это искал и столкнулся с http-echo-сервером Node.js :
npm install http-echo-server -g
PORT=8081 http-echo-server
Он принимает все запросы и эхос полностью выполняет запрос, включая заголовок командной строки.
https://hub.docker.com/r/jmalloc/echo-server/
Выполнить
$ docker run -t --rm -p 8080:8080 jmalloc/echo-server
Unable to find image 'jmalloc/echo-server:latest' locally
latest: Pulling from jmalloc/echo-server
fbf67b0844fa: Pull complete
Digest: sha256:617a99b927c3b761621681eb4716582260391c0853b6da904e0f9f1d37785e7a
Status: Downloaded newer image for jmalloc/echo-server:latest
Echo server listening on port 8080
Сообщение
$ curl -XPOST -H"ThisTook: 2 minutes to find" localhost:8080/asdf
Request served by a2d8fa109b92
HTTP/1.1 POST /asdf
Host: localhost:8080
User-Agent: curl/7.54.0
Accept: */*
Thistook: 2 minutes to find
pprint.pprint(self.request.body)
.Примечание:self.request.body
вместоself.body
. То же дляself.request.headers
. См. tornado.readthedocs.org/en/latest / … – mozz100 25.09.2014, 13:17