Передать файл с linux на linux

Обновлено: 05.07.2024

Linux-администратор должен уверенно владеть интерфейсом командной строки, так как на большинстве Linux-серверов не устанавливается графическая оболочка. SSH является наиболее популярным протоколом, который обеспечивает администратору возможность безопасного удаленного управления сервером. Для безопасного копирования файлов между серверами с использованием этого протокола используется команда scp (secure copy – безопасное копирование). В данном руководстве мы рассмотрим основы работы с командой scp и наиболее важные опции.

Базовый синтаксис

Команда scp выглядит следующим образом

Данная команда выполняет копирование указанного файла (имя_файла) в конкретную директорию (директория_назначения) на узле назначения (узел_назначения) с использованием учетной записи определенного пользователя (пользователь).
Подробная информация о процессе копирования
При запуске без параметров команда scp будет копировать файлы в фоновом режиме. Пользователь ничего не видит, пока процесс не будет завершен, или не возникнет какая-либо ошибка. Для вывода подробной информации о процессе копирования на экран можно воспользоваться параметром –v. Это может помочь в отладке проблем соединения, аутентификации и конфигурации.

Сохранение значений атрибутов

Для копирования файлов с сохранением времени доступа, модификации и прав доступа используется опция –p. На экране отобразятся примерное время выполнения и скорость соединения:

Сжатие файлов при передаче

Опция –C поможет ускорить передачу файлов за счет их сжатия. Преимущество такой передачи в том, что сжатие будет выполняться только для передачи по сети. При завершении копирования на сервере места назначения размер файла вернется к первоначальному, каким он был до сжатия.

Допустим, требуется скопировать файл размером 1 ГБ. Следующая команда выполнит это без сжатия:


Время копирования составило 20.3 секунды. Теперь выполним копирование с параметром –C:


Видно, что при использовании сжатия процесс передачи требует всего 3,4 секунды. Это более чем в 6 раз быстрее. Однако, важно отметить, что сжатие работает не для всех файлов. При копировании уже сжатых файлов никакого ускорения не будет, поэтому на архивы, изображения и файлы образов этот параметр не действует.

Выбор алгоритма шифрования

По умолчанию scp использует для шифрования файлов алгоритм AES-128. Если требуется другой алгоритм, его можно изменить при помощи опции -c:

В данном случае задан алгоритм 3DES. Обратите внимание, что данный параметр указывается маленькой буквой , а не большой -C.

Ограничение скорости передачи

Опция -l ограничивает скорость передачи, указывается в кбит/c. Она полезна для использования в скриптах для автоматического копирования большого количества файлов, чтобы процесс scp не занимал весь канал.

После параметра указывается значение ограничения скорости в килобитах в секунду, а при передаче скорость отображается в килобайтах в секунду. В данном случае мы указали 400 кбит/с, что эквивалентно 50 кбайт/с, так как в одном байте 8 бит (400/8 = 50).
Выбор порта для scp
Обычно scp по умолчанию использует порт 22, но в целях безопасности может потребоваться его изменить. Для этого применяется опция -P. Например, если мы используем порт 2249:

Убедитесь, что буква заглавная, так как строчная p используется для сохранения атрибутов.

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

Если требуется копирование директории со всеми поддиректориями и файлами внутри, лучше сделать это одной командой. В scp для этого используется параметр -r:

scp -r /root/documents root@10.10.10.2:.

После завершения процесса копирования на сервере места назначения появится директория documents со всеми файлами, которая будет создана автоматически.

После ввода пароля не отображается никакой информации о работе команды. После завершения процесса копирования вы снова увидите командную строку.

Копирование файлов через прокси

В офисных сетях часто используются прокси-серверы. Изначально scp не настроена для работы через прокси, поэтому если вы используете прокси-сервер, нужно «сообщить» об этом команде. Для работы протокола SSH через прокси-сервер требуется туннелирование, которое осуществляется при помощи специальной программы Corkscrew. В вашей системе она может быть не установлена, в этом случае нужно воспользоваться стандартной процедурой установки:

Допустим, адрес вашего прокси-сервера 10.0.96.6, а порт 8080, и на сервере требуется аутентификация пользователя. Нужно создать файл

/.ssh/config и прописать там следующую команду:

Затем нужно создать файл

/.ssh/proxyauth, содержащий имя пользователя и пароль для аутентификации на прокси-сервере в следующем формате:

Теперь можно использовать scp в прозрачном режиме, как обычно. Необходимо исключить доступ посторонних лиц к файлу

/.ssh/proxyauth, потому что в нем открытым текстом указаны имя пользователя и пароль.

Выбор другого файла конфигурации

