在Linux上使用scp时,我遇到了一个问题,它显示“不是普通文件”。我查看了其他关于此问题的问题/答案,但我无法找出问题出在哪里...
scp aa@aa:/home/pictures/file.fits .
将file.fits
从aa@aa
的/home/pictures
目录复制到当前目录。我还尝试了不使用/ home /
,但仍然无法正常工作...
你明白出了什么问题吗?
我刚刚测试了一下,发现scp至少有3种情况会返回not a regular file
:
第一种情况最有可能。如果你想用scp
传输整个目录结构,请使用-r
选项表示递归复制。
sftp -b <(echo get file /dev/fd/1)
一样。 - ceving/dev/sda
,但实际名称略有不同。可能的解决方案是将磁盘管道传输到FIFO,然后将其scp到我的主机)。 - quant2016“/home/pictures/file.fits”必须是远程服务器上实际文件系统对象的名称。如果不是,scp
会给出不同的错误消息。
我了解到FITS是一种图像格式。我猜测“/home/pictures/file.fits”是远程服务器上包含FITS文件或类似文件的目录名称。
要使用scp
复制目录,您需要提供“-r”标志:
scp -r aa@aa:/home/pictures/file.fits .
这种错误的一种可能原因是,如果您在第一个路径之前有空格,就会出现以下情况:
scp myUserName@HostName: /path/to/file /path/to/new/file ^
修复方法,只需去掉空格:
scp myUserName@HostName:/path/to/file /path/to/new/file
作为教授许多人基本系统管理员技能的人,我必须说在90%的情况下,这是因为他们正在尝试复制目录而没有传递-r
标志。 来源
只需使用-r
标志即可。例如,从远程复制到本地:
scp -r root@IP:/path/on/server/ /path/on/local/pc
可能您正在使用目录/文件夹。
如果是这种情况,您需要执行以下操作:
首先,压缩文件夹。通过运行以下命令:
zip -r 文件夹名称.zip 文件夹名称
然后像平常一样使用scp命令将文件复制到目的地:
scp 路径/至/文件夹名称.zip 服务器:localhost:/路径/至/文件夹名称.zip
如果提示密码,请输入密码。
使用以下命令解压名为“文件夹名称.zip”的文件夹:
unzip 文件夹名称.zip
这就完成了,在目标系统中现在有您的文件夹。顺便说一句,这是针对zip压缩的。
注意:如果您使用的是Mac OS,并且不想看到资源文件(例如_MACOSX),可以运行:
**zip -r -X name_of_folder.zip name_of_folder**
这意味着应该使用上述命令,而不是步骤1中的命令。
您需要遵循的简单步骤:
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是为了递归遍历目录,可以帮助您避免任何错误。
你可以使用递归(-r)标志来复制文件。
get -r folderName
它不起作用是因为你需要精确复制文件的名称; 所以使用这个命令像这样:
scp aa@aa:/home/pictures/file.fits ./file.fits
你也可以像这样重命名你的文件:
scp aa@aa:/home/pictures/file.fits ./newNameFile.fits
scp aa@aa:~/pictures/file.fits .
(该命令是用于从远程服务器上将文件 file.fits 复制到本地当前目录下的命令) - ryekayoscp aa@aa:/home/aa/pictures/file.fits .
- ryekayossh aa@aa
),并输入命令:file /home/pictures/file.fits
,告诉我们它的输出是什么。 - hydersync
,就能为您节省时间和精力。使用rsync -azHvu aa@aa:/home/pictures/file.fits .
。这将允许 rsync 递归地复制并跟随符号链接,并显示(详细)正在复制的内容。 - alvits