Symlinks para arquivos comuns

1

Estou tentando consolidar alguns arquivos de sites em um dos nossos servidores CenotOS, a configuração que desejo criar é algo assim, mas não tenho certeza se é realmente possível

teríamos um conjunto de arquivos usados por todos os sites:

/home/commonfiles/
                 public_html/
                 library/

cada diretório de sites seria parecido com isto:

/home/site1/bespoke/
                   css/
                   images/ 

cada "site" usaria as pastas public_html e library de dentro dos arquivos comuns. Links simbólicos obviamente funcionariam para isso. O que eu também quero é que /home/commonfiles/public_html/css aponte para /home/site1/bespoke/css onde site1 é o site do qual o link absoluto para /home/commonfiles/public_html/ é. Eu sei que é possível criar links simbólicos relativos, mas é possível que um symlink absoluto contenha um relativo?

Espero que isso faça sentido, pois eu realmente aprecio alguns conselhos

EDITAR

para elaborar, esta é a estrutura básica que eu gostaria (se for possível)

/home/common
/home/common/public
/home/common/library
/home/site1
/home/site1/public -> /home/common/public
/home/site1/library -> /home/common/library
/home/site1/bespoke/
/home/site1/bespoke/css
/home/site1/bespoke/images
/home/site1/public/css -> /home/site1/bespoke/css 
/home/site1/public/images -> /home/site1/bespoke/images
/home/site2
/home/site2/public -> /home/common/public
/home/site2/library -> /home/common/library
/home/site2/bespoke/
/home/site2/bespoke/css
/home/site2/bespoke/images
/home/site2/public/css -> /home/site2/bespoke/css
/home/site2/public/images -> /home/site2/bespoke/images

Eu acho que essencialmente o mapeamento de - por exemplo - /home/site1/public/css -> /home/site1/bespoke/css não necessariamente tem que ser feito com links, talvez isso possa ser feito no .htaccess de alguma forma. Espero que você possa ver o que estou tentando alcançar aqui.

apenas para adicionar isso, isso é essencialmente o que eu gostaria de poder fazer (se funcionasse):

mkdir test
mkdir test/common
mkdir test/common/public
mkdir test/common/library
mkdir test/site1
mkdir test/site2
mkdir test/site1/bespoke
mkdir test/site2/bespoke
mkdir test/site1/bespoke/css
mkdir test/site1/bespoke/images
mkdir test/site2/bespoke/css
mkdir test/site2/bespoke/images
ln -s /home/user/test/common/public test/site1/public
ln -s /home/user/test/common/library test/site1/library
ln -s /home/user/test/common/public test/site2/public
ln -s /home/user/test/common/library test/site2/library
cd test/common/public
ln -s ../bespoke/css css
ln -s ../bespoke/images images
    
por robjmills 13.11.2009 / 12:01

3 respostas

1

Não é possível com links

    
por 13.11.2009 / 17:00
0

A resposta é sim. O teste abaixo provavelmente está muito confuso para o que você quer fazer, mas pode ajudar a ilustrar o que pode ser feito.

$ mkdir test
$ mkdir test/a
$ mkdir test/a/dir1
$ touch test/a/dir1/file1
$ ln -s /absolute/path/to/test/a test/b
$ ls -l test
drwxr-xr-x 3 user user 4096 2009-11-13 07:45 a
lrwxrwxrwx 1 user user   28 2009-11-13 07:45 b -> /absolute/path/to/test/a
$ ls -l test/b
drwxr-xr-x 3 user user 4096 2009-11-13 07:45 dir1
$ cd b
$ ln -s ../a/dir1 dir2
$ ls -l
drwxr-xr-x 3 user user 4096 2009-11-13 07:45 dir1
drwxr-xr-x 3 user user 4096 2009-11-13 07:45 dir2 -> ../a/dir1
$ ls -l dir1
drwxr-xr-x 3 user user 4096 2009-11-13 07:45 file1
$ ls -lH dir2
drwxr-xr-x 3 user user 4096 2009-11-13 07:45 file1
$ cd ../a
$ ls -l
drwxr-xr-x 3 user user 4096 2009-11-13 07:45 dir1
drwxr-xr-x 3 user user 4096 2009-11-13 07:45 dir2 -> ../a/dir1

Essa última entrada é interessante. É essencialmente /absolute/path/to/test/a/../a/dir1 .

    
por 13.11.2009 / 15:05
0

Eu faço isso com várias instalações do Wordpress em um dos meus servidores da Web.

Eu configurei o diretório 'wp-content' (que tem temas e plugins) para ser compartilhado entre instalações assim:

/var/<site>/wp-content -> /home/common/wp-content
/var/<site2>/wp-content -> /home/common/wp-content
etc...

Isso seria feito:

cd /var/<site>
ln -s wp-content /home/common/wp-content

Eu tenho perms no meu diretório /home/common/wp-content definido como rwxrwxrwx neste dispositivo em particular.

    
por 13.11.2009 / 15:30