不知道你是否也曾像我一樣面對(duì)這樣的問題:想要簡單的在遠(yuǎn)程主機(jī)上上傳下載數(shù)據(jù)文件、運(yùn)行個(gè)命令,但要么需要通過ssh直接登錄主機(jī),要么需要頻繁的輸入ssh或scp等命令以及ip地址,密碼。
sync-deploy工具集是我去年在解決這樣的問題以及遠(yuǎn)程部署PBS計(jì)算任務(wù)不便時(shí)開始寫,其實(shí)質(zhì)是一堆shell腳本。最近考慮到我有時(shí)候需要增加主機(jī)、切換主機(jī),于是又新增了相應(yīng)的命令,因此也再次匯總整理一下這些命令。
只要系統(tǒng)可以執(zhí)行shell,基本都能用這個(gè)工具,因?yàn)樗膶?shí)現(xiàn)基本就是對(duì)ssh和scp的封裝。
下面我對(duì)目前可用的10個(gè)命令進(jìn)行簡要介紹,一些詳情可以閱讀https://github.com/ShixiangWang/sync-deploy。
主要分為下載、配置和使用三部分,前兩部分都是一次性步驟。
下載
或克?。?/p>
git clone https://github.com/ShixiangWang/sync-deploy.git
下載后執(zhí)行add_path.sh腳本將命令添加到環(huán)境路徑中,這樣無論你處于什么目錄都能使用。
cd sync-deploy/src
./add_path.sh
如果是蘋果系統(tǒng),默認(rèn)會(huì)將路徑寫入~/.bash_profile;如果是其他系統(tǒng),默認(rèn)會(huì)寫入~/.bashrc。如果使用的其他sh,比如zsh,那么系統(tǒng)識(shí)別路徑不是上述兩者,可以通過-d選項(xiàng)指定。
除了
sync-command命令沒有選項(xiàng),其他命令基本都有選項(xiàng)需要指定。
準(zhǔn)備與配置
首先在服務(wù)器端配置本地機(jī)器的公鑰,以便于實(shí)現(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(本地機(jī)器.ssh子目錄下)中文本內(nèi)容拷貝到服務(wù)器.ssh子目錄中的authorized_keys中,放在已有文本后面。如果該文件不存在則創(chuàng)建。
進(jìn)行測試,如果不需要密碼登錄則成功。
然后點(diǎn)擊打開當(dāng)前目錄(src/)的sync-setting文件,將遠(yuǎn)程主機(jī)的host名與ip地址改為你自己的(也可以使用后面的sync-hostadd命令)。
如果ssh服務(wù)還沒有開啟,請(qǐng)參考https://www.linuxidc.com/Linux/2015-01/112045.htm解決。
使用
使用可以分為4種類型:
- 上傳/下載文件
- 運(yùn)行命令或腳本
- 增加/刪除以及切換主機(jī)
- PBS任務(wù)計(jì)算
下面我列出對(duì)應(yīng)的命令,使用非常簡單,可以通過命令 + h選項(xiàng)的方式閱讀使用說明(除了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 - 下載文件(夾)
運(yùn)行命令或腳本
- sync-commad - 后面直接接運(yùn)行的遠(yuǎn)程主機(jī)命令,命令最好用引號(hào)括起來,以與本地主機(jī)命令或文件/路徑區(qū)別
比如查看遠(yuǎn)程主機(jī)家目錄,為展示區(qū)別,我看看本地主機(jī)家目錄:
$ sync-command 'ls'
biodata
download
practice
readme.md
soft
tmp
workspace
zhuqi
$ ls
Applications Documents Library Music Public
Desktop Downloads Movies Pictures
- sync-run 運(yùn)行遠(yuǎn)程主機(jī)可執(zhí)行文件
增加/刪除以及切換主機(jī)
- sync-hostadd 增加主機(jī)
- sync-hostdel 刪除主機(jī)
- sync-switch 切換主機(jī)
PBS任務(wù)計(jì)算
- sync-template 新建PBS任務(wù)模板
- sync-deploy 部署PBS計(jì)算任務(wù)
- sync-check 檢查PBS任務(wù)狀態(tài)
配合使用,威力無窮~