在两台机器之间移动文件和目录,通过第三方保存权限和用户名

情况如下:

  • 机器A有一个可通过rsync访问的文件存储库
  • 机器B需要上述所有权限和所有权完整的文件(包括组等)
  • 机器C可以同时访问A和B,但拥有完全不同的用户。

通常情况下,我会直接在A和B之间rsync的一切,但由于目前严重有限的带宽,我需要不同的东西,因为rsync超时后build立430文件列表(49Mb未压缩…可以压缩到〜7Mb)。

到目前为止,我已经尝试了一下: rsync从A到C的所有内容,tar,复制压缩包,然后解压缩,但是,这会混淆所有权和/或权限。

要从A同步到C,我运行这个命令:

rsync --numeric-ids --password-file=/root/rsync_pwd_file -oaPvu rsync://[email protected]/portal_2/ ./portal_2/ 

…从外观上来看,他们最终以正确的所有权/许可权/标志/所有权(不是100%确定,但是还有更多的开关可以扔进去吗? ?)

复制压缩包足够简单(由于带宽的缘故,单腿龟很慢,但是校验和没有问题)

我不确定的是用于创build和解压缩tarball的标志和开关,所以有人可以提供完整的命令来从机器C上的/ root / portal_2创build一个tarball,并将tar包解压到/ var机器B上的/ ex / portal_2? ?

另外,还有什么其他的方法值得一提,可以让我执行这个? 我有根访问A和C,而我只有rsync访问B.

PS:我在机器B上运行rsync v2.6.9,不幸的是我没有机会升级到v3

所以,要回答tar问题:

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

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

我不太清楚,如果我正确地阅读你的问题。 可以直接和B说话吗? 如果是这样,只需使用rsync -e 'ssh -oServerAliveInterval=30'来避免rsync / ssh超时。

如果A不能直接与B交谈,我会尝试以下方法:

  • 从C ssh到A,反向端口转发到B( ssh -R2222:B:22 A
  • 在一个rsync到localhost:2222又名端口转发
  • 使用rsync -e 'ssh -oServerAliveInterval=30'来避免rsync / ssh超时。

这样,您避开了用户问题,并解决了超时问题。