Хостинг

Перенести файлы между удаленными серверами Linux

Перенести файлы между удаленными серверами Linux

Как перенести файлы между удаленными серверами 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 с исправленным путем.