![将文件传输(而不是复制)到远程计算机?](https://linux22.com/image/1358769/%E5%B0%86%E6%96%87%E4%BB%B6%E4%BC%A0%E8%BE%93%EF%BC%88%E8%80%8C%E4%B8%8D%E6%98%AF%E5%A4%8D%E5%88%B6%EF%BC%89%E5%88%B0%E8%BF%9C%E7%A8%8B%E8%AE%A1%E7%AE%97%E6%9C%BA%EF%BC%9F.png)
我知道使用 scp 通过 SSH 可以在主机之间复制文件,但如果我不想复制它们,而是移动完全结束它们?
我可以通过 SSH 或其他方式使用安全连接来使用什么命令?
谢谢!
答案1
不存在“移动”这回事。
在单个文件系统上,您可以通过重命名来“移动”文件;文件本身保持不变,但会添加新名称并删除旧名称(这也不能保证是原子的 - 如果“a”和“b”都存在,则调用mv a b
可能会非常短暂地让两个名称引用同一个文件“a”,然后旧名称就会消失)。
在一般情况下,要将文件从一个位置移动到另一个位置,您需要创建一个具有新名称的文件,将数据复制到其中,然后删除旧文件。在本地计算机上,但文件系统不同,“mv”命令会在后台为您执行此操作 - 您可以通过运行来查看此过程strace mv a /other/filesystem/b
。
要在没有共享网络文件系统的计算机之间执行此操作,您必须自己一步一步地执行此操作,例如scp a otherhost:/path/to/new/a && rm a
(&符号表示只有当 scp 成功时才会删除本地文件,这意味着远程复制极有可能成功完成)。