Мобильным пользователям, которые попеременно используют сеть компании и публичные сети, будет тяжело каждый раз менять настройки scp. Лучше всего создать для этого отдельный файл ssh_config и воспользоваться параметром -F.

По умолчанию файл ssh_config для пользователя находится в

/.ssh/config. Если создать отдельный файл proxy_ssh_config для использования прокси, это упростит переход между сетями.

Например, если в сети компании используется прокси-сервер, а в публичной сети – нет, а пользователь попеременно работает в разных сетях, можно использовать опцию -F с именем нужного файла конфигурации для сети компании, а в публичной сети ее не указывать:

Заключение

Мы рассмотрели наиболее распространенные примеры работы с командой scp. Более подробную информацию можно получить в соответствующих man-страницах.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Передача файлов между компьютерами Linux

Некоторое время назад мне пришлось перенести файлы с моего тестового компьютера, который в то время Ubuntu 11.10, в сторону основного, в котором он использовал Ubuntu LTS 10.04, чтобы иметь возможность внести некоторые изменения в разделы первого. После экспериментов со многими методами, некоторые из которых не работали, а другие работали, но очень медленно, мне удалось найти решение, которое убедило меня простой, безошибочный, что позволяет достигать действительно огромных скоростей.

Для этого метода нам придется прибегнуть к небольшой бесплатной утилите под названием UDP Cast. Он находится в официальных репозиториях большинства дистрибутивов (кроме репозиториев Arch Linux, но его можно скачать с AUR), поэтому мы просто устанавливаем его оттуда. Чтобы использовать его, мы должны установить его на тот компьютер, на котором он должен будет отправлять файлы (сервер) и где вы их получите (клиент).

UDP Cast не имеет графического интерфейса (и я не исследовал, есть ли какие-либо программного обеспечения. предоставьте его), чтобы он использовался с консоли, но его использование довольно просто поэтому, даже если вам не нравится командная строка, у вас, вероятно, не возникнет проблем с ее использованием.

Начало

Отсюда команды различаются в зависимости от того, собираемся ли мы отправлять отдельный файл или весь каталог.

udp-sender -f archivo.zip

где file.zip Мы заменим его именем файла для отправки вместе с его расширением, которое в данном случае будет сжатым файлом ZIP.

Позже с клиентского компьютера напишем это:

udp-receiver -f archivo.zip

tar cf - directorio | udp-sender

udp-receiver | tar xf -

Выводы

Как я сказал в начале статьи, UDP Cast позволяет передавать файлы с невероятной скоростью, поскольку он в полной мере использует весь потенциал передачи, который способна развивать локальная сеть. Насколько мне удалось проверить, самые высокие скорости достигаются, когда оба компьютера подключены к сети с помощью кабеля. Ethernet, а в качестве образца представляю следующие снимки:

Отправка UDP Cast

В этом случае я передаю папку с именем ISOS (который, как вы можете догадаться, содержит файлы .iso дистрибутивов, которые я загружаю для тестирования), находившийся в каталоге загрузок с моего ноутбука с Arch Linux, в сторону каталога загрузок с компьютера моей матери, который она использует Debian.

Прием UDP Cast

На скорости более 25 Мбит / с очевидно, что перевод завершился в очень короткие сроки, поэтому вы уже сможете убедиться, что этот метод идеален, когда вам нужно передать большие файлы или папки.

Наконец, следует отметить, что UDP Cast очень мощный инструмент и с функциями, которые выходят далеко за рамки показанных здесь. Если вы хотите узнать больше об этой интересной утилите, я советую вам посетить ее Официальный сайт.

Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Полный путь к статье: Из Linux » приложений » Быстро и легко переносите файлы между компьютерами Linux

Мне, как владельцу персонального компьютера и ноутбука часто приходится передавать файлы с одного устройства на другое. Внешние жесткие диски и флешки использовать не всегда удобно, они актуальны для больших файлов, где важна скорость записи, а вот для маленьких файлов и документов хочется чего-нибудь попроще.

Если оба устройства подсоединены к одной сети идеальным вариантом будет передача файлов по сети linux. Здесь мы получаем большую скорость, и удобство использования - не нужно искать флешку или USB провод, достаточно прозрачно скопировать файл в нужную папку и он уже на целевом устройстве. Сегодня мы рассмотрим основные способы передачи файлов по сети между компьютерами.

Передача файлов по сети Linux

1. Утилита nc

Этот способ отлично подойдет, если вам нужно передать один или несколько файлов и вы не хотите устанавливать никаких новых программ в систему. Утилита nc или netcat позволяет создавать tcp и unix сокеты в системе. По сути, это туннели, через которые мы можем передать любые данные, в том числе и файлы.

Утилита уже предустановлена, так что ничего дополнительно ставить не придется, нужно только знать IP адреса компьютеров в сети. Сначала создаем слушающий сокет на компьютере, все поступившие на него данные сразу пишем в файл:

nc -l -p 12345 > newfile

Здесь опция -p задает порт, можно брать привольное значение, только чтобы совпадало в обоих командах. Теперь отправляем файл из другого компьютера:

cat file | nc 192.168.0.101 12345

Тут мы указываем тот же порт и ip компьютера, где был запущен слушающий сокет - 192.168.0.101. Убедитесь, что Firewall не мешает подключению к выбранному порту иначе ничего не получится.

Мы можем передавать не только файлы, но и папки. Передача может быть выполнена в обоих направлениях, теперь отправим не на сокет, и от сокета:

tar -cf - /data | nc -l -p 12345

И принимаем отравленные данные на другом компьютере:

nc 192.168.1.2 12345 | tar -xf -

2. Передача файлов ssh

Передача файлов по ssh Linux - это самый быстрый и удобный способ обмена файлами. Достаточно, чтобы на компьютере была запущена служба SSH и у вас был к ней доступ. Затем с помощью утилиты scp туда можно передать любой, файл, это быстро и удобно, а ещё вы можете выбрать папку, в которую его надо сохранить. Допустим, вам надо передать файл с именем

/file.txt на компьютер с IP адресом 192.168.0.101, тогда используйте такую команду:


Утилита загрузит файл прямо в домашнюю папку на удалённом компьютере и вы сможете выполнять с ним действия по SSH. Если надо передать все файлы из папки можно использовать опцию -r:

Читайте более подробно про утилиту scp в отдельной статье.

3. Передача файлов по FTP

Не очень удобный и очень медленный способ передачи файлов по сети. Хорошо работает для больших файлов, но большое количество мелких файлов будут передаваться очень долго. На одном компьютере должен быть развернут FTP сервер, а на другом можно использовать графический FTP клиент FileZilla для подключения и передачи файлов.

4. Как передать файл в rsync

Утилита rsync тоже использует для передачи файлов SSH, однако она позволяет передавать целые папки, а также следить за состоянием файлов и если на удалённом компьютере такой файл уже есть, то он передаваться не будет. Таким образом можно копировать только измененные файлы и удобно передавать целые папки. Для примера возьмем тот же компьютер 192.168.0.101 и папку


Мы записываем все файлы из папки

/files в папку /home/root, а также получаем возможность синхронизировать их. Подробнее про rsync читайте в отдельной статье.

5. Сервер NFS

Ещё один способ передачи файлов между Linux серверами - это NFS. На одном из серверов разворачивается NFS сервер, а на другом, монтируется удаленная NFS папка в обычную файловую систему, после чего она становится частью файловой системы Linux и туда уже можно копировать файлы так, как будто это на той же машине. Просто и удобно, но надо настраивать NFS и ещё один минус по сравнению с FTP, у NFS нет возможности настроить простую авторизацию по паролю, можно ограничить монтирование только по IP адресу что не всегда удобно.

6. Сервер Samba

Передавать файлы в Windows на Linux и обратно может помочь удалённый доступ с помощью Samba сервера. Если развернуть сервер Samba на Linux машине, то к нему можно будет подключится из Windows и видеть все файлы в общей папке. Samba - не очень хорошее решение, так как могут возникнуть проблемы с файлами больше 1 Гб, передающимися очень долго, но для обмена файлами между Windows и Linux довольно неплохое решение, тем более, что обмен файлами выполняется через стандартный файловый менеджер.

7. KDE-Connect

Для обмена файлами между компьютером Linux и Android можно использовать программу KDE-Connect. У неё есть приложение для Android, она встроена в окружение KDE, а для Gnome есть расширение GSConnect. Утилита позволяет передавать файлы на компьютер прямо с телефона, а также монтировать общую папку, в которую можно скидывать как файлы на компьютере, так и файлы на телефоне. Очень удобно. Читайте подробнее в статье про настройку KDE-Connect.


Выводы

Вы можете спросить, а какой же способ мне использовать? Ответ зависит от ваших потребностей, если вам нужен только передать один файл раз в месяц, может решением станет scp или FTP, а для регулярной передачи файлов по сети Linux удобнее использовать rsync, к тому же с помощью этой утилиты можно запланировать автоматическую синхронизацию. А какими способами пользуетесь вы? Напишите в комментариях!

