我正在嘗試透過 ssh 將更改的檔案複製到 godaddy。 Godaddy 很糟糕,所以他們當然不允許 rsync。我可以使用 scp,但我真的只想複製更改的檔案。我認為這是不可能的,所以我想知道是否可以只 scp 所有 php 檔案。
不過,有很多子目錄,所以我需要使用 -r 選項。
有沒有辦法使用 scp 遞歸複製所有副檔名為 的檔案php
?像這樣:
scp -r -name "*php" /local/html/ user@server:/home/html/
(不起作用)
期望的結果
//在本機上 $ 尋找./來源 源/1.php 源/2.php 源/子 源/子/3.php 源/子/4.php 來源/子/不要-copy.txt 來源/子/請勿複製.png 來源/子/子2 源/sub/sub2/5.php 源/sub/sub2/6.php //複製檔案的指令 $ [此處為 scp 指令] //在遠端伺服器上 $ 尋找 ./目的地 目的地/1.php 目的地/2.php 目的地/子 目的地/sub/3.php 目的地/sub/4.php 目的地/子/子2 目的地/sub/sub2/5.php 目的地/sub/sub2/6.php
這不起作用
//在本機上 $ 尋找./來源 源/1.php 源/2.php 源/子 源/子/3.php 源/子/4.php 來源/子/不要-copy.txt 來源/子/請勿複製.png 來源/子/子2 源/sub/sub2/5.php 源/sub/sub2/6.php //複製檔案的指令 $ 光碟源; scp -r *.php 使用者@遠端:/目的地 //在遠端伺服器上 $ 尋找 ./目的地 目的地/1.php 目的地/2.php
也許我們也可以嘗試使用 find,但我很確定這一點不會按原樣工作:
尋找 ./source -name "*.php" -exec scp {} user@remote:{} \;
這行不通,因為我認為你不能{}
在查找中使用多個運算符。
此外,讓路徑在遠端伺服器上對齊可能很棘手,例如,如果 find 返回/users/johndoe/documents/source/1.php
並且您希望它最終位於/home/jane/www/destination/1.php
遠端伺服器上。
答案1
當主機只允許推送內容而不允許 rsync 時,我會執行以下操作:
- 在本機電腦上建立一個「影子」目錄以類似目標結構
- 用於
rsync
推送到此影子目錄,並捕獲輸出(--log-file
如果您想編寫腳本,則可以使用) - 從
rsync
輸出中確定需要刪除的文件,或推送並製作列表 - 也許(取決於您推送的方式):從僅需要更改的文件創建一個包
- 啟動你的推送工具 - ftp、scp 等 - 並讓它在列表中的文件上運行
答案2
你能不做嗎scp -r *.php destination
?
答案3
scp -r user@ip:/data/files/*.php /tmp/files/