linux 的 scp 命令 可以 在 linux 之间复制 文件 和 目录

时间:2020-12-25 11:27:33

转自:http://blog.csdn.net/snlying/article/details/6184102

Linux系统中scp命令的用法.
scp就是secure copy的简写,用于在linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器.
有时我们需要获得远程服务器上的某个文件,该服务器既没有配置ftp服务器,也没有做共享,无法通过常规途径获得文件时,只需要通过简单的scp命令便可达到目的。

一、将本机文件复制到远程服务器上
#scp /home/administrator/news.txt root@192.168.6.129:/etc/squid
/home/administrator/ 本地文件的绝对路径
news.txt 要复制到服务器上的本地文件
root 通过root用户登录到远程服务器(也可以使用其他拥有同等权限的用户)
192.168.6.129 远程服务器的ip地址(也可以使用域名或机器名)
/etc/squid 将本地文件复制到位于远程服务器上的路径
如图通过root用户登录远程服务器,输入yes表示同意建立ssh连接
按提示输入root用户的密码
如图所示建立连接后开始传输文件,显示百分比、实际时间和传送速度等信息

二、将远程服务器上的文件复制到本机
#scp remote@www.abc.com:/usr/local/sin.sh /home/administrator
remote 通过remote用户登录到远程服务器(也可以使用其他拥有同等权限的用户)
www.abc.com 远程服务器的域名(当然也可以使用该服务器ip地址)
/usr/local/sin.sh 欲复制到本机的位于远程服务器上的文件
/home/administrator 将远程文件复制到本地的绝对路径
注意两点:
1.如果远程服务器防火墙有特殊限制,scp便要走特殊端口,具体用什么端口视情况而定,命令格式如下:
#scp -p 4588 remote@www.abc.com:/usr/local/sin.sh /home/administrator
2.使用scp要注意所使用的用户是否具有可读取远程服务器相应文件的权限。

=============================================================

例如:将远程服务器10.21.244.124下文件夹NewsGetter2中的所有内容拷贝到本机目录中:

landen@landen-Lenovo:~$ scp -r caipeichao@10.21.244.124:/home/caipeichao/NewsGetter2 /home/landen/文档
caipeichao@10.21.244.124's password:
autonews.txt                                                                                       100% 9156KB   8.9MB/s   00:01    
mil.txt                                                                                            100% 4561KB   4.5MB/s   00:00    
.main.py.swp                                                                                       100%   12KB  12.0KB/s   00:00    
enternews.txt                                                                                      100%   10MB   9.9MB/s   00:01    
sportnews.txt                                                                                      100%   12MB  12.0MB/s   00:01    
socianews.txt                                                                                      100% 4923KB   4.8MB/s   00:01    
healthnews.txt                                                                                     100% 8889KB   8.7MB/s   00:01    
edunews.txt                                                                                        100%   11MB  10.6MB/s   00:01    
gamenews.txt                                                                                       100% 5983KB   5.8MB/s   00:00    
internews.txt                                                                                      100% 7724KB   7.5MB/s   00:01    
housenews.txt                                                                                      100%   15MB  15.4MB/s   00:01    
technnews.txt                                                                                      100%   13MB  13.4MB/s   00:01    
internet.txt                                                                                       100% 7056KB   6.9MB/s   00:01    
civilnews.txt                                                                                      100%   24MB  12.0MB/s   00:02    
finannews.txt                                                                                      100%   23MB  11.5MB/s   00:02    
main.py                                                                                            100% 2749     2.7KB/s   00:00    
landen@landen-Lenovo:~$

今天在做两台linux机器文件拷贝时,试用了一下ftp命令与scp命令,这里作个记录。

ftp命令:

其中一台Linux安装ftp Server,这样可以另外一台使用ftp的client程序来进行文件的拷贝。

1. 连接ftp服务器
  格式:ftp [hostname| ip-address]
  a)在linux命令行下输入:ftp 192.168.26.66
  b)服务器询问你用户名和口令,分别输入用户名和相应密码,待认证通过即可。

 2. 下载文件

  下载文件通常用get和mget这两条命令。
  a) get
  格式:get [remote-file] [local-file]
  将文件从远端主机中传送至本地主机中.
  如要获取服务器上e:/rose/1.bmp,则
  ftp> get /rose/1.bmp 1.bmp (回车)

  b) mget      
  格式:mget [remote-files]
  从远端主机接收一批文件至本地主机.
  如要获取服务器上e:/rose/下的所有文件,则
  ftp> cd /rose
  ftp> mget *.* (回车)

  注意:文件都下载到了linux主机的当前目录下。比如,在 /root/yint下运行的ftp命令,则文件都下载到了/root/yint下。

 3.上传文件

  a) put
  格式:put local-file [remote-file]
  将本地一个文件传送至远端主机中.
  如要把本地的1.bmp传送到远端主机e:/rose,并改名为333.bmp
  ftp> put 1.bmp /rose/333.bmp (回车)

  b) mput
  格式:mput local-files
  将本地主机中一批文件传送至远端主机.
  如要把本地当前目录下所有bmp文件上传到服务器e:/rose 下
  ftp> cd /rose (回车)
  ftp> mput *.bmp (回车)
  注意:上传文件都来自于主机的当前目录下。比如,在 /root/test下运行的ftp命令,则只有在/root/test下的文件linux才会上传到服务器e:/rose 下。

 4. 断开连接
  bye:中断与服务器的连接。
  ftp> bye (回车)

SCP命令:

scp是安全的文件拷贝,基于ssh的登录

假定你想把本地计算机/home下的一个名为a.tar.tz的文件拷贝到远程服务器192.168.0.2上的/home/tmp。而且你在远程服务器上的帐号名为root。可以用这个命令:
scp /home/a.tar.tz root@192.168.0.2:/home/tmp/

如果把文件从远程机器拷贝到本机当前目录用这个命令:
   scp root@192.168.0.2:/home/a.tar.tz

拷贝远程机器的整个目录下的文件
   scp -r root@192.168.0.2:/home/* ./

PS:有个Winscp的windows客户端软件,通过它可以实现windows和linux的文件互拷贝,相当方便

========================================================

scp就是secure copy,是用来进行远程文件拷贝的.数据传输使用ssh1,并且和ssh1使用相同的认证方式,提供相同的安全保证.与rcp不同的是,scp会要求你输入密码如果需要的话.

  最简单的应用如下:

  scp 本地用户名@IP地址:文件名1 远程用户名@IP地址:文件名2

  [本地用户名@IP地址:] 可以不输入,可能需要输入远程用户名所对应的密码.

  可能有用的几个参数:

  -v 和大多数linux命令中的-v意思一样,用来显示进度.可以用来查看连接,认证,或是配置错误.

  -C 使能压缩选项.

  -P 选择端口.注意-p已经被rcp使用.

  -4 强行使用IPV4地址.

  -6 强行使用IPV6地址.

  拷贝单个文件命令:

  scp file username@ip:filepath

  说明:

  file: 要拷贝的文件名

  username: 远程登录的用户名,

  ip:远程服务器ip

  filepath:远程文件路径

  拷贝文件夹命令如下(多加上一个-r 参数即可):

  scp -r file username@ip:filepath

  不同的Linux之间copy文件常用有3种方法:

  第一种是在其中一台Linux安装ftp Server,这样可以在另外一台使用ftp的client程序来进行copy。

  第二种方法就是采用samba服务,类似Windows文件copy的方式来操作,比较简洁方便

  第三种就是利用scp命令来进行文件复制。

  scp是有Security的文件copy,基于ssh登录。操作起来比较方便,比如要把当前一个文件copy到远程另外一台主机上,可以如下命令。

  scp /home/1.gif root@172.19.2.75:/home/root

  然后会提示你输入另外那台172.19.2.75主机的root用户的登录密码,接着就开始cp和ungzip了

  如果想反过来操作,把文件从远程主机copy到当前系统,也很简单:

  scp root@172.19.2.75:/home/abc.gif /home/root

  复制文件夹的格式是

  scp -r root@192.168.1.1:/home/ /本地目录

本篇文章来自<A href='http://www.soidc.net'>IDC专家网</a> 原文链接:http://www.soidc.net/articles/1215484977397/20100323/1215945703727_1.html

================================================================

  1. linux 的 scp 命令 可以 在 linux 之间复制 文件 和 目录;
  2. ==================
  3. scp 命令
  4. ==================
  5. scp 可以在 个 linux 主机间复制文件;
  6. 命令基本格式:
  7. scp [可选参数] file_source file_target
  8. ==================
  9. 从 本地 复制到 远程
  10. ==================
  11. * 复制文件:
  12. * 命令格式:
  13. scp local_file remote_username@remote_ip:remote_folder
  14. 或者
  15. scp local_file remote_username@remote_ip:remote_file
  16. 或者
  17. scp local_file remote_ip:remote_folder
  18. 或者
  19. scp local_file remote_ip:remote_file
  20. 第,个指定了用户名,命令执行后需要再输入密码,第个仅指定了远程的目录,文件名字不变,第个指定了文件名;
  21. 第,个没有指定用户名,命令执行后需要输入用户名和密码,第个仅指定了远程的目录,文件名字不变,第个指定了文件名;
  22. * 例子:
  23. scp /home/space/music/.mp3 root    @www.pk.edu.cn:/home/root/others/music
  24. scp /home/space/music/.mp3 root    .mp3
  25. scp /home/space/music/.mp3 www.pk.edu.cn:/home/root/others/music
  26. scp /home/space/music/.mp3 www..mp3
  27. * 复制目录:
  28. * 命令格式:
  29. scp -r local_folder remote_username@remote_ip:remote_folder
  30. 或者
  31. scp -r local_folder remote_ip:remote_folder
  32. 第个指定了用户名,命令执行后需要再输入密码;
  33. 第个没有指定用户名,命令执行后需要输入用户名和密码;
  34. * 例子:
  35. scp -r /home/space/music/ root@www.pk.edu.cn:/home/root/others/
  36. scp -r /home/space/music/ www.pk.edu.cn:/home/root/others/
  37. 上面 命令 将 本地 music 目录 复制 到 远程 others 目录下,即复制后有 远程 有 ../others/music/ 目录
  38. ==================
  39. 从 远程 复制到 本地
  40. ==================
  41. 从 远程 复制到 本地,只要将 从 本地 复制到 远程 的命令 的 后个参数 调换顺序 即可;
  42. 例如:
  43. scp root.mp3
  44. scp -r www.pk.edu.cn:/home/root/others/ /home/space/music/

========================================================================

SSH提供了一些明令和shell用来登录远程服务器。在默认情况下它不允许你拷贝文件,但是还是提供了一个"scp"命令。

假定你想把本地计算机当前目录下的一个名为"dumb"的文件拷贝到远程服务器www.foobar.com上你的家目录下。而且你在远程服务器上的帐号名为"bilbo"。可以用这个命令:

scp dumb bilbo@www.foobar.com:.

把文件拷贝回来用这个命令:

scp bilbo@www.foobar.com:dumb .

"scp"调用SSH进行登录,然后拷贝文件,最后调用SSH关闭这个连接。

如果在你的"~/.ssh/config"文件中已经为www.foobar.com做了这样的配置:

Host *fbc
HostName www.foobar.com
User bilbo
ForwardAgent yes

那么你就可以用"fbc"来代替"bilbo@www.foobar.com",命令就简化为"scp dumb fbc:."。

"scp"假定你在远程主机上的家目录为你的工作目录。如果你使用相对目录就要相对于家目录。

用"scp"命令的"-r"参数允许递归地拷贝目录。"scp"也可以在两个不同的远程主机之间拷贝文件。

关于SSH的详细信息,可以参考http://www.linuxaid.com.cn/engineer/brimmer/html/ssh.htm

scp user@host:/path/to/files    local_file_name

拷贝到远程
scp local_file_name user@host:/path/to/files
拷贝目录到远程
scp -r local_file_name user@host:/path/to/files

ftp:

wget ftp://ftp.isc.org/isc/bind9/9.2.2/bind-9.2.2.tar.gz

http://blog.chinaunix.net/u/8983/showart.php?id=55609

http://www.unix206.com/8/166189.html

scp命令

scp命令是SSH中最方便有用的命令了,试想,在两台服务器之间直接 传送文件,仅仅用scp一个命令就完全解决了。
你可以在一台服务器上 以root身份运行#scp servername:/home/ftp/pub/file1 . 这样就把另
一台服务器上的文件/home/ftp/pub/file1直接传到本机器的当前目录下,当然你也可以用#scp /tmp/file2
servername:/boot 把本机上的文件/tmp/file2送到另一台机器的/boot目录下。而且整个传送过程仍然是 用SSH加密的。