Как перенести файлы между удаленными серверами Linux
Существует несколько эффективных способов передачи файлов между удаленными Linux-серверами. Вот основные методы:
1. Использование SCP (Secure Copy)
SCP позволяет безопасно копировать файлы через SSH-соединение.
Копирование с сервера A на сервер B (находясь на сервере A):
scp /path/to/local/file username@serverB:/path/to/destination/
Копирование с сервера B на сервер A (находясь на сервере A):
scp username@serverB:/path/to/remote/file /path/to/local/destination/
2. Использование SFTP (SSH File Transfer Protocol)
SFTP предоставляет интерактивный интерфейс для передачи файлов:
sftp username@remote_server
# После подключения:
get remotefile localfile # скачать файл
put localfile remotefile # загрузить файл
3. Прямая передача между серверами с помощью SSH
Этот метод позволяет передавать файлы напрямую между двумя удаленными серверами без промежуточного скачивания:
ssh serverA "tar czf - /path/to/source" | ssh serverB "tar xzf - -C /path/to/destination"
4. Использование rsync через SSH
rsync эффективен для синхронизации файлов и каталогов:
# С сервера A на сервер B
rsync -avz -e ssh /path/to/source/ username@serverB:/path/to/destination/
# Между двумя удаленными серверами (находясь на третьем сервере)
rsync -avz -e ssh username1@serverA:/path/to/source/ username2@serverB:/path/to/destination/
5. Использование sshfs для монтирования удаленной файловой системы
# На сервере A:
sshfs username@serverB:/remote/path /local/mount/point
# Теперь можно копировать файлы как обычно
cp /path/to/file /local/mount/point/
# Размонтировать после использования
fusermount -u /local/mount/point
6. Использование утилиты nc (netcat)
На принимающем сервере B:
nc -l -p 1234 > filename
На отправляющем сервере A:
cat filename | nc serverB 1234
Рекомендации:
-
Используйте SSH-ключи вместо паролей для автоматизации процесса
-
Для больших файлов или множества файлов лучше использовать rsync
-
При передаче конфиденциальных данных всегда используйте защищенные протоколы (SCP, SFTP, rsync через SSH)
-
Для регулярных передач настройте автоматизацию с помощью cron
Выбор метода зависит от ваших конкретных потребностей, размера передаваемых данных и требований к безопасности.
Для переноса всего содержимого папки /home/bitrix/ext_www/2.eu-digital.ru/ (включая все подпапки и файлы) на удаленный сервер с отображением прогресса, вы можете использовать следующую команду:
scp -r -v /home/bitrix/ext_www/2.eu-digital.ru/* shopmangal@vh450.timeweb.ru:/public_html/
Пояснения к команде:
-
-r- рекурсивное копирование (включая подпапки) -
-v- подробный вывод (verbose), показывает прогресс передачи -
*- копирует всё содержимое папки, а не саму папку
Если вы хотите видеть индикатор прогресса с процентами, можно использовать rsync:
rsync -avz --progress /home/bitrix/ext_www/2.eu-digital.ru/* shopmangal@vh450.timeweb.ru:/public_html/
Или альтернативно, если вы предпочитаете scp с индикатором прогресса:
scp -r -p /home/bitrix/ext_www/2.eu-digital.ru/* shopmangal@vh450.timeweb.ru:/public_html/
Если вам нужно сохранить все права доступа, временные метки и другие атрибуты файлов, лучше использовать rsync:
rsync -avzP /home/bitrix/ext_www/2.eu-digital.ru/* shopmangal@vh450.timeweb.ru:/public_html/
Где:
-
-aсохраняет все атрибуты файлов -
-vподробный вывод -
-zсжатие данных при передаче -
-Pпоказывает прогресс и позволяет возобновить прерванную передачу
проблема в правах доступа. Давайте исправим путь и добавим правильную директорию пользователя:
rsync -avzP /home/bitrix/ext_www/2.eu-digital.ru/* shopmangal@vh450.timeweb.ru:~/public_html/
или
rsync -avzP /home/bitrix/ext_www/2.eu-digital.ru/* shopmangal@vh450.timeweb.ru:/home/shopmangal/public_html/
Ключевые изменения:
-
Добавлен
~(домашняя директория пользователя) или полный путь/home/shopmangal/ -
Указан путь к
public_htmlв домашней директории пользователя
Если проблема сохраняется:
- Проверьте права доступа на целевом сервере:
bash Скопировать
Закрыть блок
ssh shopmangal@vh450.timeweb.ru "ls -la ~/public_html"
- Создайте директорию, если она не существует:
bash Скопировать
Закрыть блок
ssh shopmangal@vh450.timeweb.ru "mkdir -p ~/public_html"
- Установите правильные права:
ssh shopmangal@vh450.timeweb.ru "chmod 755 ~/public_html"
Затем повторите команду rsync с исправленным путем.
Ищете надежного партнера по веб-разработке и автоматизации? Мы помогаем бизнесу расти с помощью современных технологий, автоматизации процессов и экспертного SEO. Свяжитесь с нами, чтобы обсудить вашу задачу.