Rsync 超過 ssh 資料夾深度限制?

Rsync 超過 ssh 資料夾深度限制?

我正在進行伺服器遷移並遇到以下問題:

我正在運行 rsync 來遷移所有數據,但由於某種原因存在資料夾深度限制...這是透過 ssh 命令上的 rsync 完成的:

rsync -raz --verbose --update --delete --exclude-from 'rsync-exclude.txt' /home 192.168.70.50:/

70.50 是新伺服器,我在舊伺服器上執行命令。資料夾結構非常深,最多可達 20 個資料夾。

因此,大多數文件和資料夾都會被複製,但資料夾深度為 10 及以上的所有文件和資料夾都不會被複製。如果我指定更深的資料夾

rsync -raz --verbose --update --delete --exclude-from 'rsync-exclude.txt'/home/user/blablabla/domain/web to 192.168.70.50:/home/user/blablabla/domain

它開始遞歸複製剩餘的資料夾......

有人可以解決這個問題嗎?

答案1

rsync對其遍歷的子目錄的深度沒有限制。更具體地說,它超出了Linux檔案系統的限制。我剛剛複製了大約 500 層深度的內容,rsync 複製得很好。

如果您遇到此問題,請檢查以下內容:

  • 目標檔案系統是否無法處理那麼多子目錄?
  • 目的地已滿嗎?
  • --exclude-from 檔案是否指定了限制檔案的內容?
  • 路徑的總長度(“d/d/d/d”是 4 個級別,但 7 個字元)是否超出了檔案系統允許的範圍?
  • 關閉增量遞歸可以使其工作嗎? --no-inc-recursive(這是一個較新的演算法,您可能已經發現了一個錯誤)
  • 複製是否使用其他技術?
  • 使用(或不使用)壓縮時問題會消失嗎?-z

這是另一種可以嘗試的技術。如果它有效,但rsync沒有,那麼您可能發現了以下錯誤rsync

這將tar一側的文件,將 tar 文件發送到 stdout,通過 ssh 發送到另一側並解壓縮那裡的文件。

SOURCEDIR=/path/to/source
DESTHOST=machinename
DESTDIR=/path/to/destination
cd "$SOURCEDIR" && tar -c -v -f - . | ssh "$DESTHOST" "cd $DESTDIR && tar -x -p -f -"

警告:如果 $DESTDIR 中有空格或特殊字符,則需要更仔細地引用上述內容。

相關內容