sftp: cómo copiar solo archivos de una carpeta que no existe en la carpeta de destino


19

Me pregunto si es posible con getarchivos sftp, pero ¿evitar que vuelva a descargar archivos que ya existen en la carpeta de destino?

Respuestas:


20

sftpTiene capacidades limitadas. Sin embargo, el getcomando tiene una opción que puede hacer el truco: get -acompleta las descargas parciales, por lo que si un archivo ya está presente en el cliente y es al menos tan grande como el archivo en el servidor, no se descargará. Si el archivo está presente pero es más corto, se transferirá el final del archivo, lo que tiene sentido si el archivo local es el producto de una descarga interrumpida.

La forma más fácil de hacer cosas complejas a través de SFTP es usar SSHFS . SSHFS es un sistema de archivos que usa SFTP para hacer que un sistema de archivos remoto aparezca como un sistema de archivos local. En el cliente, SSHFS requiere FUSE , que está disponible en la mayoría de los dispositivos modernos. En el servidor, SSHFS requiere SFTP; si el servidor permite SFTP, puede usar SSHFS con él.

mkdir server
sshfs server.example.com:/ server
rsync -a server/remote/path /local/path/
fusermount -u server

Tenga en cuenta que rsync a través de SSHFS no puede aprovechar el algoritmo de transferencia delta, porque no puede calcular sumas de verificación parciales en el lado remoto. Eso es irrelevante para una descarga única pero derrochador si está sincronizando archivos que han sido modificados. Para una sincronización eficiente de archivos modificados, use rsync -a server:/remote/path /local/path/, pero esto requiere acceso de shell SSH, no solo acceso SFTP. Sin embargo, el acceso de shell puede restringirse al comando rsync.


7

Puede usar la -abandera para el getcomando:

$ sftp example.com
sftp> get -a hello.txt

Puede especificar *descargar todo el directorio, por supuesto.

Sin embargo, hay algunas advertencias.

  • Esto no funciona en OS X. Es posible que no funcione en otros sistemas. Lo he probado en Ubuntu 15.04.
  • La opción está destinada a reanudar descargas interrumpidas. Si su archivo ha cambiado, el resultado será una descarga corrupta.

Una mejor opción sería usar rsync:

rsync example.com:hello.txt

Esto siempre le dará el archivo tal como está en el servidor, solo transfiriendo las diferencias entre la copia local y la remota si difieren, y está disponible universalmente.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.