scp指定key 遠程Linux服務器到遠程Linux服務器目錄複製。 怎麼樣?




scp指定key (13)

從一個遠程Linux服務器複製一個目錄(使用子目錄和文件)到另一個遠程Linux服務器的最佳方法是什麼? 我已經連接到兩個使用SSH客戶端(如膩子)。 我有兩個root權限。


使用rsync,以便在連接中斷時繼續。 如果有什麼變化,你也可以更快地複制它們!

Rsync與SSH協同工作,因此您的複制操作是安全的。


上面提到的scp通常是最好的方法,但是不要忘記遠程目錄規範中的冒號,否則你會在本地機器上獲得源目錄的副本。


作為非root用戶的理想選擇:

scp -r src $ host:$ path

如果您已經有一些$ host的內容,可以考慮使用帶有ssh的rsync作為隧道。

/艾倫



我使用rdiffbackup http://www.nongnu.org/rdiff-backup/index.html因為它沒有任何花哨的選擇所需要的一切。 它基於rsync算法。 如果您只需複制一次,則可以稍後刪除目標主機上的rdiff-backup-data目錄。

rdiff-backup [email protected]::/source-dir [email protected]::/dest-dir

來自doc:

rdiff-backup還保留子目錄,硬鏈接,開發文件,權限,uid / gid所有權,修改時間,擴展屬性,acls和資源分支。

這是scp -p建議的一個好處,因為-p選項不能保留所有的(例如,對目錄的權限設置不好)

安裝在Ubuntu上:

sudo apt-get install rdiff-backup

我想你可以嘗試一下:

rsync -azvu -e ssh [email protected]:/directory/ [email protected]:/directory2/

(我假設你在host0上,你想直接從host1複製到host2)

如果上述不起作用,您可以嘗試:

ssh [email protected] "/usr/bin/rsync -azvu -e ssh /directory/ [email protected]:/directory2/"

在這裡,如果你已經設置了從host1到host2的無密碼的SSH登錄,


我會修改以前建議的答复:

rsync -avlzp /path/to/sfolder [email protected]:/path/to/remote/dfolder

如下:

-a(用於歸檔)意味著-rlptgoD,所以上面的l和p是多餘的。 我也喜歡包括-H,它複製硬鏈接。 它不是默認的一部分,因為它很貴。 所以現在我們有這個:

rsync -aHvz /path/to/sfolder [email protected]:/path/to/remote/dfolder

你還必須小心斜線。 你可能想要

rsync -aHvz /path/to/sfolder/ [email protected]:/path/to/remote/dfolder

如果希望源“文件夾”的內容出現在目標“dfolder”中。 如果沒有結尾的斜杠,將在目標“dfolder”中創建一個“sfolder”子目錄。


scp -r <directory> <username>@<targethost>:<targetdir>

有兩種方法我通常這樣做,都使用ssh:

scp -r sourcedir/ [email protected]:/dest/dir/

或者,更強大和更快(在傳輸速度方面)方法:

rsync -auv -e ssh --progress sourcedir/ [email protected]:/dest/dir/

閱讀每個命令的手冊頁,如果你想了解更多關於它們如何工作的細節。



如果你真的想要一個精確的副本,你可能也想使用-p開關scp,如果你正在使用。 我發現scp 是從設備讀取的 ,而且我對cpio有問題,所以我個人總是使用tar ,就像這樣:

cd /origin; find . -xdev -depth -not -path ./lost+found -print0 \
| tar --create --atime-preserve=system --null --files-from=- --format=posix \
--no-recursion --sparse | ssh targethost 'cd /target; tar --extract \
--overwrite --preserve-permissions --sparse'

我把這個咒語放在一個文件夾裡,用其他各種方式複製文件。 這是通過SSH複製; 另一個是複製到一個壓縮的存檔,在同一台計算機上複製,並且在SSH太慢時,通過一個未加密的TCP套接字複製。


我喜歡通過ssh來管理tar。

tar cf - [directory] ​​| ssh [用戶名] @ [主機名] tar xf - -C [遠程機器上的目的地]

這種方法給你很多選擇。 既然你應該有根ssh禁用複製文件的多個用戶帳戶是困難的,因為你是以普通用戶登錄到遠程服務器。 為了解決這個問題,你可以在遠程盒子上創建一個保存所有權的tar文件。

tar cf - [directory] ​​| ssh [用戶名] @ [主機名]“cat> output.tar”

對於慢速連接,您可以添加壓縮,z為gzip或j為bzip2。

tar cjf - [directory] ​​| ssh [用戶名] @ [主機名]“cat> output.tar.bz2”

tar czf - [directory] ​​| ssh [用戶名] @ [主機名]“cat> output.tar.gz”

tar czf - [directory] ​​| ssh [用戶名] @ [主機名] tar xzf - -C [遠程機器上的目的地]


scp會完成這個工作,但是有一個問題:到第二個遠程目標的連接將使用第一個遠程目標的配置,所以如果你在本地環境中使用.ssh / config,並且你期望rsa和dsa鍵工作,你必須轉發你的代理到第一個遠程主機。





data-transfer