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

by itisgood

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

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

  • RSYNC: rsync – это быстрый и необычайно универсальный инструмент для копирования файлов. Он может копировать локально, на / с другого хоста через любую удаленную оболочку или на / с удаленного демона rsync.

  • PSCP: pscp – это программа для параллельного копирования файлов на несколько хостов. Он предоставляет такие функции, как передача пароля в scp, сохранение вывода в файлы и тайм-аут.

  • PRSYNC: prsync – это программа для копирования файлов параллельно с несколькими хостами. Он предоставляет такие функции, как передача пароля в ssh, сохранение вывода в файлы и тайм-аут.

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

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

Мы собираемся скопировать файл output.txt из моей локальной системы в удаленную систему 2g.CentOS.com в каталоге /opt/backup.

# scp output.txt root@2g.CentOS.com:/opt/backup

output.txt                                                                                              100% 2468     2.4KB/s   00:00

Мы собираемся скопировать два файла output.txt и passwd-up.sh из моей локальной системы в удаленную систему 2g.CentOS.com в каталоге /opt/backup.

# scp output.txt passwd-up.sh root@2g.CentOS.com:/opt/backup

output.txt                                                                                              100% 2468     2.4KB/s   00:00
passwd-up.sh                                                                                            100%  877     0.9KB/s   00:00

Мы собираемся скопировать каталог shell-script из моей локальной системы в удаленную систему 2g.CentOS.com в каталоге /opt/backup.

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

# scp -r /home/daygeek/2g/shell-script/ root@2g.CentOS.com:/opt/backup/

output.txt                                                                                              100% 2468     2.4KB/s   00:00
ovh.sh                                                                                          		100%   76     0.1KB/s   00:00
passwd-up.sh                                                                                            100%  877     0.9KB/s   00:00
passwd-up1.sh                                                                                            100%    7     0.0KB/s   00:00
server-list.txt                                                                                         100%   23     0.0KB/s   00:00

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

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

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

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

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

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

# file-copy.sh

#!/bin/sh
for server in `more server-list.txt`
do
  scp /home/daygeek/2g/shell-script/output.txt root@$server:/opt/backup
done

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

# chmod +x file-copy.sh

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

# ./file-copy.sh

output.txt                                                                                              100% 2468     2.4KB/s   00:00
output.txt

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

# file-copy.sh

#!/bin/sh
for server in `more server-list.txt`
do
  scp /home/daygeek/2g/shell-script/output.txt passwd-up.sh root@$server:/opt/backup
done

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

# ./file-cp.sh

output.txt                                                                                              100% 2468     2.4KB/s   00:00
passwd-up.sh                                                                                            100%  877     0.9KB/s   00:00
output.txt                                                                                              100% 2468     2.4KB/s   00:00
passwd-up.sh

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

# file-copy.sh

#!/bin/sh
for server in `more server-list.txt`
do
  scp -r /home/daygeek/2g/shell-script/ root@$server:/opt/backup
done

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

# ./file-cp.sh

output.txt                                                                                              100% 2468     2.4KB/s   00:00
ovh.sh                                                                                          		100%   76     0.1KB/s   00:00
passwd-up.sh                                                                                            100%  877     0.9KB/s   00:00
passwd-up1.sh                                                                                           100%    7     0.0KB/s   00:00
server-list.txt                                                                                         100%   23     0.0KB/s   00:00

output.txt                                                                                              100% 2468     2.4KB/s   00:00
ovh.sh                                                                                          		100%   76     0.1KB/s   00:00
passwd-up.sh                                                                                            100%  877     0.9KB/s   00:00
passwd-up1.sh                                                                                           100%    7     0.0KB/s   00:00
server-list.txt

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

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

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

# pscp.pssh -H  2g.CentOS.com /home/daygeek/2g/shell-script/output.txt /opt/backup

[1] 18:46:11 [SUCCESS] 2g.CentOS.com

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

# pscp.pssh -H  2g.CentOS.com /home/daygeek/2g/shell-script/output.txt ovh.sh /opt/backup

[1] 18:47:48 [SUCCESS] 2g.CentOS.com

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

# pscp.pssh -H 2g.CentOS.com -r /home/daygeek/2g/shell-script/ /opt/backup                     

