4

如何在 Linux 上复制文件/文件夹到远程系统?

 1 year ago
source link: https://blogread.cn/it/article/8271?f=hot1
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

如何在 Linux 上复制文件/文件夹到远程系统?

浏览:488次  出处信息

我觉得不会有人不同意,因为无论在哪里这都是你的日常操作之一。有很多办法都能处理这个任务,我们试着加以概括。你可以挑一个喜欢的方法。当然,看看其他命令也能在别的地方帮到你。

我已经在自己的环境下测试过所有的命令和脚本了,因此你可以直接用到日常工作当中。

通常大家都倾向 scp,因为它是文件复制的原生命令native command之一。但本文所列出的其它命令也很好用,建议你尝试一下。

文件复制可以轻易地用以下四种方法。

  • scp:在网络上的两个主机之间复制文件,它使用 ssh 做文件传输,并使用相同的认证方式,具有相同的安全性。

  • rsync:是一个既快速又出众的多功能文件复制工具。它能本地复制、通过远程 shell 在其它主机之间复制,或者与远程的 rsync 守护进程daemon 之间复制。

  • pscp:是一个并行复制文件到多个主机上的程序。它提供了诸多特性,例如为 scp 配置免密传输,保存输出到文件,以及超时控制。

  • prsync:也是一个并行复制文件到多个主机上的程序。它也提供了诸多特性,例如为 ssh 配置免密传输,保存输出到 文件,以及超时控制。

方式 1:如何在 Linux 上使用 scp 命令从本地系统向远程系统复制文件/文件夹?

scp 命令可以让我们从本地系统复制文件/文件夹到远程系统上。

我会把 output.txt 文件从本地系统复制到 2g.CentOS.com 远程系统的 /opt/backup 文件夹下。



  1. #scp output.txt [email protected]:/opt/backup

  2. output.txt                                                                                              100%24682.4KB/s   00:00

从本地系统复制两个文件 output.txtpasswd-up.sh 到远程系统 2g.CentOs.com/opt/backup 文件夹下。



  1. #scp output.txt passwd-up.sh [email protected]:/opt/backup

  2. output.txt 100%24682.4KB/s 00:00

  3. passwd-up.sh 100%8770.9KB/s 00:00

从本地系统复制 shell-script 文件夹到远程系统 2g.CentOs.com/opt/back 文件夹下。

这会连同shell-script 文件夹下所有的文件一同复制到/opt/back 下。



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

  2. output.txt 100%24682.4KB/s 00:00

  3. ovh.sh      100%760.1KB/s 00:00

  4. passwd-up.sh 100%8770.9KB/s 00:00

  5. passwd-up1.sh 100%70.0KB/s 00:00

  6. server-list.txt 100%230.0KB/s 00:00

方式 2:如何在 Linux 上使用 scp 命令和 Shell 脚本复制文件/文件夹到多个远程系统上?

如果你想复制同一个文件到多个远程服务器上,那就需要创建一个如下面那样的小 shell 脚本。

并且,需要将服务器添加进 server-list.txt 文件。确保添加成功后,每个服务器应当单独一行。

最终,你想要的脚本就像下面这样:



  1. #file-copy.sh

  2. #!/bin/sh

  3. for server in`more server-list.txt`

  4. do

  5. scp/home/daygeek/2g/shell-script/output.txt root@$server:/opt/backup

  6. done

完成之后,给 file-copy.sh 文件设置可执行权限。



  1. #chmod+x file-copy.sh

最后运行脚本完成复制。



  1. #./file-copy.sh

  2. output.txt 100%24682.4KB/s 00:00

  3. output.txt 100%24682.4KB/s 00:00

使用下面的脚本可以复制多个文件到多个远程服务器上。



  1. #file-copy.sh

  2. #!/bin/sh

  3. for server in`more server-list.txt`

  4. do

  5. scp/home/daygeek/2g/shell-script/output.txt passwd-up.sh root@$server:/opt/backup

  6. done

下面结果显示所有的两个文件都复制到两个服务器上。



  1. #./file-cp.sh

  2. output.txt 100%24682.4KB/s 00:00

  3. passwd-up.sh 100%8770.9KB/s 00:00

  4. output.txt 100%24682.4KB/s 00:00

  5. passwd-up.sh 100%8770.9KB/s 00:00

使用下面的脚本递归地复制文件夹到多个远程服务器上。



  1. #file-copy.sh

  2. #!/bin/sh

  3. for server in`more server-list.txt`

  4. do

  5. scp-r /home/daygeek/2g/shell-script/ root@$server:/opt/backup

  6. done

上述脚本的输出。



  1. #./file-cp.sh

  2. output.txt 100%24682.4KB/s 00:00

  3. ovh.sh      100%760.1KB/s 00:00

  4. passwd-up.sh 100%8770.9KB/s 00:00

  5. passwd-up1.sh 100%70.0KB/s 00:00

  6. server-list.txt 100%230.0KB/s 00:00

  7. output.txt 100%24682.4KB/s 00:00

  8. ovh.sh      100%760.1KB/s 00:00

  9. passwd-up.sh 100%8770.9KB/s 00:00

  10. passwd-up1.sh 100%70.0KB/s 00:00

  11. server-list.txt 100%230.0KB/s 00:00

方式 3:如何在 Linux 上使用 pscp 命令复制文件/文件夹到多个远程系统上?

pscp 命令可以直接让我们复制文件到多个远程服务器上。

使用下面的 pscp 命令复制单个文件到远程服务器。



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

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

使用下面的 pscp 命令复制多个文件到远程服务器。



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

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

使用下面的 pscp 命令递归地复制整个文件夹到远程服务器。



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

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

使用下面的 pscp 命令使用下面的命令复制单个文件到多个远程服务器。



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

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

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

