Похоже, что исходный bzip
был извлечен примерно в 1998 году из-за проблем с патентами, связанных с используемым арифметическим сжатием. на самом деле только чтение Википедии) обнаруживает заархивированную ссылку на сайт bzip2
примерно того времени .
Вот соответствующий раздел, подробно описывающий это и другие различия:
Как это соотносится с вашим предыдущим предложением (bzip-0.21)?
bzip2 - это переработанная и переработанная версия 0.21.Внешне он выглядит довольно похоже, но был почти полностью переписан (несколько раз :-). Важные отличия:
Без патентов! (Надеюсь; см. Заявление выше). bzip-0.21 использовал арифметическое кодирование; bzip2 использует кодирование Хаффмана, которое обычно не считается проблемным с точки зрения патента. Обе программы основаны на преобразовании Барроуза-Уиллера, но, насколько мне известно, оно тоже не запатентовано.
Быстрее, особенно при декомпрессии. bzip2 распаковывает более чем на 50% быстрее, чем 0,21, в основном из-за использования кода Хаффмана. Я также улучшил скорость сжатия, хотя и не так сильно - возможно, она сжимается на 30% быстрее, чем 0,21.
Восстановление после ошибок носителя. Обе программы сжимают данные блоками, по умолчанию длиной 900 КБ. При использовании bzip2 каждый блок обрабатывается полностью независимо, имеет собственную контрольную сумму и ограничен 48-битной последовательностью. Итак, если у вас есть поврежденный сжатый файл, bzip2 может извлечь сжатые блоки, определить, какие из них не повреждены, и распаковать их.
Тестовый режим. Вы можете проверить целостность сжатых файлов, не распаковывая их. Я должен был поставить это в 0.21, правда, но поленился (+ выгорел от взлома к тому времени, когда я его выпустил).
Намного лучше обрабатывает повторяющиеся файлы. Такие файлы - худший вариант для любого компрессора сортировки блоков. bzip2 работает примерно в десять раз быстрее, чем 0.21 для таких файлов.
Поддержка небольших машин. bzip2 может распаковать любой созданный файл размером 2300 КБ, что означает, что вы можете распаковывать файлы на 4-мегабайтных машинах.Пиковое использование памяти во время сжатия также сокращается примерно на 900 КБ по сравнению с 0,21 до примерно 6400 КБ.
Лучшая обработка флагов. В частности, поддерживаются длинные флаги (--like --this), что упрощает использование.
Однострочное стартовое сообщение, напечатанное 0,21, пропало. Это была функция, на которую чаще всего жаловались 0.21. Сейчас он даже меня глючит.
Я больше не распространяю 0.21, потому что это увековечивает проблемы с патентами, что гарантирует, что программа никогда не получит широкого распространения. Жаль, потому что это полезная программа, и многим она, кажется, нравится. Если вы уже используете версию 0.21, обновите ее до bzip2. К сожалению, я не могу заставить bzip2 распаковывать файлы .bz 0.21, так как это сделало бы попытку обхода патентов бессмысленной. Я знаю, что изменение форматов файлов болезненно; с этого момента я постараюсь внести любые дальнейшие изменения обратно совместимым способом.
Это также ссылка на распакованную версию исходного кода bzip
для всех, кто хочет поиграть с ней.
Да; Вы можете сделать IP для каждого хоста на вашем локальном ящике
ip address add 122.0.0.2/32 dev eth0
ip address add 122.0.0.3/32 dev eth0
и отредактируйте файл hosts
echo "127.0.0.2 remotehost1.com" >> /etc/hosts
echo "127.0.0.3 remotehost2.com" >> /etc/hosts
затем перенаправить каждый IP-адрес на IP-адрес хоста (прямой доступ через домен будет прерван изменением файла hosts)
ssh user@$remotehost1_IP -L 127.0.0.2:80:localhost:1234
ssh user@$remotehost2_IP -L 127.0.0.3:80:localhost:1234
затем используйте веб-браузер как обычно
http://remotehost1.com
http://remotehost2.com
Это позволит туннелировать каждое удаленное полное доменное имя через его собственный ssh-туннель на его собственном локальном IP-адресе.
Когда вы устанавливаете перенаправление портов по ssh -, вы устанавливаете мост между портом наyour_machine:port
(с точки зрения вашей машины )и machine:port
с точки зрения машины, к которой вы подключились.
Другими словами -если вы вызываете команду
ssh user@remotehost -L 1234:localhost:4567
вы устанавливаете ssh-соединение с remotehost
плюс, если вы подключаетесь к порту 1234
на вашем компьютере(localhost
адрес для вас )удаленная часть вашего ssh-соединения попытается установить соединение сlocalhost
(сама с собой -, так как localhost
на remotehost
будет указывать на себя )на порту4567
Вернемся к существу вопроса.
Если у вас есть другие службы на порту 1234
на вашем компьютере, вместо этого вы можете выбрать другой свободный порт на вашем компьютере.
Когда вы делаете
ssh user@a.company.com -L 1234:localhost:5678
на хосте b.company.com происходит следующее:
localhost
(, то есть к узлу А снова )через порт 5678. Таким образом, конечным результатом является то, что вы можете получить доступ к порту 5678 на хосте A, используя порт 1234 на хосте B.
Причина, по которой вы должны ввести localhost
, заключается в том, что хост A также может быть "сервером перехода", то есть точкой входа в какую-либо защищенную сеть. Таким образом, если вы не можете получить доступ к узлу C напрямую с узла B, но можете получить доступ к узлу A с узла B и к узлу C с узла A, вы можете выполнить
ssh user@a.company.com -L 1234:c.company.com:5678
, который установит соединения между хостами B и A и между хостами A и C, а также туннелирует порт 5678 на хосте C с портом 1234 на хосте A.
Это имеет два следствия:
Если вы уже используете порт 1234 на своем клиенте (хост B )для других служб, вы не можете использовать его для туннелирования. Вам нужно использовать другой порт (, но есть из чего выбрать ).
В вашем браузере вы всегда будете подключаться к локальной конечной точке туннеля, то есть localhost
. Присвоение имен удаленным хостам этого не изменит.
Так что нет, то, что вы хотите, так не работает.
Редактировать
Если это было недостаточно ясно :Вы можете очень легко использовать другие номера портов для уже запущенных локальных служб. Итак, предположим, что у вас есть хосты A, B и C, к которым вы хотите подключиться таким образом, все они имеют службы на порту 80, и вы используете свой собственный веб-сервер на порту 80. Затем вы выполняете
ssh user@hosta -L 5000:localhost:80
ssh user@hostb -L 5001:localhost:80
ssh user@hostc -L 5002:localhost:80
, и вы можете получить к ним доступ прямо сейчас в своем браузере, набрав http://localhost:5000
, http://localhost:5001
и http:/localhost:5002
. И http://localhost:80
по-прежнему будет обращаться к вашему собственному локальному серверу.
Нет реальной необходимости в сложных конструкциях, предполагающих присвоение себе большого количества IP-адресов или удаленных псевдонимов.