Проверка ссылок при переезде на другой веб-сервер

При смене веб-сервера необходимо автоматически проверить работоспособность ссылок. Минимум - чтобы совпадали коды ответов сервера (200 = 200, 404 = 404), делается это с помощью программы «linkchecker», которая способна формировать сразу готовый SQL-файл. А сравнение ответов уже делать с помощью MySQL.

Проверка ссылок по кодам ответа

Для сверки получаем два списка

linkchecker -v http://site.ru -osql -Fsql
linkchecker -v http://new.site.ru -osql -Fsql

Далее вставляем записи в таблицу:

CREATE TABLE `linksdb` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `urlname` VARCHAR(256) DEFAULT NULL,
  `parentname` VARCHAR(256) DEFAULT NULL,
  `baseref` VARCHAR(256) DEFAULT NULL,
  `valid` INT(11) DEFAULT NULL,
  `result` VARCHAR(256) DEFAULT NULL,
  `warning` VARCHAR(512) DEFAULT NULL,
  `info` VARCHAR(512) DEFAULT NULL,
  `url` VARCHAR(256) DEFAULT NULL,
  `line` INT(11) DEFAULT NULL,
  `col` INT(11) DEFAULT NULL,
  `name` VARCHAR(256) DEFAULT NULL,
  `checktime` INT(11) DEFAULT NULL,
  `dltime` INT(11) DEFAULT NULL,
  `size` INT(11) DEFAULT NULL,
  `cached` INT(11) DEFAULT NULL,
  `level` INT(11) NOT NULL,
  `modified` VARCHAR(256) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `idx_search` (`result`,`urlname`),
  KEY `idx_search_2` (`urlname`,`result`)
) ENGINE=InnoDB;

Перед вставкой «второй порции» переименовываем таблицу. Сравнение:

SELECT linksdb.urlname FROM linksdb JOIN linksdb_origin ON linksdb.urlname = linksdb_origin.urlname WHERE linksdb.RESULT = '404 Not Found' AND linksdb_origin.RESULT = '200 OK';