zoukankan      html  css  js  c++  java
  • linux 的 scp 命令 可以 在 linux 之间复制 文件 和 目录

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

  • 相关阅读:
    08.Linux系统-Fastdfs分布式文件系统-互为主从配置搭建部署
    07.Linux系统-GitLab版本控制服务安装部署
    06.Linux系统-WCP知识共享平台安装部署(旗舰版)
    01.Linux-CentOS系统清理缓存脚本
    15.Linux-CentOS系统重启网卡ping不通问题(云环境)
    14.Linux-CentOS系统proc文件系统丢失
    设置环境变量遇到的难题,cmd管理员方式与普通方式的区别,通过C#代码设置环境变量
    DataGridView 行数据验证:当输入数据无效时不出现红色感叹号的Bug
    VS2017新建项目的模板之配置
    禅道安装
  • 原文地址:https://www.cnblogs.com/likai198981/p/3304274.html
Copyright © 2011-2022 走看看