Назад | Перейти на главную страницу

Как лучше всего переместить файлы на удаленный веб-сервер Ubuntu?

Каков наилучший способ / инструменты для перемещения файлов на удаленный веб-сервер Ubuntu? Очевидно, вопрос новичка, но следует ли мне создавать smb mount, использовать ftp или ssh?

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

scp хорош, если вы хотите скопировать несколько файлов. rsync хорош, если вы хотите многократно копировать один и тот же каталог в места. Однако если вы пытаетесь скопировать большой объем данных между двумя машинами, единственный способ сделать это - использовать netcat.

На принимающей машине запустите:

# cd /dest/dir && nc -l -p 12345 | tar -xf -

На отправляющей машине теперь можно запустить:

# cd /src/dr && tar -xf - | nc -q 0 remote-server 12345

Вы обнаружите, что все работает хорошо и намного быстрее. Если пропускная способность более ограничена, чем ЦП, то вы можете добавить «z» или «j» к параметрам tar («tar -xzf -» и т. Д.), Чтобы сжать данные перед их отправкой по сети. Если у вас гигабит, я бы не стал беспокоиться о сжатии. Если он умрет, вам придется начать с самого начала, но тогда вы можете обнаружить, что можете обойтись без использования rsync, если скопировали достаточно.

Стоит отметить, что у него нет безопасности, которая есть у scp или rsync-over-ssh, поэтому убедитесь, что вы доверяете конечным точкам и всему между ними, если вы не хотите, чтобы кто-то еще видел данные.

Почему бы не использовать scp? потому что по сравнению с этим он невероятно медленный. Бог знает, что делает scp, но он не копирует данные на проводной скорости. Это не шифрование и дешифрование, потому что это просто использует ЦП, а когда я это сделал, это не было связано с ЦП. Я могу только предположить, что процесс scp имеет много накладных расходов на подтверждение связи и протокол ssh.

Почему не rsync? Rsync на самом деле не так много покупает за первую копию. Только в последующих запусках rsync действительно проявляет себя. Однако rsync требует, чтобы источник отправил полный список файлов в место назначения, прежде чем он начнет копирование любых данных. Если у вас есть файловая система с большим количеством файлов, это ужасно большие накладные расходы, особенно потому, что целевой хост должен хранить их в памяти.

scp, rsync over ssh - все хорошо, но для больших наборов данных (т.е. большого количества данных в большом количестве небольших файлов или даже просто большого количества файлов) я использую tar поверх ssh без сжатия, выполняя следующие действия:

 cd /path/to/localdir && tar -cf - ./| ssh -o “Compression=off” someuser@someotherserver “tar -xf - -C /path/to/remote/dir”

При этом tar создает поток данных, который только что отправляется по ssh в зашифрованном виде, но без сжатия. если вы отправляете это через интернет-ссылку, вам лучше оставить сжатие включенным, опуская параметр -o.

Подробнее об этом см. Здесь

Если вы хотите переместить файлы с рабочего стола Windows на удаленный сервер Ubuntu, вы можете попробовать WinSCP.

WinSCP с открытым исходным кодом бесплатно SFTP клиент и FTP клиент для Windows. Наследие SCP протокол также поддерживается. Его основная функция - безопасное копирование файлов между локальным и удаленным компьютером.

Убедитесь, что ssh установлен на сервере Ubuntu.

sudo apt-get install ssh

Лучший способ переместить файлы в удаленную систему - это scp.

Рекурсивная копия каталога

scp -r locadir user@hostname.com:~/

Единая копия файла

scp localfile user@hostname.com:~/

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

scp user@hostname.com:~/localfile .

scp является частью пакета ssh и должен быть доступен, если у вас есть ssh и sshd на удаленном сервере.