Ssh

gzip 壓縮本地文件夾並將其解壓縮到遠端伺服器

  • July 7, 2019

我是這些命令的新手。我正在嘗試 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 的寫入和讀取是通過stdoutstdin-文件名)進行的。如果您使用tar的是 GNU,您可以-C在處理之前使用 設置正確的目錄,而這裡我們使用的是老式的(傳統的?)cd。添加v標誌(在接收端)以查看發生了什麼,即tar xzvf ....

引用自:https://unix.stackexchange.com/questions/527870