@stalkerxxl

Массовое редактирование симлинков в Debian — КАК?

Всем салют! Есть выделенный web-сервер на Debian (nginx+apache2), на него были перенесены несколько сайтов с другого сервера.
Учетка юзера на старом - была user1, на новом - user2.

Проблема в следующем: на новом сервере в папке /var/www/user2/data/.. в разных подкаталогах находится много симлинков, ведущих на изображения (боролся с дублями картинок)... Но путь у симлинков - /var/www/user1/..
Как сделать массовое изменение симлинков, чтоб на сайте заработали все картинки? На данный момент - они не отображаются (403- Forbidden)

Способ с комментированием в nginx.conf этой строки и созданием симлинка /var/www/user1 --> /var/www/user2 - пробовал.. не помогает
(#disable_symlinks if_not_owner from=$root_path;)

Может есть еще какие-то способы?
  • Вопрос задан
  • 754 просмотра
Пригласить эксперта
Ответы на вопрос 5
Endru9
@Endru9
Админ Linux
здесь либо менять путь как на старом сервере, либо делать скрипт.
примерно такой:
#!/bin/bash
for i in $(find -type l -exec ls -l {} \; | awk '{ print $9 $10 $11 }')
        do
#b - это сам симлинк
#e - это файл на который ссылаются.
        b=`echo $i | awk -F '->' '{ print $1}'`
        e=`echo $i | awk -F '->' '{ print $2}'`
        echo $b
        echo $e
        e=`echo $e |sed 's/user1/user2/g'`
        echo $e
        #rm $b #удаляем симлинк и делаем новый.
        #новый симлинк (выполнять с опаской, лучше проверить и перепроверить.
        #снять комментарий если все будет работать как нужно
        #ln -s $e $b
done

естественно я его не проверял, и набросал за пару минут, но я думаю это будет толчком для решение проблемы.
Ответ написан
Комментировать
Frankenstine
@Frankenstine
Сисадмин
Может вам проще будет просто расположить файлы по старому пути? ;)
Ну а "в лоб" задача решается путём создания bash-скрипта, перебирающего симлинки и для тех, которые поломаны (не ведут на файл) делать новый симлинк (правильный), а поломанный удалять.
Ответ написан
Комментировать
@stalkerxxl Автор вопроса
Расположить несколько тысяч файлов - не вариант =)
Тоже склоняюсь к варианту написания bash-скрипта... Но опыта и понятия "с какой стороны подходить" - увы, нет ... =-(
Ответ написан
mobilesfinks
@mobilesfinks
сисадмин *nix
сделайте симлинк :)
ln -s /var/www/user2 /var/www/user1
Ответ написан
@abcd0x00
Сделай скрипт, который переделывает одну ссылку. Просто ты ему подаёшь адрес ссылки, а он её превращает в правильную ссылку. Как сделаешь, выполни команду поиска ссылок, где для каждой найденной ссылки вызывается этот скрипт.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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