Link simbólico duplo (para partição e servidor)

Link simbólico duplo (para partição e servidor)

Espero que não seja uma duplicata, procurei mas não consegui encontrar uma resposta.

Estou usando o Linux Mint. Eu tenho uma partição de dados que é montada automaticamente na inicialização. Criei links simbólicos desta partição na minha /home/userpasta.

O problema é que tenho uma pasta 'www' na minha partição de dados (é um backup de sites que preciso restaurar) e preciso criar um link simbólico dela em /home/user. Também preciso criar um link simbólico para /var/www/htmlpoder fazer alterações nos arquivos/pastas em meu servidor. É possível? qual seria a melhor maneira de fazer isso?

Anteriormente eu mantinha a pasta 'www' diretamente, /home/userentão só precisava de um link simbólico. Mas agora que tenho uma partição de dados separada, não sei como fazer isso. Eu poderia ter apenas um link simbólico para o servidor, mas teria que copiar/fazer backup manualmente de todas as novas informações adicionadas, e prefiro fazer isso automaticamente, se houver uma maneira.

Responder1

sim, é possível vincular simbolicamente uma pasta a vários lugares. Pelo que entendi sua pergunta, você deseja dois links simbólicos:

/home/user/www -> /mnt/partition/www
/var/www/html -> /mnt/partition/www

Fico feliz em ajustar minha resposta caso seja diferente. No entanto, o procedimento geral deve ser o mesmo.

 ln -s /mnt/partition/www /home/user/www
 ln -s /mnt/partition/www /var/www/html

Se você precisar de toda a estrutura de diretórios /mnt/partition/wwwunder /var/www/htmle /home/user, como em duas "pastas" idênticas que se mantêm sincronizadas, dê uma olhada nas montagens de ligação.

Responder2

Se bem entendi as coisas você tem (um pouco abstraído):

/data/html/xyz.html

você tem um link em seu diretório inicial:

/home/user/html -> /data/html

então os dados são realmente armazenados na partição separada/data

Agora você pode usar o arquivo xyz.html de /var/www/html vinculando:

/var/www/html -> /data/html

Os comandos para isso são:

cd /home/user
ln -s /data/html .
cd /var/www
ln -s /data/html .

No entanto, vejo dois problemas com esta configuração.

  1. Seu servidor pode não estar configurado para seguir um link em /var/www. Por exemplo, o Apache precisa ter a +FollowSymLinksopção em sua configuração, pois isso é um risco potencial à segurança.
  2. Cada alteração editada é imediatamente “enviada” para o servidor web. Você provavelmente deveria fazer isso através de algum sistema de controle de revisão, para que no máximo o material comprometido chegue ao site.

Existem diferentes maneiras de resolver os problemas acima. Se o espaço ativado /for o motivo para colocar tudo, /dataeu faria um /data/wwwe teria o servidor web a partir daí em vez de /var/www(eliminando a necessidade de seguir links simbólicos. Eu também usaria o mercurial para controlar a revisão do material abaixo /data/htmle cloná-lo para um local padrão /data/wwwpara que você possa confirmar de /data/html(ou /home/user/html) e quando as coisas estiverem estáveis, você faz um commit e push, para que o item seja servido no site.

Responder3

No Linux, qualquer armazenamento físico pode ser atribuído a qualquer caminho no sistema de arquivos quantas vezes quiser. os caminhos dos arquivos são apenas inodes (identificadores/ponteiros) para o armazenamento físico. Você pode mapear o mesmo arquivo/pasta físico para diferentes caminhos de sistema de arquivos de pelo menos três maneiras:

1) montagem. Assim como você pode montar uma unidade física inteira em um diretório, também pode montar um diretório existente arbitrário em outro local (montagem por ligação). Este é completamente transparente para qualquer aplicativo no sistema, nenhum programa notará que o conteúdo do diretório foi montado em algum outro local. No seu caso, você pode fazer facilmente

mount --bind /mnt/partition/www/ /var/www/html/

Esta é a melhor maneira de fazer isso, porque os servidores web geralmente não gostam de seguir links simbólicos por padrão, porque eles podem conceder acesso a partes do sistema de arquivos que não deveriam ser acessadas.

Você pode montar qualquer pasta em qualquer outra pasta quantas vezes quiser. O diretório original nem sabe que está montado em outro lugar, o sistema operacional cuida disso.

2) links simbólicos. Links simbólicos são apenas apelidos. Esta é a ligação mais fraca. Ao contrário da montagem, os links simbólicos simplesmente contêm (basicamente em formato de texto) um caminho para o qual apontam. Isso significa que você não precisa montá-lo a cada inicialização (ou quando precisar) e o caminho pode nem existir. Também pode mudar. A maioria dos aplicativos funciona com eles como com arquivos normais, mas há advertências: os links simbólicos de diretório têm alguns problemas porque quando você entra e volta novamente, você não chega necessariamente ao mesmo lugar. Além disso, os aplicativos estão cientes de que o arquivo/diretório é um link. Para evitar ciclos, o sistema operacional limita o comprimento da cadeia de links a seguir (quase nunca é um problema, a menos que você abuse muito deles). Claro, você pode ter quantos links quiser, o diretório original nem mesmo tem conhecimento deles.

ln -s /mnt/partition/www/ /var/www/html/

ln -s /mnt/partition/www/ /home/user/www/

3) links físicos. Como os sistemas de arquivos em unixes são projetados como um conjunto de inodes que apontam para locais físicos no disco rígido, cada inode é apenas um endereço de como chegar lá. Então você pode ter muitos inodes (NO MESMO SISTEMA DE ARQUIVOS) apontando para o mesmo endereço. Se você não usar o comando -sswitch on ln, ele criará um link físico (se possível). Todos os nomes de arquivos que apontam para o mesmo armazenamento físico são, na verdade, equivalentes. Não existe um arquivo "original". Todos eles são o mesmo arquivo, existem apenas dois ou mais nomes para a mesma coisa. Como a exclusão, na verdade, apenas remove o inode (e marca o espaço como livre apenas se NENHUM inode apontar para ele), a exclusão de um arquivo não remove o outro. Apenas remove o nome. É claro que, se você remover todos os links físicos, não haverá inodes que indiquem onde encontrar o armazenamento e ele será finalmente perdido (o sistema de arquivos poderá então usar o espaço para outra coisa).

Isso não ajuda você neste caso. Os links físicos funcionam apenas no mesmo sistema de arquivos (mesma partição), porque cada partição possui seu próprio gerenciamento de endereço físico. Mas incluí isso apenas para completar.

Então... crie um link simbólico para qualquer coisa, você pode até vincular a outro link (é assim que a maioria das bibliotecas /usr/libestão vinculadas para que o nome genérico da biblioteca esteja vinculado à versão específica que está instalada). Se você tiver acesso root, sugiro montar o diretório que será usado pelo servidor web, é a maneira mais correta de fazer as coisas. Você provavelmente nunca precisará de links físicos, mas deve saber que eles existem.

informação relacionada