自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

scp 用戶的 rsync 遷移指南

系統(tǒng) Linux
本文將為熟悉 scp 的人提供一個(gè)介紹和過渡的指南。讓我們跳進(jìn)最常見的場(chǎng)景:復(fù)制文件和復(fù)制目錄。

[[340607]]

在 SSH 8.0 預(yù)發(fā)布公告中,OpenSSH 項(xiàng)目表示,他們認(rèn)為 scp 協(xié)議已經(jīng)過時(shí),不靈活,而且不容易修復(fù),然后他們繼而推薦使用 sftp 或 rsync 來進(jìn)行文件傳輸。

然而,很多用戶都是從小用著 scp 命令長(zhǎng)大的,所以對(duì) rsync 并不熟悉。此外,rsync 可以做的事情也遠(yuǎn)不止復(fù)制文件,這可能會(huì)給菜鳥們留下復(fù)雜和難以掌握的印象。尤其是,scp 命令的標(biāo)志大體上可以直接對(duì)應(yīng)到 cp 命令的標(biāo)志,而 rsync 命令的標(biāo)志卻和它大相徑庭。

本文將為熟悉 scp 的人提供一個(gè)介紹和過渡的指南。讓我們跳進(jìn)最常見的場(chǎng)景:復(fù)制文件和復(fù)制目錄。

復(fù)制文件

對(duì)于復(fù)制單個(gè)文件而言,scp 和 rsync 命令實(shí)際上是等價(jià)的。比方說,你需要把 foo.txt 傳到你在名為 server 的服務(wù)器上的主目錄下:

  1. $ scp foo.txt me@server:/home/me/

相應(yīng)的 rsync 命令只需要輸入 rsync 取代 scp

  1. $ rsync foo.txt me@server:/home/me/

復(fù)制目錄

對(duì)于復(fù)制目錄,就有了很大的分歧,這也解釋了為什么 rsync 會(huì)被認(rèn)為比 scp 更復(fù)雜。如果你想把 bar 目錄復(fù)制到 server 服務(wù)器上,除了指定 ssh 信息外,相應(yīng)的 scp 命令和 cp 命令一模一樣。

  1. $ scp -r bar/ me@server:/home/me/

對(duì)于 rsync,考慮的因素比較多,因?yàn)樗且粋€(gè)比較強(qiáng)大的工具。首先,我們來看一下最簡(jiǎn)單的形式:

  1. $ rsync -r bar/ me@server:/home/me/

看起來很簡(jiǎn)單吧?對(duì)于只包含目錄和普通文件的簡(jiǎn)單情況,這就可以了。然而,rsync 更在意發(fā)送與主機(jī)系統(tǒng)中一模一樣的文件。讓我們來創(chuàng)建一個(gè)稍微復(fù)雜一些,但并不罕見的例子:

  1. # 創(chuàng)建多級(jí)目錄結(jié)構(gòu)
  2. $ mkdir -p bar/baz
  3. # 在其根目錄下創(chuàng)建文件
  4. $ touch bar/foo.txt
  5. # 現(xiàn)在創(chuàng)建一個(gè)符號(hào)鏈接指回到該文件
  6. $ cd bar/baz
  7. $ ln -s ../foo.txt link.txt
  8. # 返回原位置
  9. $ cd -

現(xiàn)在我們有了一個(gè)如下的目錄樹:

  1. bar
  2. ├── baz
  3. └── link.txt -> ../foo.txt
  4. └── foo.txt
  5.  
  6. 1 directory, 2 files

如果我們嘗試上面的命令來復(fù)制 bar,我們會(huì)注意到非常不同的(并令人驚訝的)結(jié)果。首先,我們來試試 scp

  1. $ scp -r bar/ me@server:/home/me/

如果你 ssh 進(jìn)入你的服務(wù)器,看看 bar 的目錄樹,你會(huì)發(fā)現(xiàn)它和你的主機(jī)系統(tǒng)有一個(gè)重要而微妙的區(qū)別:

  1. bar
  2. ├── baz
  3. └── link.txt
  4. └── foo.txt
  5.  
  6. 1 directory, 2 files

請(qǐng)注意,link.txt 不再是一個(gè)符號(hào)鏈接,它現(xiàn)在是一個(gè) foo.txt 的完整副本。如果你習(xí)慣于使用 cp,這可能會(huì)是令人驚訝的行為。如果你嘗試使用 cp -r 復(fù)制 bar 目錄,你會(huì)得到一個(gè)新的目錄,里面的符號(hào)鏈接和 bar 的一樣。現(xiàn)在如果我們嘗試使用之前的 rsync 命令,我們會(huì)得到一個(gè)警告:

  1. $ rsync -r bar/ me@server:/home/me/
  2. skipping non-regular file "bar/baz/link.txt"

rsync 警告我們它發(fā)現(xiàn)了一個(gè)非常規(guī)文件,并正在跳過它。因?yàn)槟銢]有告訴它可以復(fù)制符號(hào)鏈接,所以它忽略了它們。rsync 在手冊(cè)中有一節(jié)“符號(hào)鏈接”,解釋了所有可能的行為選項(xiàng)。在我們的例子中,我們需要添加 -links 標(biāo)志:

  1. $ rsync -r --links bar/ me@server:/home/me/

在遠(yuǎn)程服務(wù)器上,我們看到這個(gè)符號(hào)鏈接是作為一個(gè)符號(hào)鏈接復(fù)制過來的。請(qǐng)注意,這與 scp 復(fù)制符號(hào)鏈接的方式不同。

  1. bar/
  2. ├── baz
  3. └── link.txt -> ../foo.txt
  4. └── foo.txt
  5.  
  6. 1 directory, 2 files