Как скопировать файл / папку из локальной системы в удаленную систему в Linux? Перенос файла с одного сервера на другой или с локального на удаленный является одной из рутинных задач администратора Linux. Если кто-то скажет «нет», я не приму это в серьез, потому что это одно из регулярных занятий, которым приходится заниматься. Это можно сделать разными способами, и мы стараемся охватить все возможные варианты. Вы можете выбрать тот метод, который вы предпочитаете. Также проверьте другие команды, которые могут помочь вам в каких-то других целях. Я протестировал все эти команды и скрипты в своей тестовой среде, поэтому вы можете использовать их для своей обычной работы. По умолчанию каждый работает с SCP, потому что это одна из встроенных команд, которую все используют для копирования файлов. Но команды, которые перечислены в этой статье, умны, поэтому попробуйте их использовать, если вы хотите попробовать что-то новое. Это можно легко сделать четырьмя способами, описанными ниже.

SCP: scp копирует файлы между хостами в сети. Он использует ssh для передачи данных, использует ту же аутентификацию и обеспечивает ту же безопасность, что и ssh.

Метод 1: Копировать файлы / папки из локальной системы в удаленную систему в Linux с помощью команды SCP

Команда scp позволяет нам копировать файлы / папки из локальной системы в удаленную систему.

Это скопирует каталог shell-script и связанные файлы в каталог /opt/backup.

Способ 2: Копирование файлов / папок из локальной системы на несколько удаленных систем в Linux с помощью Shell Script с командой scp?

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

Для этого получите список серверов и добавьте их в файл server-list.txt.

Убедитесь, что вы обновили список серверов в файле server-list.txt.

Каждый сервер должен быть в отдельной строке.

Наконец, укажите местоположение файла, который вы хотите скопировать, как показано ниже.

Как только вы закончите, установите исполняемое на выполнение для файла password-update.sh.

Наконец, запустите скрипт, чтобы добиться желаемого результата.

Используйте следующий скрипт, чтобы скопировать несколько файлов на несколько удаленных серверов.

Вывод ниже показывает все файлы дважды, так как все скопировано на два сервера.

Используйте следующий скрипт для рекурсивного копирования каталога на несколько удаленных серверов.

Выход для вышеуказанного скрипта.

Метод 3: Копирование файлов / папок из локальной системы на несколько удаленных систем в Linux с помощью команды PSCP?

Команда pscp напрямую позволяет нам выполнять копирование на несколько удаленных серверов.

Используйте следующую команду pscp, чтобы скопировать один файл на удаленный сервер.

Используйте следующую команду pscp, чтобы скопировать несколько файлов на удаленный сервер.

Используйте следующую команду pscp, чтобы рекурсивно скопировать каталог на удаленный сервер.

Используйте следующую команду pscp, чтобы скопировать один файл на несколько удаленных серверов.

Используйте следующую команду pscp, чтобы скопировать несколько файлов на несколько удаленных серверов.

Используйте следующую команду pscp для рекурсивного копирования каталога на несколько удаленных серверов.

Метод 4: Копирование файлов / папок из локальной системы на несколько удаленных систем в Linux с помощью команды rsync?

Он может копировать локально, на / с другого хоста через любую удаленную оболочку или на / с удаленного демона rsync.

Используйте следующую команду rsync, чтобы скопировать один файл на удаленный сервер.

Используйте следующую команду pscp, чтобы скопировать несколько файлов на удаленный сервер.

Используйте следующую команду rsync, чтобы скопировать один файл на удаленный сервер через ssh.

Используйте следующую команду pscp, чтобы рекурсивно скопировать каталог на удаленный сервер через ssh.

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

Метод 5: Копирование файлов / папок из локальной системы на несколько удаленных систем в Linux с помощью Shell Script с командой rsync?

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

Вывод для вышеуказанного скрипта оболочки.

Метод 6: Копирование файлов / папок с локальной системы на несколько удаленных систем в Linux с помощью Shell Script с командой scp?

В приведенных выше двух скриптах оболочки мы должны упомянуть расположение файла и папки в качестве предварительных требований, но здесь я сделал небольшую модификацию, позволяющую скрипту получить файл или папку в качестве входных данных.

Это может быть очень полезно, если вы хотите выполнить копирование несколько раз в день.

Запустите скрипта и укажите имя файла в качестве входных данных.

Метод 7: Копировать файлы / папки из локальной системы на несколько удаленных систем в Linux с нестандартным номером порта?

Используйте скрипт оболочки, расположенный ниже, чтобы скопировать файл или папку, если вы используете нестандартный порт.

Если вы используете нестандартный порт, обязательно укажите номер порта, как указано ниже для команды SCP.

Запустите скрипт оболочки и укажите имя файла в качестве входных данных.

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

Запустите сценарий оболочки и укажите имя файла в качестве входных данных.

Читайте также: