¿Cómo enumerar todos los archivos y obtener el tamaño total de todos los archivos en un servidor SFTP?

¿Cómo enumerar todos los archivos y obtener el tamaño total de todos los archivos en un servidor SFTP?

Estoy conectado a un servidor sftp usando

sftp -i key.pem user@server

El servidor contiene registros y puedo enumerar registros de hasta 4 días de antigüedad usando ls. El problema es que ls no parece poder recuperar registros de más de 4 días. Me pregunto cómo puedo enumerar todos los registros en el directorio y obtener su tamaño total.

Se ha hecho una pregunta similar sobre el tamaño.aquíy proporciona una solución usando du -hc. Pero este comando no existe en mi servidor SFTP ni tengo acceso SSH. ¿Algunas ideas?

Respuesta1

lftptiene un ducomando y admite el sftpprotocolo:

lftp sftp://user@host

O para especificar la clave ssh a usar y omitir la solicitud de contraseña:

lftp -e 'set sftp:connect-program ssh -axi key.pem' sftp://user:@host

Y ejecute du(o du -bapara enumerar cada archivo junto con su tamaño en bytes, o du -hapara usar sufijos) cuando sftpse le solicite. Tenga en cuenta que se diferencia del ducomando de Unix en que proporciona el tamaño aparente en contraposición al uso del disco y no incluye el tamaño de los archivos del directorio.

Si lsno enumera los archivos con más de 4 días de antigüedad, la explicación más probable es que no están o ya no están allí. El lscomando del cliente sftpo lftpsimplemente realizará unConsulta o serie de consultas "leer directorio" en el protocolo SFTPpara recuperar el contenido del directorio. Si el servidor no envía lo que hay allí y no tienes otra forma de acceder a los datos que no sea a través de SFTP, hay poco más que puedas hacer.

información relacionada