【问题标题】:Fix for scp: .: not a regular file修复 scp: .: 不是常规文件
【发布时间】:2015-07-29 06:19:37
【问题描述】:

我正在尝试编写一个 shell 函数来将文件 scp 到我的 AWS 主机

function ec2-scp() {
    scp -i /path/to/pem/file.pem $1 user@ec2.host.amazonaws.com:.
}

我把它当作

ec2-scp server.war

我得到一个错误:

scp: .: not a regular file

但是当我用文件名替换 $1 并执行相同的操作时,它可以工作。 这是我正在尝试 SCP 的战争文件。我该如何解决这个问题?

【问题讨论】:

  • 如果您运行 set -x; ec2-scp server.war; set +x 并使用带有参数的函数,您看到正在运行什么命令?只是删除. 有帮助吗?
  • 谢谢,我不知道 set -+x。我看到这个正在执行:scp -i /path/to/pem/file.pem user@ec2.host.amazonaws.com:。 server.war ,现在如何将 server.war 放在正确的位置?
  • 鉴于编写的功能,该输出实际上是不可能的。 type ec2-scp 说函数的主体是什么?函数的主体可能是scp -i /path/to/pem/file.pem user@ec2.host.amazonaws.com:. $1 偶然吗?
  • 看起来正确,输出:ec2-scp 是一个函数 ec2-scp () { scp -i /path/to/pem/file.pem $1 host@ip:. }
  • 以这种方式编写的函数没有任何方法可以让ec2-scp 的参数位于传递给scp 的参数的末尾。你确定这是你在set -x 报告文件在末尾的同一个shell 会话中得到的函数体吗?您可能有一个旧的ec2-scp 别名吗? (如果是这样的话,我本来希望 type ec2-scp 报告它而不是函数体。)

标签: shell amazon-web-services scp


【解决方案1】:

尝试像这样省略尾随点:

function ec2-scp() {
    scp -i /path/to/pem/file.pem $1 user@ec2.host.amazonaws.com:
}

【讨论】:

    【解决方案2】:

    server.war 是链接吗?因为符号链接不是常规文件。 也试试看https://unix.stackexchange.com/questions/52634/error-using-scp-not-a-regular-file

    【讨论】:

      【解决方案3】:

      根据user48435 answer - 只需添加 -r 喜欢: scp -i -r /path/to/pem/file.pem $1 user@ec2.host.amazonaws.com:.

      【讨论】:

        猜你喜欢
        • 2015-06-15
        • 1970-01-01
        • 2011-10-05
        • 1970-01-01
        • 2021-02-24
        • 1970-01-01
        • 2011-12-14
        • 2015-12-09
        • 1970-01-01
        相关资源
        最近更新 更多