我在Linux上使用scp时遇到问题,它说"不是常规文件".我看了其他问题/答案,但我找不到有什么问题......我写道:
scp aa@aa:/home/pictures/file.fits .
Run Code Online (Sandbox Code Playgroud)
复制file.fits从aa@aa,/home/pictures到当前目录.我也尝试过不使用/home/,但它既不起作用......
你明白什么是错的吗?
Mul*_*ike 60
我刚测试了这个,发现至少有3种scp会返回的情况not a regular file:
案例#1似乎最有可能.如果您打算scp使用-r选项指定递归副本来传输整个目录结构.
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 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)
通过向很多人教授基本系统管理知识,我必须说在 90% 的情况下,这是因为他们试图在不传递源代码的情况下复制-r 目录
只需使用 -r 标志即可。例如从远程复制到本地:
scp -r root@IP:/path/on/server/ /path/on/local/pc
Run Code Online (Sandbox Code Playgroud)
您可能正在使用目录/文件夹。
如果是这种情况,您需要执行以下操作:
首先,压缩文件夹。通过运行命令:
zip -r 文件夹名称.zip 文件夹名称
然后正常使用 scp 命令将文件复制到目的地:
scp 路径/to/name_of_folder.zip 服务器:localhost:/path/to/name_of_folder.zip
如果提示您输入密码,请输入密码。
使用以下命令解压缩 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 中的命令。