¿Cómo copiar enlaces simbólicos como enlaces simbólicos de una máquina a otra?

13

Supongamos que tengo dos sistemas idénticos. En el primer sistema he creado un enlace simbólico. En el segundo, quiero copiar ese enlace simbólico a través de sftp y el enlace simbólico funcionará igual (es decir, si el enlace simbólico se vincula a /etc/, después de copiarlo, solo se copiará el enlace simbólico y solo el enlace simbólico (no los archivos vinculados))

¿Alguna idea sobre cómo puedo hacer esto / si puedo hacer esto? Yo solamente quiero copiar el enlace simbólico, nada más; Solo la referencia.

Lo oculto
fuente
no funciona como ya lo describiste?
mikeserv
1
sftpNo te dejaré hacer eso. rsynccan, as canssh cp ...
roaima
Lo que estoy tratando de lograr es copiar sobre el mapa simbólico ... No quiero los archivos ... Solo quiero el bit de código que dice CARPETA> ETC ... Solo quiero crear un enlace simbólico fuera del servidor y mover es necesario para el servidor ... estoy tratando de hackear un archivo adjunto
TheHidden
1
@roaima ssh cp? como en scp? ¿cómo?
dificultad_técnica

Respuestas:

12

Si sube el enlace simbólico, puede copiar el tarball en la máquina remota de la forma que desee. Cuando lo descomprimas, verás que solo has copiado el enlace simbólico y nada más. Por ejemplo:

Para probar esto, primero creé un archivo de texto.

echo this is a test > file.txt

Luego, cree un enlace simbólico al archivo y comprímalo en un tar gzip.

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

Transfiera este archivo a su otra máquina y luego descomprímalo:

tar xzvf tarball.tar.gz

Encontrará que el enlace simbólico está allí, pero no el archivo original al que apuntaba.

Por supuesto, si desea transferir tanto el archivo original como el enlace simbólico mientras conserva su relación, puede colocarlos en el tarball y ambos se transferirán, y el enlace simbólico aún debe apuntar correctamente al archivo original cuando descomprima el tarball en la ubicación de destino.

mkrufky
fuente
esto es bastante interesante, pero lamentablemente no creo que me ayude, no tengo ningún control sobre el esclavo, todos estos SFTP se realizan a través de API para bloquear carpetas, pero estoy tratando de piratear la caja usando enlaces simbólicos porque hay un poco de una emergencia y necesito obtener acceso del maestro que empuja las actualizaciones seleccionadas, por razones de seguridad, los archivos que envío no se ejecutan, pero si puedo vincular, puedo inyectar código en un proceso ya existente (teóricamente) reemplazando el archivo a través del enlace simbólico ... pero para hacerlo necesito copiar un enlace simbólico sobre 100% crudo :(
TheHidden
@ user1779617 Todavía no está claro qué quiere decir con "esclavo" y "maestro", porque parece que usa ambos términos para el servidor y el cliente de manera intercambiable. Si necesita crear un enlace simbólico en el servidor , puede hacerlo con SFTP, sin embargo, dependiendo de la configuración, es posible que no pueda mirar fuera del reino chrooteado del demonio SFTP. ¡Consulte la página de manual de sftp( linux.die.net/man/1/sftp )! Existe el comando symlinkespecíficamente para lo que parece necesitar.
polemon
5

No está claro cómo exactamente quiere lidiar con el enlace simbólico. Según tengo entendido, desea volver a crear el enlace simbólico en el otro sistema. Los enlaces simbólicos dependen del sistema de archivos, el protocolo utilizado para copiar archivos debe ser consciente de ello. Un buen ejemplo es usar rsynccon la -aopción.

más específicamente, la -lopción, pero -aes probablemente lo que quieres.

Volverá a crear enlaces simbólicos sin arrastrar los objetivos (desreferenciar los enlaces).

polemon
fuente
Veo hm, ¿entonces no habría forma de copiarlo como un archivo y retener el enlace? Solo tengo la capacidad de mover directamente los archivos sobre los que esperaba construir el enlace simbólico en el sistema idéntico y copiarlo, o ¿tengo esperanzas?
TheHidden
@ user1779617 antes que nada: cuando dices "mover", ¿realmente quieres decir "mover" o "copiar"? Porque "mover" implica eliminar el archivo original (esta fue también la razón por la que edité su pregunta). Segunda cosa: ¿está limitado a un protocolo de transferencia de archivos específico (como solo FTP)? Si es así, deberíamos discutirlo dentro del alcance de eso, y los sistemas de archivos de los que estamos hablando.
polemon
Solo SFTP, descargue solo de la máquina que necesita el enlace simbólico, por lo que me refiero a copiar del maestro al esclavo solo SFTP y la conexión sftp es solo del esclavo.
TheHidden
@ user1779617 Supongo que quiere decir "cliente" (esclavo) y "servidor" (maestro). sftprecorrerá subdirectorios con el -rinterruptor, pero no seguirá enlaces simbólicos, ya que abstrae los sistemas de archivos. sftpadmite la creación de enlaces simbólicos en el host. Al menos debe intentar descargar simplemente el enlace simbólico (cuando el enlace simbólico es ~/etc-> /etc/hacer get etcsin el arrastre /) y ver qué pasa. Depende del FS del servidor y del cliente. Por favor edite su pregunta original en consecuencia!
polemon
3

Sé que @polemon ya ha respondido esto.

Pero haciendo mi parte para una solución rápida.

Tuve que hacer man rsync para saber qué interruptor quiero usar ...

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

Sin embargo, en su caso, debe asegurarse de que los enlaces no estén rotos.

HarshaD
fuente
2

Una solución muy fácil (para el directorio de inicio):

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

o

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

p.ej

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

para proporcionar una ubicación .bashrc con enlace simbólico a otro destino (por ejemplo, red).

Paul Neuwirth
fuente
0

Las otras respuestas ya explican cómo transferir un enlace simbólico a otra máquina. Sin embargo, independientemente de cómo transfiera el enlace simbólico, no podrá usar este enlace simbólico para acceder a un archivo a /etc/través de FTP, SFTP, SCP, SSH o de otra manera. Estos servicios tienden a agruparse en un directorio determinado o, de lo contrario, no pueden proporcionar acceso a archivos que no se compartieron explícitamente. Por supuesto, siempre hay formas de hackear esto en sistemas más antiguos, pero tales vulnerabilidades tienden a ser reparadas y actualizadas tan pronto como se encuentran. Lo siento, no creo que lo que quieras hacer sea posible.

mkrufky
fuente
bastante justo, al menos lo intenté, supongo :(
TheHidden