Come copiare i collegamenti simbolici come collegamenti simbolici da una macchina all'altra?


13

Supponiamo che io abbia due sistemi identici. Sul primo sistema ho creato un collegamento simbolico. Sul secondo voglio copiare quel link simbolico tramite sftp e il link simbolico funzionerà allo stesso modo (cioè se il link simbolico a /etc/, dopo averlo copiato, verrà copiato solo il link simbolico e solo il link simbolico (non i file collegati))

Qualche idea su come posso farlo / se posso farlo? Voglio solo copiare il link simbolico, nient'altro; solo il riferimento.


non funziona proprio come lo descrivi già?
Mikeserv,

1
sftpnon ti lascerà fare questo. rsynccan, as canssh cp ...
roaima

La cosa che sto cercando di ottenere è la copia sulla mappa simbolica ... Non voglio i file .. Voglio solo il bit di codice che dice FOLDER> ETC ... Voglio solo creare un link simbolico fuori dal server e spostare al server è necessario su ...
sto

1
@roaima ssh cp? come in scp? Come?
technical_difficulty

Risposte:


12

Se registri il link simbolico, puoi copiare il tarball sul computer remoto come preferisci. Quando lo annulli, scoprirai di aver copiato solo il link simbolico e nient'altro. Per esempio:

Per provarlo, per prima cosa ho creato un file di testo.

echo this is a test > file.txt

Quindi creare un collegamento simbolico al file e comprimerlo in un tar gzip.

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

Trasferisci questo file sull'altro computer e decomprimilo:

tar xzvf tarball.tar.gz

Scoprirai che il link simbolico è lì, ma non il file originale che aveva indicato.

Naturalmente, se si desidera trasferire sia il file originale sia il collegamento simbolico preservando la loro relazione, è possibile inserirli entrambi nel tarball e verrebbero trasferiti entrambi e il collegamento simbolico dovrebbe comunque essere puntato correttamente al file originale quando si decomprime il tarball nella posizione di destinazione.


questo è piuttosto interessante ma purtroppo non penso che mi aiuterà, non ho alcun controllo sullo slave tutti questi SFTP vengono eseguiti tramite API per bloccare le cartelle bloccate, ma sto cercando di hackerare la scatola utilizzando i collegamenti simbolici perché c'è un po 'di un'emergenza e devo ottenere l'accesso dal master che invia gli aggiornamenti selezionati, per motivi di sicurezza i file che invio non vengono eseguiti, ma se posso eseguire il collegamento simbolico posso iniettare il codice in un processo già esistente (teoricamente) sostituendo il file tramite il collegamento simbolico ... ma per farlo devo copiare un link simbolico oltre il 100% grezzo :(
TheHidden

@ user1779617 Non è ancora chiaro cosa intendi con "slave" e "master", perché sembra che tu usi entrambi i termini per server e client in modo intercambiabile. Se è necessario creare un collegamento simbolico sul server , è possibile farlo con SFTP, tuttavia, a seconda della configurazione, potrebbe non essere possibile guardare al di fuori del regno chroot del demone SFTP. Fare riferimento alla pagina man di sftp( linux.die.net/man/1/sftp )! C'è il comando symlinkspecifico per quello che sembri aver bisogno.
polemon

5

Non è chiaro come si voglia esattamente gestire il collegamento simbolico. A quanto ho capito, vuoi ricreare il link simbolico sull'altro sistema. I collegamenti simbolici dipendono dal filesystem, il protocollo utilizzato per copiare i file deve esserne consapevole. Un buon esempio sta usando rsynccon l' -aopzione.

più specificamente, l' -lopzione, ma -aè probabilmente quello che vuoi.

Verranno ricreati collegamenti simbolici senza spostare i target (dereferenziando i collegamenti).


Vedo hm, quindi non ci sarebbe modo di copiarlo come un file e conservare il collegamento? Ho solo la possibilità di spostare direttamente i file sopra speravo di costruire il link simbolico sullo stesso sistema e copiarlo o sto solo sperando?
Nascosto il

@utente1779617 prima di tutto: quando dici "sposta", intendi davvero "sposta" o "copia"? Perché "sposta" implica l'eliminazione del file originale (questo è stato anche il motivo per cui ho modificato la tua domanda). Seconda cosa: sei limitato a uno specifico protocollo di trasferimento file (come solo FTP)? In tal caso, dovremmo discuterne nell'ambito e nei filesystem di cui stiamo parlando.
polemon

Solo SFTP, scarica solo dalla macchina che necessita del collegamento simbolico, quindi intendo solo una copia dal master allo slave SFTP e la connessione sftp è solo dallo slave.
Nascosto il

@ user1779617 Suppongo che intendi "client" (slave) e "server" (master). sftpattraverserà le sottodirectory con lo -rswitch, ma non seguirà i collegamenti simbolici, poiché estrae i filesystem. sftpsupporta la creazione di collegamenti simbolici sull'host. Dovresti almeno provare a scaricare solo il link simbolico (quando il link simbolico è ~/etc-> /etc/fai a get etcmeno del trailing /) e vedere cosa succede. Dipende dall'FS del server e del client. Modifica la domanda originale di conseguenza!
polemon

3

So che @polemon ha già risposto a questa domanda.

Ma facendo il mio pezzettino per una soluzione rapida.

Ho dovuto fare rsync per sapere quale interruttore volevo usare ...

rsync -avz -e ssh /file or sym link/to/copy/ user@ip:/dest/path/

Anche se, nel tuo caso, devi assicurarti che i collegamenti non vengano interrotti!


2

Una soluzione molto semplice (per la directory home):

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

o

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

per esempio

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

per fornire un collegamento .bashrc con collegamento simbolico a un'altra destinazione (ad es. rete).


0

Le altre risposte spiegano già come trasferire un collegamento simbolico su un'altra macchina. Tuttavia, indipendentemente da come si trasferisce il collegamento simbolico, non sarà possibile utilizzare questo /etc/collegamento simbolico per accedere a un file tramite FTP, SFTP, SCP, SSH o in qualsiasi altro modo. Questi servizi tendono ad essere chrootati in una determinata directory o altrimenti impediti di fornire accesso a file che non sono stati esplicitamente condivisi. Naturalmente, ci sono sempre modi per aggirare questo problema sui sistemi più vecchi, ma tali vulnerabilità tendono ad essere riparate e aggiornate non appena vengono rilevate. Mi dispiace, non credo che ciò che vuoi fare sarà possibile.


abbastanza discreto, almeno ho provato immagino :(
TheHidden
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.