11 题: 如何使用scp将文件夹从远程复制到本地? [关闭]

在...创建的问题 Sun, Sep 16, 2018 12:00 AM

如何使用scp将文件夹从远程复制到本地主机?

我使用ssh登录我的服务器。
然后,我想将远程文件夹foo复制到本地/home/user/Desktop

如何实现这一目标?

    
2412
  1. OP的问题是,当ssh到远程主机时,是否可以将文件从远程复制到本地主机。我不确定为什么没有一个答案能正确解决他/她的问题。
    2015-07-20 13:04:21Z
  2. 请参阅 meta.stackoverflow.com/questions/294217 /... 。问题仍在这里,你也可以投票。它只是不允许更多的答案。
    2017-05-19 15:18:08Z
  3. 问题的前提是不正确的。这个想法是,一旦登录到ssh,如何将文件从登录的机器移回到登录的客户端。但是,scp不知道也不能使用ssh连接。它正在建立自己的联系。因此,简单的解决方案是在本地工作站上创建一个新的终端窗口,并运行scp将文件从远程服务器传输到本地计算机。例如,scp -i key user @ remote:/remote-dir /remote-file /local-dir /local-file
    2017-07-06 13:11:26Z
  4. 这个问题可能是偏离主题的,但它也是谷歌排名最高的帖子。锁定它意味着没有人可以更新它以提供更好的解决方案。
    2018-09-05 05:42:48Z
  5. 我最近问了一个关于SuperUser上另一个工具的命令行的类似“更深入”的问题,并且它被那里的mod移动到了StackOverflow。无论如何我同意mods的论点:我们可以将它传递给SuperUser,让它解锁并获得更多答案吗?
    2018-12-29 11:44:38Z
  6. 醇>
    11答案                              11 跨度>                         
     
    scp -r user@your.server.example.com:/path/to/foo /home/user/Desktop/
    

    man scp开始(参见在线手册

      

    -r递归复制整个目录

        
    4440
    2018-09-17 00:55:13Z
    1. 我每次谷歌都这样。相关漫画: xkcd.com/1168
      2013-11-26 12:25:58Z
    2. @ john-k,很多可能的原因(scp未在服务器上启用,公钥未授权,文件权限问题,......)。检查标准ssh是否与您的密钥一起使用。在sof /serverfault上查询有关该主题的现有问题,如果这没有帮助,请在serverfault上使用ssh /scp的调试输出询问一个新问题。
      2014-04-28 03:30:50Z
    3. 我发现了两个不错的知识:-C标志增加了压缩,而-c标志允许你传入其他密码类型以获得更好的性能,如scp -c blowfish a@b:something . 在dimuthu的回答中看到了
      2014-06-26 20:48:00Z
    4. 使用-p来保存文件修改时间,权限等! scp -pr user @ ...
      2016-05-07 02:06:25Z
    5. 这个答案缺乏重要的解释。你最终会得到Desktop/foo或者你有Desktop/allcontentsofFooGohere scp似乎有时对我来说很奇怪它会做一件事而另一件事
      2018-01-24 19:45:02Z
    6. 醇>

    要充分利用 scp ,您需要完成以下步骤:

    1. 公钥授权
    2. 创建ssh别名强>
    3. 醇>

      然后,例如,如果您有〜/.ssh /config

       
      Host test
          User testuser
          HostName test-site.com
          Port 22022
      
      Host prod
          User produser
          HostName production-site.com
          Port 22022
      

      您将免于输入密码并简化 scp 语法,如下所示:

       
      scp -r prod:/path/foo /home/user/Desktop   # copy to local
      scp -r prod:/path/foo test:/tmp            # copy from remote prod to remote test
      

      此外,您将能够使用远程路径完成:

       
      scp test:/var/log/  # press tab twice
      Display all 151 possibilities? (y or n)
      

      更新强>

      要启用远程bash-completion,您需要在<source><target>主机上安装bash-shell,并正确运行bash-completion。有关更多信息,请参阅相关问题:

      如何为远程路径启用自动完成功能何时使用scp?
      SCP文件名选项卡完成

          
    279
    2018-11-27 18:53:36Z
    1. 不知道配置文件,这太棒了!
      2014-03-01 20:27:15Z
    2. 选项卡完成是无意义的,只需从本地主机完成。
      2014-03-04 15:12:48Z
    3. @ b.long问题是“如何将远程文件夹foo复制到本地桌面”。我的回答是“scp -r prod:/path /foo /home /user /Desktop”。希望你能看到关系。
      2014-03-06 03:30:25Z
    4. @ Bernhard对我来说很明显因为我正在使用bash-shell。谢谢你指点我!答案已更新。
      2014-03-06 06:16:28Z
    5. @ Alexander Yancharuk:感谢您的回答,这比仅仅覆盖语法更详细。
      2014-03-10 09:32:50Z
    6. 醇>

    将所有内容从本地位置复制到远程位置(上传)

     
    scp -r /path/from/destination username@hostname:/path/to/destination
    

    将所有内容从远程位置复制到本地位置(下载)

     
    scp -r username@hostname:/path/from/destination /path/to/destination
    

    自定义端口,其中xxxx自定义端口号码

     
     scp -r -P xxxx username@hostname:/path/from/destination /path/to/destination
    

    从当前目录复制远程到本地

     
    scp -r username@hostname:/path/from/file .
    

    帮助:

    1.  -r递归复制所有目录和文件
    2. 始终使用/的完整位置,获取pwd的完整位置
    3.  scp将替换所有现有文件
    4.  hostname将是主机名或IP地址
    5. 如果需要自定义端口(除了端口22),请使用-P portnumber
    6. 即可。 (点) - 它表示当前工作目录,因此从服务器下载/复制并仅粘贴此处。
    7. 醇>

      注意:由于防火墙中不允许使用端口,自定义端口有时无效,因此请确保防火墙允许自定义端口进行传入和传出连接

          
    182
    2017-06-06 09:25:58Z
    1. 似乎(至少在最新版本的Raspbian Jessie和Ubuntu)scp使用-P(大写P)表示端口,而(奇怪地)ssh使用-p(小写)。
      2017-05-22 13:42:03Z
    2. - p保留用于保留“原始文件中的修改时间,访问时间和模式”。因此,如果您将它用于端口,它可能无法正常工作;-)除非您有不同版本以不同方式使用小写p。
      2017-05-23 18:53:55Z
    3. 使用ssh,是的。不是用scp(我假设)。
      2017-05-25 03:10:49Z
    4. 如果目录包含空格,我该怎么办?
      2017-06-17 22:43:21Z
    5. @ hyprfrcb使用pwd获取位置并使用相同的
      2017-10-24 06:03:13Z
    6. 醇>

    我一直使用的是:

     
    scp -r username@IP:/path/to/server/source/folder/  .
    

    即可。 (点):表示current folder。所以从服务器复制并粘贴到此处。

    IP :可以是125.55.41.311这样的IP地址,也可以像ns1.mysite.com一样托管。

        
    46
    2014-06-16 06:35:23Z
    1. 感谢您指出.引用当前目录!
      2015-01-12 21:52:37Z
    2. 醇>

    最好先在远程服务器上压缩目录:

     
    tar czfP backup.tar.gz /path/to/catalog
    

    其次,从远程下载:

     
    scp user@your.server.example.com:/path/to/backup.tar.gz .
    

    最后,解压缩文件:

     
    tar -xzvf backup.tar.gz
    
        
    28
    2016-04-08 19:20:36Z
    1. “Better”在很大程度上取决于您正在传输的数据以及ssh到服务器进行压缩/解压缩的工作量。并且:您可以使用-C标志向scp添加压缩,如scp -C a@b:bigfile .
      2014-06-26 20:43:53Z
    2. 这让我想起@cptloop发表的评论! :D xkcd.com/1168
      2015-08-13 08:51:59Z
    3. 醇>

    如果您有一个可以从远程位置下载的文件,如果您不太关心安全性,请尝试将scp默认加密(Triple-DES)更改为“blowfish”。

    这将大大减少文件复制时间。

     
    scp -c blowfish -r user@your.server.example.com:/path/to/foo /home/user/Desktop/
    
        
    21
    2014-06-17 06:02:32Z
    1. 根据此博文使用arcfour代替blowfish可以获得更好的性能,但它存在安全漏洞。
      2014-06-26 20:42:28Z
    2. 醇>

    转到统一工具栏上的文件

    按Ctrl + l并写入here_goes_your_user_name@192.168.10.123

    192.168.1.103是您要连接的主机。

    这里有一个例子

        
    19
    2015-11-09 21:05:10Z
    1. 这个答案对我有帮助。谢谢......
      2019-04-15 10:26:21Z
    2. 醇>

    典型情况,

     
    scp -r -P port username@ip:/path-to-folder  .
    

    用样本解释,

    scp -r -P 27000 abc@10.70.12.12:/tmp/hotel_dump .

    其中,

     
    port = 27000
    username = "abc" , remote server username
    path-to-folder = tmp/hotel_dump
    . = current local directory
    
        
    17
    2017-01-25 07:15:53Z

    如果您遇到“身份验证失败太多”,请指定您已添加到服务器ssh服务器的确切SSH密钥:

     
    scp -r -i /path/to/local/key user@remote.tld:/path/to/folder /your/local/target/dir
    
        
    11
    2016-09-26 21:54:58Z

    问题是如何使用scp命令将文件夹从远程复制到本地。

    $ scp -r userRemote@remoteIp:/path/remoteDir /path/localDir

    但这是使用sftp的更好方法 - SSH文件传输协议(也称为安全文件传输协议或SFTP)是一种网络协议,可通过任何可靠的数据流提供文件访问,文件传输和文件管理。 (维基百科)。

    $ sftp user_remote@remote_ip

    sftp> cd /path/to/remoteDir

    sftp> get -r remoteDir

    Fetching /path/to/remoteDir to localDir 100% 398 0.4KB/s 00:00

    有关sftp命令的帮助,请输入help?

        
    10
    2016-08-15 05:47:35Z

    我不知道为什么但是我不得不在源服务器指令之前使用本地文件夹。使它工作

     
    scp -r . root@888.888.888.888:/usr/share/nginx/www/example.org/
    
        
    5
    2019-04-30 13:40:23Z
    1. 假设用户有权限,你可以在不使用root@的情况下做一个绝对路径
      2017-08-25 21:48:30Z
    2. 醇>
来源放置 这里