3

Я хочу rsync мои локальные файлы с резервной копией, которая у меня есть на сервере, который позволяет получить доступ оттуда, где я сейчас нахожусь, только через шлюз. Итак, я придумал следующее

rsync -avz -r --stats --progress -e "ssh gateway.dot.com ssh server.dot.com:/home/myname/documents/" /home/myname/documents 

и происходит некоторое общение, так как все файлы перечислены в списке, но в результате в конце выявляется, что на самом деле никакого пересылки файлов не было.

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

Идеи?

2 ответа2

7

Я думаю, что пункт №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.

Это именно то, что происходит. Вы можете проверить это, указав мусор в качестве аргумента -e . Например:

rsync -avz --stats -e 'suq maballs' /tmp

Эта команда будет работать просто отлично. Он будет перечислять все в /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

Обратите внимание, что здесь не передаются никакие файлы, как в вашем примере. Вам нужно изменить исходную команду:

rsync -avz -r --stats --progress \
    -e "ssh gateway.dot.com ssh server.dot.com:/home/myname/documents/" \
    /home/myname/documents 

чтобы:

rsync -avz -r --stats --progress \
    -e "ssh gateway.dot.com ssh" \
    server.dot.com:/home/myname/documents/ \
    /home/myname/documents  

Конечно, замените gateway.dot.com и server.dot.com соответствующими именами хостов.

1
  1. Если не команда rsync Rsync будет rsync ... -e "ssh the.gateway ssh" /local/dir/ the.remote.server:/remote/dir/
  2. Ускорение сообщения speedup is 9217.44 показывает, что передача оптимизирована в 9217 раз, то есть файлы между двумя хостами почти (если не уже) синхронизированы.

ОБНОВИТЬ:

№ 2 не правильно. Смотрите ответ crayzeewulf для более подробного объяснения. Значение ускорения ввело меня в заблуждение, чтобы понять, что это работает.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .