如何通过网关 ssh 进行 rsync?

Gia*_*aus 4 ssh rsync

我想将我的本地文件与我在服务器上的备份进行 rsync,该备份允许仅通过网关从我现在所在的位置进行访问。所以我想出了以下内容

rsync -avz -r --stats --progress -e "ssh gateway.dot.com ssh server.dot.com:/home/myname/documents/" /home/myname/documents 
Run Code Online (Sandbox Code Playgroud)

并且在列出所有文件时正在进行一些通信,但在最后的摘要中显示实际上根本没有文件传输。

Number of files: 270889
Number of files transferred: 0
Total file size: 70343212868 bytes
Total transferred file size: 0 bytes
Literal data: 0 bytes
Matched data: 0 bytes
File list size: 7596005
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 7613770
Total bytes received: 17764

sent 7613770 bytes  received 17764 bytes  50707.87 bytes/sec
total size is 70343212868  speedup is 9217.44
Run Code Online (Sandbox Code Playgroud)

想法?

cra*_*ulf 9

我认为clarkw 的答案中的第 1 项是正确的。如果使用...-e "ssh gateway.dot.com ssh server.dot.com:/home/myname/documents/",则相应的 rsync 命令具有源目录但没有目标目录。在这种情况下,根据 rsync 手册:

Usages with just one SRC arg and no DEST arg will list the source 
files instead of copying.
Run Code Online (Sandbox Code Playgroud)

这正是正在发生的事情。您可以通过提供垃圾作为-e参数来检查这一点。例如:

rsync -avz --stats -e 'suq maballs' /tmp
Run Code Online (Sandbox Code Playgroud)

此命令将正常工作。它将列出所有内容/tmp并在最后显示不错的统计信息:

Number of files: 28
Number of files transferred: 0
Total file size: 182 bytes
Total transferred file size: 0 bytes
Literal data: 0 bytes
Matched data: 0 bytes
File list size: 955
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 998
Total bytes received: 26

sent 998 bytes  received 26 bytes  2048.00 bytes/sec
total size is 182  speedup is 0.18
Run Code Online (Sandbox Code Playgroud)

请注意,与您的示例一样,此处没有传输任何文件。您需要修改原始命令:

rsync -avz -r --stats --progress \
    -e "ssh gateway.dot.com ssh server.dot.com:/home/myname/documents/" \
    /home/myname/documents 
Run Code Online (Sandbox Code Playgroud)

到:

rsync -avz -r --stats --progress \
    -e "ssh gateway.dot.com ssh" \
    server.dot.com:/home/myname/documents/ \
    /home/myname/documents  
Run Code Online (Sandbox Code Playgroud)

当然,用适当的主机名替换gateway.dot.comserver.dot.com