
Soy nuevo en Unix. Mi cliente necesita enviar algunos archivos de datos a un servidor SFTP de forma regular.
En el servidor SFTP ya existen archivos con el mismo nombre. Lo que quieren es que cuando transfiramos archivos sftp al servidor, se agregarán los datos del archivo al archivo existente.
Digamos que en el servidor heredado hay un archivo A.dat
con 10 filas. Ahora estoy haciendo un archivo sftp A.dat
con 5 filas. Entonces, después de sftp, en el archivo del servidor SFTP A.dat
debe tener 15 filas.
Lo mismo con otros archivos. Además, si el archivo no existe en el sistema SFTP, entonces el script debería colocar el archivo.
Cualquier respuesta rápida es muy apreciada. Mi sftp
secuencia de comandos actual se parece a la siguiente, que simplemente consiste en colocar y sobrescribir los archivos existentes.
#!/usr/bin/expect -d
set timeout -1
spawn sftp user@server
expect "sftp>"
send "cd /destinationpath\n"
expect "sftp>"
send "lcd /sourcepath\n"
expect "sftp>"
send "put A.dat\n"
expect "sftp>"
send "exit\n"
interact
¿Puede ayudarme a actualizar este script según el requisito?
Lo que llegué a saber SFTP no admite anexar, entonces, ¿cómo se puede lograr esto usando SSH?
Respuesta1
El cliente OpenSSH sftp
no admite la adición.
Tendrá que utilizar otro cliente SFTP.
O recurra al uso de un acceso de shell como:
cat /sourcepath/A.dat | ssh user@server "cat >> /destinationpath/A.dat"
O, si puede conservar un archivo local completo, incluso con el contenido original, puede utilizar
reput
dominiopara "reanudar" la transferencia del archivo.