scp给出"不是常规文件"

Fou*_*nde 27 linux scp

我在Linux上使用scp时遇到问题,它说"不是常规文件".我看了其他问题/答案,但我找不到有什么问题......我写道:

scp aa@aa:/home/pictures/file.fits .
Run Code Online (Sandbox Code Playgroud)

复制file.fitsaa@aa,/home/pictures到当前目录.我也尝试过不使用/home/,但它既不起作用......

你明白什么是错的吗?

Mul*_*ike 60

我刚测试了这个,发现至少有3种scp会返回的情况not a regular file:

  1. 文件实际上是一个目录
  2. 文件是命名管道(又名FIFO)
  3. 文件是设备文件

案例#1似乎最有可能.如果您打算scp使用-r选项指定递归副本来传输整个目录结构.

  • 如果您还没有醒来并且您的源和目标已经倒置而且您尝试将目标中不存在的文件复制到源中,也会发生这种情况...... (13认同)

Ken*_*ter 18

"/home/pictures/file.fits"必须在远程服务器上命名实际的文件系统对象.如果没有,scp则会给出不同的错误消息.

我看到FITS是一种图像格式.我想"/home/pictures/file.fits"是远程服务器上的目录名,包含FITS文件或类似的东西.

要复制目录scp,必须提供"-r"标志:

scp -r aa@aa:/home/pictures/file.fits .
Run Code Online (Sandbox Code Playgroud)

  • 这真的帮助了我`要用scp复制目录,你必须提供"-r"标志 (3认同)

wiz*_*urd 9

发生此错误的一种方法是,如果您在第一条路径之前有一个空格,如下所示:

scp myUserName@HostName: /path/to/file  /path/to/new/file                            ^
Run Code Online (Sandbox Code Playgroud)

要修复,只需占用空间:

scp myUserName@HostName:/path/to/file  /path/to/new/file
Run Code Online (Sandbox Code Playgroud)


use*_*125 7

通过向很多人教授基本系统管理知识,我必须说在 90% 的情况下,这是因为他们试图在不传递源代码的情况下复制-r 目录

只需使用 -r 标志即可。例如从远程复制到本地:

scp -r root@IP:/path/on/server/ /path/on/local/pc
Run Code Online (Sandbox Code Playgroud)


fra*_*anc 5

您可能正在使用目录/文件夹。

如果是这种情况,您需要执行以下操作:

  1. 首先,压缩文件夹。通过运行命令:

    zip -r 文件夹名称.zip 文件夹名称

  2. 然后正常使用 scp 命令将文件复制到目的地:

    scp 路径/to/name_of_folder.zip 服务器:localhost:/path/to/name_of_folder.zip

  3. 如果提示您输入密码,请输入密码。

  4. 使用以下命令解压缩 name_of_folder.zip:

    解压文件夹名称.zip

就是这样,您的文件夹现在已位于目标系统中。顺便说一句,这是用于 zip 压缩的。

注意:如果您使用的是 Mac 操作系统并且您不想看到资源文件(例如 _MACOSX),您可以运行:

**zip -r -X name_of_folder.zip name_of_folder**
Run Code Online (Sandbox Code Playgroud)

这意味着应该使用上面的命令而不是上面步骤 1 中的命令。