Копирование файлов с помощью rsync с удаленного сервера на локальный компьютер

319

Как только я запишу ssh'd на свой удаленный сервер, какой будет команда скопировать все файлы из каталога в локальный каталог на моем компьютере?

markstewie
источник
4
Потому что вы можете rsyncпрямо с вашей локальной машины.
Johnsyweb
2
Ох ... да, я могу. Теперь я вижу другие ответы. Спасибо.
отмечается
17
Это обычная задача для (веб) разработки с хорошим ответом. Я не понимаю, почему это все еще закрыто.
д.раев
6
Я думаю, что @ d.raev имел в виду тот факт, что вопрос был закрыт как не по теме (если я правильно помню, я отметил, что этот вопрос был перенесен в SuperUser, где я думаю, что он подходит лучше), а не что не было никакого принятого ответа , Тем не менее ... было приятно, что мой ответ был принят после всего этого времени. :-)
Johnsyweb
3
@markstewie никаких плохих чувств, это хороший вопрос, и он помог мне (кажется, что многие другие тоже), но это "закрытое" заставляет его выглядеть не заслуживающим доверия, поэтому я хотел привлечь к нему внимание.
д.раев

Ответы:

575

С вашей локальной машины:

rsync -chavzP --stats user@remote.host:/path/to/copy /path/to/local/storage

С вашего локального компьютера с нестандартным портом SSH:

rsync -chavzP -e "ssh -p $portNumber" user@remote.host:/path/to/copy /local/path

Или с удаленного хоста, если вы действительно хотите работать таким образом, а ваша локальная машина прослушивает SSH:

rsync -chavzP --stats /path/to/copy user@host.remoted.from:/path/to/local/storage

Смотрите man rsyncобъяснение моих обычных переключателей.

Johnsyweb
источник
255
Объяснение команды: объяснено
shellhell.com/…
118
Ничего себе, это объясняет, что сайт отличный.
Госукиви
2
@cmcdragonkai: действительно, на локальном хосте должен быть запущен ssh-сервер и он должен быть доступен для удаленного хоста. Это одна из причин, по которой я предпочитаю первое решение второму.
Johnsyweb
16
Будьте осторожны при rsyncing с косой чертой. Команда, данная Johnnysweb, создаст каталог с именем copy внутри /path/to/local/storage. Вот так /path/to/local/storage/copy. Если это то, что вы хотите, отлично. Однако более распространенный сценарий - вы хотите скопировать содержимое удаленного каталога в локальный каталог. Затем вы будете делать то, /path/to/copy/что поместит содержимое в каталог, /path/to/local/storageне создавая локальный каталог копирования.
глава
16
Я пришел сюда по команде rsync и ушел с объяснитьhellhell.com . Спасибо @beefsack!
Фаза
49

Если у вас есть доступ по SSH, вам не нужно сначала SSH, а затем копировать, просто используйте Secure Copy (SCP) из пункта назначения.

scp user@host:/path/file /localpath/file

Подстановочные знаки поддерживаются, поэтому

scp user@host:/path/folder/* /localpath/folder

скопирует все удаленные файлы в эту папку. Если копировать более одного каталога.

note -r также скопирует все подпапки и содержимое.

Tezyn
источник
6
Почему использовать, scpа не rsync? Также обратите внимание, что ваша оболочка не пытается расширяться user@host:/path/folder/*, возможно, с помощью одинарных кавычек ( ').
Johnsyweb
Я считаю, что scp проще в использовании из пункта назначения .... По сути, это копирование файлов через ssh, но без необходимости сначала устанавливать ssh-соединение.
Tezyn
8
Я знаю, что scpэто был не мой вопрос. Почему ты не использовал rsync? Это то, о чем спрашивает вопрос, не требует установленного сеанса SSH и часто быстрее и эффективнее, чем scp.
Johnsyweb
26
Помните, что scp следует за символическими ссылками, а не копирует их. Это может привести к копированию больше, чем вы ожидаете, и к потере символических ссылок (они становятся обычными папками / файлами).
Мондане
2
Ответ Мондейна - именно та причина, по которой я нашел этот пост. Обычно я использую scp для всего, но мне нужно было сохранить разрешения и символическую ссылку от сервера к серверу. Кроме того, разница в скорости (потому что мой новичок определенно поначалу определился первым) была огромной.
Кайл