¿Puedo scp una carpeta que tiene subcarpetas?

31

Tengo una carpeta que contiene archivos para un sitio web estático como:

/site/index.html
/site/css/css.css
/site/js/js.js
/site/images/...

Si actualizo algo en mi computadora portátil, quiero un solo comando para enviar los archivos a mi servidor ubuntu. No quiero configurar FTP en él si no lo tengo también, preguntándome si scp podría manejar esto.

Blankman
fuente
Prefiero a tartravés de ssh: unix.stackexchange.com/a/10028/79839
chicas el

Respuestas:

56

El comando scp -r source user@target:destrecorrerá todos los subdirectorios de origen y los copiará.

Sin embargo, se scpcomporta como cpy siempre copia archivos, incluso si es igual tanto en el origen como en el destino. [Ver aquí para una solución alternativa.]

Como este es un sitio web estático, lo más probable es que solo esté haciendo actualizaciones, no recreando todo, por lo que probablemente encontrará que las cosas se mueven más rápido si usa rsyncover ssh en lugar de scp. Probablemente algo como

rsync -av -e ssh source user@target:dest

...Para empezar. Si está haciendo esto a través de una LAN, personalmente usaría las opciones -avWpara rsync.

Rsync también le brinda la capacidad de duplicar eliminaciones en su fuente; así que si elimina un archivo de su árbol, puede ejecutarlo rsynccomo se indica arriba e incluir la bandera --deletey eliminará el mismo archivo del lado de destino.

David Mackintosh
fuente
9

scp tiene una bandera recursiva que hará lo que quieras. scp -r /base/directory user@server:/to/location

desde man scp

-r      Recursively copy entire directories.  Note that scp follows symbolic
          links encountered in the tree traversal.
Zypher
fuente
2

scp -r y rsync -r son las formas más confiables de obtener lo que desea, como otros han señalado.

También puede usar sshfs para 'montarlo' como si fuera una unidad local: sshfs user@host:/site /mnt/mountpoint

(Sin embargo, probablemente sea mejor trabajar localmente e implementar con rsync. Solo otra herramienta a tener en cuenta).

Luke Schlather
fuente