Introducción
El equipo de conservación de libros utiliza ahora una cuenta receptora dedicada. Entrega Garden Atlas al puesto preparado; después actualiza su catálogo y tratamiento, añade un folio y retira el listado generado antiguo. El receptor debe poder leer los textos entregados y ejecutar el lector.
Este laboratorio comienza de forma independiente con credenciales y carpetas preparadas. Basta con familiaridad básica con el terminal y los métodos locales de rsync del primer laboratorio; aquí se presentan la identidad SSH, la comprobación del host y las rutas remotas. Los comandos y los textos ficticios de los libros siguen en inglés.
Identificar la cuenta receptora preparada
En este paso, confirmarás la identidad SSH preparada y entregarás la colección a la cuenta receptora real. Utiliza Terminal. Este laboratorio independiente reconstruye el origen y el receptor en la edición 1; no reutiliza archivos del laboratorio anterior.
Las dos cuentas comparten este entorno de práctica y su kernel. Representan los dos lados de un traslado, no dos máquinas físicas. labex es dueño de /home/labex/project/folder-move/old; bindery, de /home/bindery/incoming. La raíz receptora contiene su propia nota y un catálogo antiguo.
SSH ejecuta un comando como otra cuenta mediante una conexión cifrada. La clave de identidad del cliente te autentica; la clave de host del servidor identifica el extremo. Resuelven problemas distintos. La preparación proporcionó una clave dedicada y fijó una clave de host de confianza a partir de los datos de aprovisionamiento de este entorno. No cambió el acceso de inicio de sesión de la plataforma.
cd /home/labex/project/folder-move
cat ssh/config
Host bindery-desk es un alias del cliente. Selecciona al usuario bindery en 127.0.0.1, la dirección de bucle local del mismo entorno. IdentityFile identifica tu clave privada dedicada; no muestres ni copies su contenido. IdentitiesOnly yes selecciona esa identidad. UserKnownHostsFile identifica la clave fijada; StrictHostKeyChecking yes rechaza un host desconocido o cambiado. BatchMode yes hace que los errores de autenticación fallen sin esperar una contraseña.
ssh-keygen -lf muestra la huella de una clave pública. Compara el valor SHA256: con la huella de aprovisionamiento:
ssh-keygen -lf ssh/known_hosts
cat ssh/host-fingerprint.txt
Los valores hash deben coincidir; las etiquetas y comentarios pueden diferir. Aquí el archivo de aprovisionamiento de confianza establece la identidad esperada; un traslado real requiere una huella del administrador obtenida de forma independiente y fiable. Una clave recogida únicamente de una red no fiable no establece confianza. Detente si no coinciden; no borres la clave fijada ni desactives la comprobación del host.
-F ssh/config selecciona esta configuración independiente sin sustituir tus ajustes SSH habituales. Un comando entre comillas simples se envía al receptor; sus rutas son remotas. Los puntos y coma separan comandos que se ejecutan en orden en ese shell remoto. Antes de transferir, confirma la cuenta, el directorio personal, rsync y el destino real:
ssh -F ssh/config bindery-desk 'whoami; pwd; rsync --version; ls -la /home/bindery/incoming; cat /home/bindery/incoming/receiver-note.txt'
rsync --version
La cuenta es bindery, su directorio personal es /home/bindery y ambos extremos muestran rsync. La nota conserva la instrucción sobre la estantería oeste. Conectarse correctamente a la cuenta equivocada no constituye una migración válida. Un permiso denegado exige investigar la identidad o los permisos del receptor; una advertencia de host cambiado exige investigar el extremo de confianza. Ninguno se resuelve añadiendo opciones inseguras.
Para rsync, -e 'ssh -F ssh/config' elige el transporte SSH. El destino bindery-desk:/home/bindery/incoming/collection/ utiliza la cuenta configurada y una ruta en el receptor. Los dos puntos lo convierten en un destino remoto; una carpeta local llamada remote no utilizaría SSH. Mantén la barra final del origen y el filtro ya practicados:
rsync -ani -e 'ssh -F ssh/config' --exclude='*.tmp' old/collection/ bindery-desk:/home/bindery/incoming/collection/
rsync -ai -e 'ssh -F ssh/config' --exclude='*.tmp' old/collection/ bindery-desk:/home/bindery/incoming/collection/
ssh -F ssh/config bindery-desk '/home/bindery/incoming/collection/read-book'
Lee el catálogo y el tratamiento con bisagras de papel de Garden Atlas desde la cuenta receptora. Es un uso remoto real del lector entregado, con su configuración oculta y permiso de ejecución. Después sigues en el indicador local; un comando SSH puntual no traslada tu terminal local al directorio personal remoto.
Completar la primera entrega remota
En este paso, entregarás el listado generado independiente y leerás por SSH tanto los datos del receptor como los gestionados por el origen. Continúa en Terminal, en /home/labex/project/folder-move.
Sincroniza únicamente el directorio gestionado generated/. Deja fuera las notas privadas de personal:
rsync -ani -e 'ssh -F ssh/config' old/generated/ bindery-desk:/home/bindery/incoming/generated/
rsync -ai -e 'ssh -F ssh/config' old/generated/ bindery-desk:/home/bindery/incoming/generated/
ssh -F ssh/config bindery-desk 'cat /home/bindery/incoming/generated/current.txt /home/bindery/incoming/receiver-note.txt; /home/bindery/incoming/collection/read-book'
Debes ver Garden Atlas | desk edition 1, la nota receptora intacta y el lector utilizable. El modo archivo conserva el bit ejecutable, pero los archivos recibidos pertenecen a la cuenta receptora; esta no puede conservar propietarios arbitrarios del origen. Los dos directorios gestionados están completos sin replicar la raíz receptora.
Si una transferencia anterior sin filtro incluyó una vista previa, inspecciona primero por SSH el archivo no deseado exacto. Elimina únicamente ese archivo temporal con el método rm del laboratorio local. No borres incoming ni la nota del receptor. Un filtro impide futuras transferencias, pero no limpia un archivo ya copiado.
Aplicar la siguiente edición dentro del alcance gestionado
En este paso, entregarás una segunda edición y retirarás únicamente el listado generado antiguo. Permanece en Terminal, en /home/labex/project/folder-move. Las rutas de destino tras los dos puntos pertenecen a la cuenta receptora.
cat acepta varios nombres de archivo y los muestra en ese orden. Lee la siguiente edición suministrada antes de sustituir el origen editable:
cat revision/collection/texts/catalog.txt revision/collection/texts/treatment.txt revision/collection/texts/addendum.txt
El catálogo tiene ahora 48 folios, el tratamiento usa bisagras de lino y hay un suplemento nuevo. cp -a copia recursivamente conservando los atributos. revision/. significa todo el contenido, incluidos los archivos ocultos. Superpone los cambios suministrados sobre old/, pero no elimina una entrada ausente de la revisión. El puesto retira explícitamente old/generated/obsolete.txt; elimina solo ese archivo de origen. rm borra permanentemente un archivo; no amplíes la ruta.
cp -a revision/. old/
rm old/generated/obsolete.txt
Normalmente rsync compara tamaño y fecha de modificación para decidir si cambiaron los datos. -c añade una comparación por sumas de comprobación del contenido. Estos archivos pequeños limitan el coste y permiten detectar cambios del mismo tamaño con marcas de tiempo conservadas. No crea historial de versiones ni copias de seguridad. Simula y aplica la actualización de la colección:
rsync -anci -e 'ssh -F ssh/config' --exclude='*.tmp' old/collection/ bindery-desk:/home/bindery/incoming/collection/
rsync -aci -e 'ssh -F ssh/config' --exclude='*.tmp' old/collection/ bindery-desk:/home/bindery/incoming/collection/
La simulación de la colección debe mostrar los dos textos revisados y el suplemento nuevo, sin vistas previas temporales. También pueden aparecer cambios solo de atributos.
--delete elimina las entradas del destino ausentes del origen dentro del directorio de sincronización elegido. Aquí solo generated/ está totalmente gestionado; la raíz receptora no. Simula la retirada, busca *deleting obsolete.txt y aplica exactamente el mismo alcance:
rsync -anci -e 'ssh -F ssh/config' --delete old/generated/ bindery-desk:/home/bindery/incoming/generated/
rsync -aci -e 'ssh -F ssh/config' --delete old/generated/ bindery-desk:/home/bindery/incoming/generated/
ssh -F ssh/config bindery-desk 'cat /home/bindery/incoming/generated/current.txt /home/bindery/incoming/collection/texts/addendum.txt /home/bindery/incoming/receiver-note.txt'
ssh -F ssh/config bindery-desk '/home/bindery/incoming/collection/read-book'
Debes leer la edición 2 del puesto, el folio nuevo, la nota original y la salida actualizada del lector. Una réplica de toda la raíz con --delete podría borrar la nota. Nunca la utilices para retirar este único listado gestionado.
Repite las mismas simulaciones:
rsync -anci -e 'ssh -F ssh/config' --exclude='*.tmp' old/collection/ bindery-desk:/home/bindery/incoming/collection/
rsync -anci -e 'ssh -F ssh/config' --delete old/generated/ bindery-desk:/home/bindery/incoming/generated/
No deberían quedar cambios de archivos. Repetir es seguro dentro del alcance declarado, pero una futura eliminación en origen todavía requerirá decidir deliberadamente qué directorio de destino está gestionado. rsync por sí solo no permite recuperar la edición original; utiliza una copia de seguridad independiente cuando necesites historial.
Resumen
Entregaste una colección utilizable, conservaste su configuración oculta y los permisos del lector, y mantuviste la nota del puesto receptor. Una segunda sincronización actualizó los archivos gestionados y eliminó un listado retirado únicamente dentro del alcance declarado. La sincronización es direccional; no proporciona copias con historial ni fusiona conflictos.



