Crie uma cópia simbólica de outro diretório que tenha seus próprios dados locais

0

Eu tenho um diretório foo que contém arquivos e diretórios. Desejo criar um novo diretório foo_0311 que contenha os mesmos arquivos que foo (e veja as atualizações quando os arquivos forem alterados), mas que permita executar touch foo_0311/a.txt e não ter a.txt em foo .

Eu costumava ter uma maneira de fazer isso, mas perdi quando minha história sumária desapareceu, e não consegui reconstruí-la. Lembro que envolvi primeiro criar foo_0311 e depois usar ln da seguinte forma:

mkdir foo_0311
ln ???

mas não me lembro das opções para isso. IIRC, quando eu cd para o diretório após executar esta operação e emitir ls -l , os arquivos não apareceram como links, mas as alterações foram refletidas no diretório foo original, enquanto os novos arquivos criados em foo_0311 foram ausente em foo .

    
por jonderry 11.03.2015 / 23:43

2 respostas

2

Você pode pedir a cp para criar uma árvore de links para você:

cp -al foo foo_0311

-a copia tudo de forma recursiva e -l cria links físicos para arquivos em vez de copiá-los.

Se foo_0311 já existe, então você deve usar

cp -al foo/* foo_0311

em vez disso.

Isso cria links físicos, em vez de links simbólicos, para que eles não apareçam com -> na saída de ls -l (mas você pode identificá-los por causa do 2 na segunda coluna). Quaisquer novos arquivos que você criar em um dos diretórios não aparecerão no outro, mas os arquivos que você editar em um deles aparecerão no outro, desde que eles sejam realmente modificados no lugar. (Editores como o Emacs criam novos arquivos e os movem para o lugar, o que quebra isso, embora seja realmente muito útil com árvores de links, pois permite uma forma de copiar-em-escrever ...)

    
por 11.03.2015 / 23:49
0

Pelo que vejo - Você está tentando criar um diretório e, em seguida, criar um link simbólico para esse diretório ... Assim como as máquinas Windows têm o programa principal dentro de "Arquivos de Programas" e um ícone (também conhecido como ... link simbólico no mundo * nix). Para conseguir isso, você precisará simplesmente fazer:

=>> mkdir  -p ~/home/folder/        "will make the directory for you if it doesn't exist"

=>> touch     ~/home/folder/file.txt  "will create the file"

and now create a symbolic link for that file ,

ln -sf ~/home/folder/file.txt      ~/home/folder2/file.txt 

Você pode querer executá-lo com o sudo, dependendo de onde você cria o symlink. Você também pode verificar a página de manual da página de manual .... e está pronto.

    
por 12.03.2015 / 00:02