Como copiar links simbólicos como links simbólicos de uma máquina para outra?

9

Vamos supor que eu tenha dois sistemas idênticos. No primeiro sistema, criei um link simbólico. No segundo eu quero copiar esse symlink via sftp e o symlink deve funcionar da mesma forma (ou seja, se o link simbólico linkar para /etc/ , depois de copiá-lo, apenas o link simbólico será copiado e somente o link simbólico )

Alguma idéia de como posso fazer isso / se posso fazer isso? Eu apenas quero copiar o link simbólico, nada mais; apenas a referência.

    
por TheHidden 10.11.2015 / 10:50

4 respostas

8

Se você aumentar o symlink, então você pode copiar o tarball para a máquina remota da maneira que desejar. Quando você descompactar, você verá que você copiou apenas o link simbólico e nada mais. Por exemplo:

Para testar isso, primeiro criei um arquivo de texto.

echo this is a test > file.txt

Em seguida, crie um link simbólico para o arquivo e compacte-o em um gzip de tar.

ln -s file.txt link.lnk
tar czvf tarball.tar.gz link.lnk

Transfira este arquivo para sua outra máquina e, em seguida, descompacte-o:

tar xzvf tarball.tar.gz

Você verá que o link simbólico está lá, mas não o arquivo original que ele apontou.

Claro, se você quiser transferir tanto o arquivo original quanto o symlink enquanto preserva o relacionamento deles, você pode colocar ambos no tarball e ambos serão transferidos, e o link simbólico ainda deve estar corretamente apontado para o arquivo original quando você descompactar o tarball no local de destino.

    
por 10.11.2015 / 14:04
4

É um pouco incerto como exatamente você quer lidar com o symlink. Pelo que entendi, você deseja recriar o link simbólico no outro sistema. Links simbólicos dependem do sistema de arquivos, o protocolo usado para copiar arquivos deve estar ciente disso. Um bom exemplo é usar rsync com a opção -a .

mais especificamente, a opção -l , mas -a é provavelmente o que você quer.

Ele irá recriar links simbólicos sem puxar os alvos (desreferenciando os links).

    
por 10.11.2015 / 11:17
2

Uma solução muito fácil (para o diretório inicial):

tar -c SYMLINKFILE | ssh machine 'tar -x'

ou

tar -c SYMLINKFILE | ssh machine 'tar -xC /some/other/location  '

por exemplo,

tar -c .bashrc | ssh another_machine 'tar -x'

para fornecer uma colocação de .bashrc com link simbólico para outro destino (por exemplo, rede).

    
por 04.04.2018 / 01:16
0

As outras respostas já explicam como transferir um link simbólico para outra máquina. No entanto, independentemente de como você transfere o link simbólico, você não poderá usar este link simbólico para acessar um arquivo em /etc/ via FTP, SFTP, SCP, SSH ou qualquer outro meio. Esses serviços tendem a ser chrooted para um determinado diretório ou impedidos de fornecer acesso a arquivos que não foram explicitamente compartilhados. É claro que sempre há maneiras de se lidar com isso em sistemas mais antigos, mas essas vulnerabilidades tendem a ser corrigidas e atualizadas assim que são encontradas. Me desculpe, eu não acho que o que você quer fazer seja possível.

    
por 10.11.2015 / 18:09