@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;)

Может есть еще какие-то способы?
  • Вопрос задан
  • 784 просмотра
Пригласить эксперта
Ответы на вопрос 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
Сделай скрипт, который переделывает одну ссылку. Просто ты ему подаёшь адрес ссылки, а он её превращает в правильную ссылку. Как сделаешь, выполни команду поиска ссылок, где для каждой найденной ссылки вызывается этот скрипт.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы