Ssh
gzip 壓縮本地文件夾並將其解壓縮到遠端伺服器
我是這些命令的新手。我正在嘗試 gzip 一個本地文件夾並在遠端伺服器上解壓縮它。問題是,gzipping 和 unzip 必須即時進行。我嘗試了很多,我認為最接近的一種是:
tar cf dist.tar ~/Documents/projects/myproject/dist/ | ssh root@13.21.13.12:~/public_html/ "tar zx ~/Documents/projects/myproject/dist.tar"
正如您在上面看到的,我正在嘗試將 dist 文件夾發送到遠端伺服器,但在此之前我正在嘗試動態壓縮文件夾(看起來上面的命令中沒有發生這種情況)。
- 本地文件夾:
~/Documents/projects/myproject/dist/
- 遠端文件夾:(
~/public_html
直接部署到live)當然,gzip 創建的文件不能存在,它應該在執行中發生。
我的意圖是通過像
sh file.command
. 換句話說,我正在嘗試部署我在dist
文件夾中的編譯項目,以便在sh
執行命令時生效。每次我對項目進行更改時,我都不想手動執行此操作。
如果您
rsync
隨後使用它,因為它利用現有文件允許它僅傳輸差異(即不同的文件部分):rsync -az ~/Documents/projects/myproject/dist/ root@13.21.13.12:public_html/
--delete
每次添加標誌以完全覆蓋目標目錄樹。如果您想查看發生了什麼,請添加-v
.如果您沒有
rsync
,那麼使用這種效率較低的解決方案tar
就足夠了:( cd ~/Documents/projects/myproject/dist && tar czf - . ) | ssh root@13.21.13.12 'cd public_html && tar xzf -'
請注意,壓縮 tarball 的寫入和讀取是通過stdout和stdin(
-
文件名)進行的。如果您使用tar
的是 GNU,您可以-C
在處理之前使用 設置正確的目錄,而這裡我們使用的是老式的(傳統的?)cd
。添加v
標誌(在接收端)以查看發生了什麼,即tar xzvf ...
.