我在本地機器上有一個目錄,我想使用Fabric將其複製到遠程機器(並對其進行重命名)。我知道我可以使用put()
複製文件,但是一個目錄怎麼樣。我知道使用scp很容易,但如果可能的話,我寧願從我的fabfile.py
之內完成。如何使用Fabric將目錄複製到遠程計算機?
70
A
回答
98
您可以使用put
爲該以及(至少在1.0.0):
local_path
可能是一個相對或絕對的本地文件或目錄路徑,並可能包含殼式通配符,正如Python glob模塊所理解的那樣。 Tilde擴展(由os.path.expanduser實現)也被執行。
參見:http://docs.fabfile.org/en/1.0.0/api/core/operations.html#fabric.operations.put
更新:這個例子在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
# ...
28
我也想看看工程工具模塊正常工作(對我來說):面料.contrib.project Documentation
這有一個upload_project
功能,它需要一個源和目標目錄。更好的是,有一個使用rsync的rsync_project
函數。這很好,因爲它只更新已更改的文件,並接受像「排除」這樣的額外參數,這對於執行諸如排除.git
目錄之類的操作很不錯。
例如:
from fabric.contrib.project import rsync_project
def _deploy_ec2(loc):
rsync_project(local_dir=loc, remote_dir='/var/www', exclude='.git')
相關問題
- 1. 使用ansible將文件複製到遠程計算機的/ etc/systemd /目錄
- 2. 將文件夾從遠程計算機(Azure)複製到遠程計算機
- 3. 使用WMI將文件從本地計算機複製到遠程計算機
- 4. 使用SFTP將數據從STDOUT複製到遠程計算機
- 5. 使用遠程管理憑據將文件複製到遠程計算機
- 6. 如何使用VFSJFileChooser訪問遠程計算機目錄
- 7. 如何使用scp將文件從遠程計算機(運行Linux)複製到我的Windows計算機?
- 8. 將子文件夾從遠程機器複製到遠程機器目錄
- 9. 將文件複製到遠程計算機
- 10. 將文件複製到遠程計算機
- 11. 將文件複製並解壓縮到遠程計算機 - ant
- 12. 在vbscript中將文件複製到遠程計算機
- 13. 將非exe文件複製到遠程計算機
- 14. VSTS通過SSH將文件複製到遠程計算機
- 15. 登錄遠程計算機
- 16. 如何將目錄從本地機器複製到遠程機器
- 17. 我可以複製到遠程計算機,但不能從使用Python複製
- 18. 使用staf將文件從linux複製到遠程windows計算機
- 19. 使用RCP或FTP將遠程UNIX計算機上的文件複製到本地Windows計算機上
- 20. 如何使用nAnt將文件複製到非域計算機
- 21. 使用VB.NET在遠程計算機上創建目錄
- 22. 使用shell腳本在遠程計算機上刪除目錄
- 23. 無法使用shutil從遠程計算機複製文件
- 24. 如何在遠程計算機上創建虛擬目錄
- 25. 如何將遠程圖像複製到我的網站目錄?
- 26. 如何將文件複製到遠程機器的不同目錄中
- 27. ansible rsync或將隨機命名的文件複製到遠程計算機
- 28. 如何通過遠程計算機將腳本寫入ssh到計算機?
- 29. 如何在登錄到遠程ssh服務器時將文件複製到本地計算機
- 30. FTP:將遠程計算機目錄中的文件計數到源Linux計算機
感謝。我得到一個例外(是一個目錄)的例子嗎? – 2011-03-15 16:42:41
@gaviscon_man:增加了一個(測試過的)例子,但它真的只是香草'fab',沒有任何竅門。如果目標目錄不存在,你會得到錯誤 - 所以我在'put'之前包含了一個簡單的'mkdir -p'。 (但是其他的子目錄,在testdirectory下面會自動在遠程機器上創建)。 – miku 2011-03-15 16:59:42
謝謝,這非常有幫助。 – 2011-03-15 17:03:02