Linux

rsync 協議不兼容

  • March 24, 2021

使用以下命令從遠端伺服器執行 rsync pull 時:

/usr/bin/rsync -av -e ssh --delete --chmod=a+rwx,g+rwx,o-wx --dry-run username@server:/remote/path/ /home/dir/local/path

我收到以下錯誤:

receiving file list ... Invalid flist flag: 1004
rsync error: protocol incompatibility (code 2) at flist.c(2354) [Receiver=3.0.7]

從遠端到本地執行反向操作(即推)時,我得到以下資訊:

building file list ... Invalid flist flag: 1004
rsync error: protocol incompatibility (code 2) at flist.c(2354) [Receiver=3.0.7]
rsync: connection unexpectedly closed (8 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(468) [sender=2.6.8]

我試過一個一個刪除參數,它似乎與 -a 標誌有關

環境

# local machine
Linux lbox 2.6.32-21-generic #32-Ubuntu SMP Fri Apr 16 08:10:02 UTC 2010 i686 GNU/Linux
# rsync version
rsync  version 3.0.7  protocol version 30

# remote machine
FreeBSD rbox 6.4-STABLE FreeBSD 6.4-STABLE #0: Mon Feb 22 01:05:13 EST 2010     UNIX-BSD
rsync  version 2.6.8  protocol version 29

這可以輕鬆解決嗎?

有趣的是,在源機器和目標機器之間放置一個中間機器可以達到預期的效果:

IE。

機器 1(起點)>> 機器 2(中間)>> 機器 3(目的地)

machine 1: rsync  version 2.6.8  protocol version 29
machine 2: rsync  version 3.0.3  protocol version 30
machine 3: rsync  version 3.0.7  protocol version 30

FreeBSD 機器有一個 6 年前的 rsync 版本,它使用較舊的協議版本。--protocol=29您可以通過添加到您的rsync命令來強制新版本的 rsync 使用舊協議。

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