scp给出“不是常规文件”

时间:2015-04-09 19:18:11

标签: linux scp

我在Linux上使用scp时遇到问题,它说"不是常规文件"。我查看了其他问题/答案,但我无法找出问题所在... 我写道:

scp aa@aa:/home/pictures/file.fits .

file.fits aa@aa /home/pictures复制到当前目录。我也试过没有使用/home/,但它既没有工作......

你明白什么是错的吗?

8 个答案:

答案 0 :(得分:58)

我刚刚对此进行了测试,发现至少有3种情况,其中scp将返回not a regular file

  1. 文件实际上是一个目录
  2. 文件是命名管道(a.k.a.FIFO)
  3. 文件是设备文件
  4. 案例#1似乎最有可能。如果您打算使用scp传输整个目录结构,请使用-r选项指示递归副本。

答案 1 :(得分:18)

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

我看到FITS是an image format。我想“/home/pictures/file.fits”是远程服务器上的目录名,包含FITS文件或类似内容。

要复制scp的目录,您必须提供“-r”标志:

scp -r aa@aa:/home/pictures/file.fits .

答案 2 :(得分:9)

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

scp myUserName@HostName: /path/to/file  /path/to/new/file                            ^

要修复,只需占用空间:

scp myUserName@HostName:/path/to/file  /path/to/new/file

答案 3 :(得分:0)

它不起作用,因为您需要精确复制文件的名称; 所以像这样使用这个命令:

scp aa@aa:/home/pictures/file.fits ./file.fits

您可以像这样重命名文件:

scp aa@aa:/home/pictures/file.fits ./newNameFile.fits

答案 4 :(得分:0)

您需要遵循的简单步骤

1)scp -r user @ host:/ var / www / html / projectFolder / var / www / html / localsystem-project-folder

2)scp -r user @ host:/var/www/html/projectFolder/filename.php / var / www / html / localsystem-project-folder /

此处-r用于递归遍历,Director会在没有任何错误的情况下为您提供帮助。

答案 5 :(得分:0)

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

如果是这种情况,这就是您想做的:

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

    zip -r name_of_folder.zip name_of_folder

  2. 然后通常使用scp命令将文件复制到目标位置:

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

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

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

    解压缩name_of_folder.zip

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

注意:如果您使用的是Mac OS,并且不想看到_MACOSX之类的资源文件,则可以运行:

**zip -r -X name_of_folder.zip name_of_folder**

应该使用上面的命令代替上面的步骤1中的命令。

答案 6 :(得分:0)

如果要传输整个目录,请使用--recurse标志。不是-r。它不起作用。

例如:-scp --recurse ...

答案 7 :(得分:0)

通过教很多基本系统管理员的人,我必须说在 90% 的情况下,这是因为他们试图复制目录而不通过 -r source

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

scp -r root@IP:/path/ /path/on/local_pc