我阅读了有关 scp 的一系列说明和答案
scp - 如何将文件从远程服务器复制到本地计算机?- Unix 和 Linux 堆栈交换
但我不能正确应用它
$ pwd
#the local path on local machine
pwd
/Users/me/PubRepo/bash
当我尝试将文件从远程 scp 到本地时
[root@iz2ze9wve43n2nyuvmsfx5z ~]# echo "scp test message" > a_test_file.md
[root@iz2ze9wve43n2nyuvmsfx5z ~]# cat a_test_file.md
scp test message
[root@iz2ze9wve43n2nyuvmsfx5z ~]# pwd
/root
[root@iz2ze9wve43n2nyuvmsfx5z ~]# scp [email protected]:a_test_file.md .
[email protected]'s password:
a_test_file.md 100% 17 3.6KB/s 00:00
[root@iz2ze9wve43n2nyuvmsfx5z ~]#
表示转移成功,但是我在本地没有找到
ls | grep "a_test_file.md"
#does not return
另外它在本地任何地方都不存在
find / -name "a_test_file.md" 2>/dev/null
## no match
我的使用有什么问题?
从您的控制台日志看来,您在创建
scp
的远程主机上进行了调用a_test_file.md
,但您使用.
的是第二个参数,即目标。呼叫总是先有源,然后有目的地。就像评论中提到的@jimmij 一样,这会从另一个遥控器复制另一个具有相同名称的文件。所以你有两种可能:
scp
从文件应该结束的机器(您的本地机器)调用。假设icodehero.com
是您的远程机器,scp
您使用的调用是正确的,只是在错误的机器上。scp
将调用更改为scp a_test_file.md user@your_local_machine:.
,这只有在远程也可以通过 ssh 访问您的本地计算机时才有可能。如果您想知道,为什么复制显示为成功,我假设
icodehero.com
是您创建文件的机器,在这种情况下,您的远程从自身复制了文件(它自己覆盖了文件,实际上什么都不做)。