Linux

通過第三台在兩台機器之間移動文件和目錄,保留權限和使用者名

  • November 11, 2012

情況如下:

  • 機器 A 有一個可通過 rsync 訪問的文件儲存庫
  • 機器 B 需要上述所有權限和所有權完整的文件(包括組等)
  • 機器 C 可以訪問 A 和 B,但有一組完全不同的使用者。

通常,我會直接在 A 和 B 之間對所有內容進行 rsync,但由於目前頻寬嚴重受限,我需要一些不同的東西,因為 rsync 在建構 430 個文件列表後超時(49Mb 未壓縮……可以壓縮到〜7Mb)。

到目前為止我已經嘗試過: rsync 從 A 到 C 的所有內容,對其進行 tar,將 tarball 複製過來,然後解壓縮,但是,這會弄亂所有權和/或權限。

要將其從 A 同步到 C,我執行以下命令:

rsync --numeric-ids --password-file=/root/rsync_pwd_file -oaPvu rsync://exsync@example.com/portal_2/ ./portal_2/

…從事物的外觀來看,它們確實以正確的所有權/權限/標誌/所有內容最終在 C 上(雖然不是 100% 確定.. 還有更多的開關可以放在那裡嗎?我錯過了什麼嗎? ?)

複製 tarball 很簡單(由於頻寬的原因,它像單腿烏龜一樣慢,但它的校驗和沒問題)

我不確定的是用於創建和提取 tarball 的標誌和開關,所以有人可以提供完整的命令來從機器 C 上的 /root/portal_2 創建一個 tarball(一切都完好無損)並將 tarball 提取到 /var /ex/portal_2 在機器 B 上??

此外,還有其他值得一提的方法可以讓我執行此操作嗎?我對 A 和 C 有 root 訪問權限,而我只有對 B 的 rsync 訪問權限。

**PS:**我在機器 B 上執行 rsync v2.6.9,不幸的是我沒有機會升級到 v3

所以,回答焦油問題:

cd /root; tar -jcv --numeric-owner -f portal_2.tar.bz2 portal_2

cd /var/ex; tar xf portal_2.tar.bz2

我不太確定我是否正確閱讀了您的問題。A可以直接和B通話嗎?如果是這樣,只需使用rsync -e 'ssh -oServerAliveInterval=30'以避免 rsync/ssh 超時。

如果 A 不能直接與 B 交談,我會嘗試以下方法:

  • 從 C ssh 到 A,反向埠轉發到 B ( ssh -R2222:B:22 A)
  • 在 A rsync 到 localhost:2222 又名埠轉發
  • 用於rsync -e 'ssh -oServerAliveInterval=30'避免 rsync/ssh 超時。

這樣,您就可以迴避使用者問題並解決超時問題。

引用自:https://serverfault.com/questions/447424