Как изменить символические ссылки на файлы?

Сейчас предстоит переезд с одного домена на другой, но на одном сервере. И каждый файл на сайте отображается через символические ссылки. Файлы я скопирую на новый домен. Символические ссылки тоже могу, но... Естественно они будут указывать на старый домен. Вот оттуда и два вопроса.
1 - можно ли массово изменить имена всех символических ссылок не полностью, а только в их имена site.ru на site1.ru?
2 - Можно ли не создавая новые символические ссылки изменить в пути к файлу каждой ссылки имя домена site.ru на site1.ru, или только делать выборку всех 130К записей из БД файлов и создавать ссылки с нуля?
  • Вопрос задан
  • 411 просмотров
Пригласить эксперта
Ответы на вопрос 2
@brar
grep -rl старое_имя_домена /путь/к/каталогу_сайта/
Выведет все файлы, внутри которых встречается старое имя домена. Если их мало, можете руками поменять на новое имя домена.

find /путь/к/каталогу_сайта/ -type f -exec sed -i 's/https\:\/\/старое_имя_домена.ru/https\:\/\/новое_имя_домена.ru/g' {} +

Заменит все встречающиеся старое_имя_домена на новое_имя_домена.

Однако, стоит отметить, что указание абсолютных ссылок адреса сайта внутри кода - моветон. Нужно использовать относительные ссылки - а точнее просто слэш. (правильно настроенный вебсервер будет воспринимать его, как правильный путь).

P.S. Предварительный бэкап не збудьте.
Ответ написан
hint000
@hint000
у админа три руки
Наклепал такой вариант (авось когда-нибудь и самому пригодится). Первая строка не содержит опасных команд и после неё можно визуально проверить содержимое текстового файла.
find /каталог/где/симлинки -type l \( -exec readlink {} \; -exec echo {} \; \) |xargs -L2|sed 's/site.ru/site1.ru/g' > aaaa.txt
cat aaaa.txt|awk '{print $2}'|xargs rm
cat aaaa.txt|xargs -L1 ln -s
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы