Каков наилучший способ / инструменты для перемещения файлов на удаленный веб-сервер 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 на удаленном сервере.