不知道你是否也曾像我一樣面對這樣的問題:想要簡單的在遠程主機上上傳下載數(shù)據(jù)文件、運行個命令,但要么需要通過ssh直接登錄主機冈敛,要么需要頻繁的輸入ssh或scp等命令以及ip地址贴唇,密碼。
sync-deploy工具集是我去年在解決這樣的問題以及遠程部署PBS計算任務不便時開始寫振乏,其實質(zhì)是一堆shell腳本。最近考慮到我有時候需要增加主機秉扑、切換主機慧邮,于是又新增了相應的命令,因此也再次匯總整理一下這些命令舟陆。
只要系統(tǒng)可以執(zhí)行shell误澳,基本都能用這個工具,因為它的實現(xiàn)基本就是對ssh和scp的封裝秦躯。
下面我對目前可用的10個命令進行簡要介紹忆谓,一些詳情可以閱讀https://github.com/ShixiangWang/sync-deploy。
主要分為下載踱承、配置和使用三部分倡缠,前兩部分都是一次性步驟。
下載
或克戮セ睢:
git clone https://github.com/ShixiangWang/sync-deploy.git
下載后執(zhí)行add_path.sh
腳本將命令添加到環(huán)境路徑中昙沦,這樣無論你處于什么目錄都能使用。
cd sync-deploy/src
./add_path.sh
如果是蘋果系統(tǒng)载荔,默認會將路徑寫入~/.bash_profile
盾饮;如果是其他系統(tǒng),默認會寫入~/.bashrc
。如果使用的其他sh丘损,比如zsh普办,那么系統(tǒng)識別路徑不是上述兩者,可以通過-d
選項指定徘钥。
除了
sync-command
命令沒有選項衔蹲,其他命令基本都有選項需要指定。
準備與配置
首先在服務器端配置本地機器的公鑰吏饿,以便于實現(xiàn)無密碼文件或命令傳輸踪危。
最簡單的方式是在終端鍵入ssh-keygen
然后一路按回車鍵。
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/wangshx/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/wangshx/.ssh/id_rsa.
Your public key has been saved in /c/Users/wangshx/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:XaNcpRZHmMp65eHKDzYIzbXYB0ZAb3EHYc7T3azgQD4 wangshx@wsx-liuxslab
The key's randomart image is:
+---[RSA 2048]----+
| .o.+ **= |
| = *oB o.|
| .E.@ . +|
| o Oo@o+ . |
| . S.*+o.. |
| .....o |
| .o+. |
| .oo |
| .. |
+----[SHA256]-----+
如果你使用的是windows7或者10猪落,不知道怎么使用ssh贞远,我推薦你安裝git bash
,windows10用戶也可以開啟Ubuntu子系統(tǒng)以便于使用笨忌。
將公鑰id_sra.pub
(本地機器.ssh子目錄下)中文本內(nèi)容拷貝到服務器.ssh子目錄中的authorized_keys
中蓝仲,放在已有文本后面。如果該文件不存在則創(chuàng)建官疲。
進行測試袱结,如果不需要密碼登錄則成功。
然后點擊打開當前目錄(src/)的sync-setting
文件途凫,將遠程主機的host名與ip地址改為你自己的(也可以使用后面的sync-hostadd
命令)垢夹。
如果ssh服務還沒有開啟,請參考https://www.linuxidc.com/Linux/2015-01/112045.htm解決维费。
使用
使用可以分為4種類型:
- 上傳/下載文件
- 運行命令或腳本
- 增加/刪除以及切換主機
- PBS任務計算
下面我列出對應的命令果元,使用非常簡單,可以通過命令 + h選項
的方式閱讀使用說明(除了sync-command
)犀盟,比如sync-download
下載文件(文件夾):
Usage: sync-download -n 'remote_files' -d localdir
>>> remote_files: files you wanna download, can be directories or filenames
>>> localdir: The only one directory you wanna transfer to.
>>> Do not set more than one destdir, error will occur.
>>> Please do note the 'remote_files' must be quoted otherwise you use absolute file path!!!
>>>
>>> examples:
sync-download -n '~/test/*' -d ./test
or
sync-download -n /public/home/liuxs/test/* -d ./test
上傳/下載文件
- sync-upload - 上傳文件(夾)
- sync-download - 下載文件(夾)
運行命令或腳本
- sync-commad - 后面直接接運行的遠程主機命令而晒,命令最好用引號括起來,以與本地主機命令或文件/路徑區(qū)別
比如查看遠程主機家目錄阅畴,為展示區(qū)別倡怎,我看看本地主機家目錄:
$ sync-command 'ls'
biodata
download
practice
readme.md
soft
tmp
workspace
zhuqi
$ ls
Applications Documents Library Music Public
Desktop Downloads Movies Pictures
- sync-run 運行遠程主機可執(zhí)行文件
增加/刪除以及切換主機
- sync-hostadd 增加主機
- sync-hostdel 刪除主機
- sync-switch 切換主機
PBS任務計算
- sync-template 新建PBS任務模板
- sync-deploy 部署PBS計算任務
- sync-check 檢查PBS任務狀態(tài)
配合使用,威力無窮~