Tengo un directorio en mi máquina local que me gustaría copiar a una máquina remota (y cambiarle el nombre) usando Fabric. Sé que puedo copiar el archivo usando put()
, pero ¿qué pasa con un directorio? Sé que es bastante fácil usando scp, pero preferiría hacerlo desde mi fabfile.py
si es posible.¿Cómo copio un directorio a una máquina remota usando Fabric?
Respuesta
Puede utilizar put
para eso también (al menos en 1.0.0):
local_path
puede ser un archivo local relativa o absoluta o ruta de directorio, y puede contener comodines de estilo concha, según lo entiende Python glob módulo. La expansión de Tilde (según lo implementado por os.path.expanduser) también se realiza.
Ver: http://docs.fabfile.org/en/1.0.0/api/core/operations.html#fabric.operations.put
Actualización: Este ejemplo funciona bien (para mí) en 1.0.0 .:
from fabric.api import env
from fabric.operations import run, put
env.hosts = ['[email protected]']
def copy():
# make sure the directory is there!
run('mkdir -p /home/frodo/tmp')
# our local 'testdirectory' - it may contain files or subdirectories ...
put('testdirectory', '/home/frodo/tmp')
# [[email protected]] Executing task 'copy'
# [[email protected]] run: mkdir -p /home/frodo/tmp
# [[email protected]] put: testdirectory/HELLO -> \
# /home/frodo/tmp/testdirectory/HELLO
# [[email protected]] put: testdirectory/WORLD -> \
# /home/frodo/tmp/testdirectory/WORLD
# ...
También me gustaría ver en el módulo de Herramientas del proyecto: Tela .contrib.project Documentation
Esto tiene un upload_project
función que toma un directorio de origen y destino. Aún mejor, hay una función rsync_project
que usa rsync. Esto es bueno porque solo actualiza los archivos que han cambiado y acepta argumentos adicionales como "excluir", lo cual es bueno para hacer cosas como excluir el directorio .git
.
Por ejemplo:
from fabric.contrib.project import rsync_project
def _deploy_ec2(loc):
rsync_project(local_dir=loc, remote_dir='/var/www', exclude='.git')
'fabric.contrib.project' docs para la última versión: http://docs.fabfile.org/en/latest/api/contrib/project.html – lsh
mucho mejor que' put/get'. también funciona perfectamente para buscar cargas de usuarios desde sitios web en vivo, por ejemplo ('upload = False', no es obvio que funcione de las dos maneras). – benzkji
tuve que envolver el directorio excluido en una lista para que esto funcione: 'exclude = ['. Git']' –
- 1. ¿Cómo copio una función de python a una máquina remota y luego la ejecuto?
- 2. ¿Cómo copio una imagen remota en python?
- 3. ¿Cómo copio un directorio de una ubicación a otra usando Ant?
- 4. Acceso a TEAMCITY desde una máquina remota
- 5. ¿Cómo copio los archivos y el árbol de carpetas en la máquina remota?
- 6. ¿Cómo copio archivos en otro directorio usando MSBuild?
- 7. Ejecutar ssh-add con Fabric en una máquina
- 8. cmake "make install" a la máquina remota?
- 9. Eclipse - Ejecutar proyecto en una máquina remota
- 10. ¿Cómo establecer el directorio de trabajo para una tarea Fabric?
- 11. Copie un archivo no exe en una máquina remota
- 12. Cómo copio un archivo de una gema a mi aplicación de rieles usando rastrillo
- 13. Cómo ejecutar el proceso en una máquina remota, en C#
- 14. ¿Se está ejecutando un proceso en una máquina remota?
- 15. Múltiples comandos en la máquina remota usando script de shell
- 16. Cómo utilizar el volcado de MySQL desde una máquina remota
- 17. cómo comprobar si sshd se ejecuta en una máquina remota
- 18. Cómo copio datos binarios a un stringstream
- 19. Instalar un servicio de Windows en una máquina remota usando el nombre de usuario dado
- 20. Copie un directorio a una unidad diferente
- 21. ¿Cómo puedo ejecutar comandos de Linux en una máquina remota usando Java?
- 22. qmake: ¿Cómo copio .dll/.so's en el directorio de salida?
- 23. ¿Cómo obtener un valor de registro de una máquina remota si no conozco su tipo? (C#)
- 24. Reiniciar IIS en la máquina remota
- 25. ¿Cómo copio un archivo de un servidor a otro?
- 26. En SVN, ¿cómo copio solo los subdirectorios de un directorio a otro?
- 27. Matplotlib: mostrar el diagrama en una máquina remota
- 28. WMI para reiniciar la máquina remota
- 29. aplicación de la máquina remota abierto
- 30. ¿Maneras alternativas de emitir comandos múltiples en una máquina remota usando SSH?
Gracias. Me aparece una excepción (¿es un directorio) alguna posibilidad de ejemplo? –
@gaviscon_man: Se agregó un ejemplo (probado), pero realmente es solo 'fab' vainilla, no hay trucos. Obtendrá errores, si los directorios de destino ya no están en su lugar, así que incluí un simple 'mkdir -p' antes del' put'. (Pero otros subdirectorios, que están debajo del 'testdirectory' se crearán automáticamente en la máquina remota). – miku
Gracias, eso es muy útil. –