[1] 18:48:46 [SUCCESS] 2g.CentOS.com

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

# pscp.pssh -h server-list.txt /home/daygeek/2g/shell-script/output.txt /opt/backup

[1] 18:49:48 [SUCCESS] 2g.CentOS.com
[2] 18:49:48 [SUCCESS] 2g.Debian.com

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

# pscp.pssh -h server-list.txt /home/daygeek/2g/shell-script/output.txt passwd-up.sh /opt/backup

[1] 18:50:30 [SUCCESS] 2g.Debian.com
[2] 18:50:30 [SUCCESS] 2g.CentOS.com

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

# pscp.pssh -h server-list.txt -r /home/daygeek/2g/shell-script/ /opt/backup

[1] 18:51:31 [SUCCESS] 2g.Debian.com
[2] 18:51:31 [SUCCESS] 2g.CentOS.com

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

Rsync – это быстрый и необычайно универсальный инструмент для копирования файлов.

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

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

# rsync -avz /home/daygeek/2g/shell-script/output.txt root@2g.CentOS.com:/opt/backup

sending incremental file list
output.txt 

sent 598 bytes  received 31 bytes  1258.00 bytes/sec
total size is 2468  speedup is 3.92

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

# rsync -avz /home/daygeek/2g/shell-script/output.txt passwd-up.sh root@2g.CentOS.com:/opt/backup

sending incremental file list
output.txt
passwd-up.sh
 
sent 737 bytes  received 50 bytes  1574.00 bytes/sec
total size is 2537  speedup is 3.22

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

# rsync -avzhe ssh /home/daygeek/2g/shell-script/output.txt root@2g.CentOS.com:/opt/backup

sending incremental file list
output.txt

sent 598 bytes  received 31 bytes  419.33 bytes/sec
total size is 2.47K  speedup is 3.92

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

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

# rsync -avzhe ssh /home/daygeek/2g/shell-script/ root@2g.CentOS.com:/opt/backup

sending incremental file list
./
output.txt
ovh.sh
passwd-up.sh
passwd-up1.sh
server-list.txt
 
sent 3.85K bytes  received 281 bytes  8.26K bytes/sec
total size is 9.12K  speedup is 2.21

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

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

# file-copy.sh

#!/bin/sh
for server in `more server-list.txt`
do
  rsync -avzhe ssh /home/daygeek/2g/shell-script/ root@$server:/opt/backup
done

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

# ./file-copy.sh

sending incremental file list
./
output.txt
ovh.sh
passwd-up.sh
passwd-up1.sh
server-list.txt

sent 3.86K bytes  received 281 bytes  8.28K bytes/sec
total size is 9.13K  speedup is 2.21

sending incremental file list
./
output.txt
ovh.sh
passwd-up.sh
passwd-up1.sh
server-list.txt
 
sent 3.86K bytes  received 281 bytes  2.76K bytes/sec
total size is 9.13K  speedup is 2.21

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

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

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

# file-copy.sh

#!/bin/sh
for server in `more server-list.txt`
do
scp -r $1 root@$server:/opt/backup
done

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

# ./file-copy.sh output1.txt

output1.txt                                                                                             100% 3558     3.5KB/s   00:00
output1.txt                                                                                             100% 3558     3.5KB/s   00:00

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

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

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

# file-copy-scp.sh

#!/bin/sh
for server in `more server-list.txt`
do
scp -P 2222 -r $1 root@$server:/opt/backup
done

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

# ./file-copy.sh ovh.sh

ovh.sh                                                                                             100% 3558     3.5KB/s   00:00
ovh.sh

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

# file-copy-rsync.sh

#!/bin/sh
for server in `more server-list.txt`
do
rsync -avzhe 'ssh -p 2222' $1 root@$server:/opt/backup
done

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

# ./file-copy-rsync.sh passwd-up.sh 
sending incremental file list
passwd-up.sh

sent 238 bytes  received 35 bytes  26.00 bytes/sec
total size is 159  speedup is 0.58

sending incremental file list
passwd-up.sh

sent 238 bytes  received 35 bytes  26.00 bytes/sec
total size is 159  speedup is 0.58

 

You may also like

Leave a Comment