我在Linux上使用scp时遇到问题,它说"不是常规文件"。我查看了其他问题/答案,但我无法找出问题所在... 我写道:
scp aa@aa:/home/pictures/file.fits .
将file.fits
aa@aa
/home/pictures
复制到当前目录。我也试过没有使用/home/
,但它既没有工作......
你明白什么是错的吗?
答案 0 :(得分:58)
我刚刚对此进行了测试,发现至少有3种情况,其中scp将返回not a regular file
:
案例#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)
您可能正在使用目录/文件夹。
如果是这种情况,这就是您想做的:
首先,压缩文件夹。通过运行命令:
zip -r name_of_folder.zip name_of_folder
然后通常使用scp命令将文件复制到目标位置:
scp path / to / name_of_folder.zip服务器:localhost:/path/to/name_of_folder.zip
如果提示您输入密码,请输入密码。
使用以下命令解压缩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