為了省去一些打字工作,并利用更多的文件保護(hù)選項(xiàng),在復(fù)制目錄時(shí)可以使用歸檔標(biāo)志 -archive(簡(jiǎn)稱 -a)。該歸檔標(biāo)志將做大多數(shù)人所期望的事情,因?yàn)樗梢詫?shí)現(xiàn)遞歸復(fù)制、符號(hào)鏈接復(fù)制和許多其他選項(xiàng)。

  1. $ rsync -a bar/ me@server:/home/me/

如果你感興趣的話,rsync 手冊(cè)頁(yè)有關(guān)于存檔標(biāo)志的深入解釋。

注意事項(xiàng)

不過,使用 rsync 有一個(gè)注意事項(xiàng)。使用 scp 比使用 rsync 更容易指定一個(gè)非標(biāo)準(zhǔn)的 ssh 端口。例如,如果 server 使用 8022 端口的 SSH 連接,那么這些命令就會(huì)像這樣:

  1. $ scp -P 8022 foo.txt me@server:/home/me/

而在使用 rsync 時(shí),你必須指定要使用的“遠(yuǎn)程 shell”命令,默認(rèn)是 ssh。你可以使用 -e 標(biāo)志來指定。

  1. $ rsync -e 'ssh -p 8022' foo.txt me@server:/home/me/

rsync 會(huì)使用你的 ssh 配置;但是,如果你經(jīng)常連接到這個(gè)服務(wù)器,你可以在你的 ~/.ssh/config 文件中添加以下代碼。這樣你就不需要再為 rsync 或 ssh 命令指定端口了!

  1. Host server
  2. Port 8022

另外,如果你連接的每一臺(tái)服務(wù)器都在同一個(gè)非標(biāo)準(zhǔn)端口上運(yùn)行,你還可以配置 RSYNC_RSH 環(huán)境變量。

為什么你還是應(yīng)該切換到 rsync?

現(xiàn)在我們已經(jīng)介紹了從 scp 切換到 rsync 的日常使用案例和注意事項(xiàng),讓我們花一些時(shí)間來探討一下為什么你可能想要使用 rsync 的優(yōu)點(diǎn)。很多人在很久以前就已經(jīng)開始使用 rsync 了,就是因?yàn)檫@些優(yōu)點(diǎn)。

即時(shí)壓縮

如果你和服務(wù)器之間的網(wǎng)絡(luò)連接速度較慢或有限,rsync 可以花費(fèi)更多的 CPU 處理能力來節(jié)省網(wǎng)絡(luò)帶寬。它通過在發(fā)送數(shù)據(jù)之前對(duì)數(shù)據(jù)進(jìn)行即時(shí)壓縮來實(shí)現(xiàn)。壓縮可以用 -z 標(biāo)志來啟用。

差量傳輸

rsync 也只在目標(biāo)文件與源文件不同的情況下復(fù)制文件。這可以在目錄中遞歸地工作。例如,如果你拿我們上面的最后一個(gè) bar 的例子,并多次重新運(yùn)行那個(gè) rsync 命令,那么在最初的傳輸之后就不會(huì)有任何傳輸。如果你知道你會(huì)重復(fù)使用這些命令,例如備份到 U 盤,那么使用 rsync 即使是進(jìn)行本地復(fù)制也是值得的,因?yàn)檫@個(gè)功能可以節(jié)省處理大型數(shù)據(jù)集的大量的時(shí)間。

同步

顧名思義,rsync 可以做的不僅僅是復(fù)制數(shù)據(jù)。到目前為止,我們只演示了如何使用 rsync 復(fù)制文件。如果你想讓 rsync 把目標(biāo)目錄變成源目錄的樣子,你可以在 rsync 中添加刪除標(biāo)志 -delete。這個(gè)刪除標(biāo)志使得 rsync 將從源目錄中復(fù)制不存在于目標(biāo)目錄中的文件,然后它將刪除目標(biāo)目錄中不存在于源目錄中的文件。結(jié)果就是目標(biāo)目錄和源目錄完全一樣。相比之下,scp 只會(huì)在目標(biāo)目錄下添加文件。

結(jié)論

對(duì)于簡(jiǎn)單的使用情況,rsync 并不比老牌的 scp 工具復(fù)雜多少。唯一顯著的區(qū)別是在遞歸復(fù)制目錄時(shí)使用 -a 而不是 -r。然而,正如我們看到的,rsync 的 -a 標(biāo)志比 scp 的 -r 標(biāo)志更像 cp 的 -r 標(biāo)志。

希望通過這些新命令,你可以加快你的文件傳輸工作流程。 

責(zé)任編輯:龐桂玉 來源: Linux中國(guó)
相關(guān)推薦

2023-11-06 12:45:00

GormGo

2024-09-08 12:25:37

2020-04-26 14:25:56

目錄Linux操作系統(tǒng)

2012-03-08 09:23:28

WindowsServer 2008

2020-08-17 07:00:00

數(shù)據(jù)遷移數(shù)據(jù)中心技術(shù)

2023-10-19 16:39:38

2023-08-01 21:43:48

2019-01-31 10:53:53

企業(yè)數(shù)據(jù)遷移云端

2024-04-30 10:35:02

數(shù)據(jù)中心

2009-11-18 09:28:44

linuxscp命令

2017-06-30 09:36:10

Android OAPI兼容

2011-11-17 14:27:51

10 GbEWAN遷移

2022-01-19 12:23:36

云遷移云端

2023-09-06 16:26:36

2014-04-21 15:01:15

2017-08-05 16:31:51

TiDBTiSpark數(shù)據(jù)庫(kù)

2010-06-09 15:53:30

UML建模

2009-12-14 11:08:07

Linux scp

2022-06-06 07:24:09

Caddy開源Ubuntu

2011-10-09 13:33:55

云計(jì)算遷移
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)