使用下面的 pscp 命令复制多个文件到多个远程服务器。



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

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

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

使用下面的命令递归地复制文件夹到多个远程服务器。



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

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

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

方式 4:如何在 Linux 上使用 rsync 命令复制文件/文件夹到多个远程系统上?

rsync 是一个即快速又出众的多功能文件复制工具。它能本地复制、通过远程 shell 在其它主机之间复制,或者在远程 rsync 守护进程daemon 之间复制。

使用下面的 rsync 命令复制单个文件到远程服务器。



  1. # rsync -avz /home/daygeek/2g/shell-script/output.txt [email protected]:/opt/backup

  2. sending incremental filelist

  3. output.txt

  4. sent 598 bytes received 31 bytes 1258.00 bytes/sec

  5. total sizeis2468 speedup is3.92

使用下面的 rsync 命令复制多个文件到远程服务器。



  1. # rsync -avz /home/daygeek/2g/shell-script/output.txt passwd-up.sh [email protected]:/opt/backup

  2. sending incremental filelist

  3. output.txt

  4. passwd-up.sh

  5. sent 737 bytes received 50 bytes 1574.00 bytes/sec

  6. total sizeis2537 speedup is3.22

使用下面的 rsync 命令通过 ssh 复制单个文件到远程服务器。



  1. # rsync -avzhe ssh/home/daygeek/2g/shell-script/output.txt [email protected]:/opt/backup

  2. sending incremental filelist

  3. output.txt

  4. sent 598 bytes received 31 bytes 419.33 bytes/sec

  5. total sizeis2.47K speedup is3.92

使用下面的 rsync 命令通过 ssh 递归地复制文件夹到远程服务器。这种方式只复制文件不包括文件夹。



  1. # rsync -avzhe ssh/home/daygeek/2g/shell-script/ [email protected]:/opt/backup

  2. sending incremental filelist

  3. ./

  4. output.txt

  5. ovh.sh

  6. passwd-up.sh

  7. passwd-up1.sh

  8. server-list.txt

  9. sent 3.85K bytes received 281 bytes 8.26K bytes/sec

  10. total sizeis9.12K speedup is2.21

方式 5:如何在 Linux 上使用 rsync 命令和 Shell 脚本复制文件/文件夹到多个远程系统上?

如果你想复制同一个文件到多个远程服务器上,那也需要创建一个如下面那样的小 shell 脚本。



  1. #file-copy.sh

  2. #!/bin/sh

  3. for server in`more server-list.txt`

  4. do

  5. rsync -avzhe ssh/home/daygeek/2g/shell-script/ [email protected]$server:/opt/backup

  6. done

上面脚本的输出。



  1. #./file-copy.sh

  2. sending incremental filelist

  3. ./

  4. output.txt

  5. ovh.sh

  6. passwd-up.sh

  7. passwd-up1.sh

  8. server-list.txt

  9. sent 3.86K bytes received 281 bytes 8.28K bytes/sec

  10. total sizeis9.13K speedup is2.21

  11. sending incremental filelist

  12. ./

  13. output.txt

  14. ovh.sh

  15. passwd-up.sh

  16. passwd-up1.sh

  17. server-list.txt

  18. sent 3.86K bytes received 281 bytes 2.76K bytes/sec

  19. total sizeis9.13K speedup is2.21

方式 6:如何在 Linux 上使用 scp 命令和 Shell 脚本从本地系统向多个远程系统复制文件/文件夹?

在上面两个 shell 脚本中,我们需要事先指定好文件和文件夹的路径,这儿我做了些小修改,让脚本可以接收文件或文件夹作为输入参数。当你每天需要多次执行复制时,这将会非常有用。



  1. #file-copy.sh

  2. #!/bin/sh

  3. for server in`more server-list.txt`

  4. do

  5. scp-r $1 [email protected]$server:/opt/backup

  6. done

输入文件名并运行脚本。



  1. #./file-copy.sh output1.txt

  2. output1.txt 100%35583.5KB/s 00:00

  3. output1.txt 100%35583.5KB/s 00:00

方式 7:如何在 Linux 系统上用非标准端口复制文件/文件夹到远程系统?

如果你想使用非标准端口,使用下面的 shell 脚本复制文件或文件夹。

如果你使用了非标准Non-Standard端口,确保像下面 scp 命令那样指定好了端口号。



  1. #file-copy-scp.sh

  2. #!/bin/sh

  3. for server in`more server-list.txt`

  4. do

  5. scp-P 2222-r $1 [email protected]$server:/opt/backup

  6. done

运行脚本,输入文件名。



  1. #./file-copy.sh ovh.sh

  2. ovh.sh 100%35583.5KB/s 00:00

  3. ovh.sh 100%35583.5KB/s 00:00

如果你使用了非标准Non-Standard端口,确保像下面 rsync 命令那样指定好了端口号。



  1. #file-copy-rsync.sh

  2. #!/bin/sh

  3. for server in`more server-list.txt`

  4. do

  5. rsync -avzhe 'ssh -p 2222' $1 [email protected]$server:/opt/backup

  6. done

运行脚本,输入文件名。



  1. #./file-copy-rsync.sh passwd-up.sh

  2. sending incremental filelist

  3. passwd-up.sh

  4. sent 238 bytes received 35 bytes 26.00 bytes/sec

  5. total sizeis159 speedup is0.58

  6. sending incremental filelist

  7. passwd-up.sh

  8. sent 238 bytes received 35 bytes 26.00 bytes/sec

  9. total sizeis159 speedup is0.58


via: https://www.2daygeek.com/linux-scp-rsync-pscp-command-copy-files-folders-in-multiple-servers-using-shell-script/

作者:Prakash Subramanian 选题:lujun9972 译者:LuuMing 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

建议继续学习:

QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK