我在 Linux 服务器上有一个文件,我想将其移动(而不是复制)到我的本地计算机。但是,在从堆栈溢出读取命令后,我做了如下操作,但是它只是复制文件而不移动它。
scp -r obs@180.78.5.547:/home/obs/folder/test.txt /home/yuan/folder/
Run Code Online (Sandbox Code Playgroud)
任何帮助都受到高度赞赏。
pol*_*mon 21
“移动”本质上是复制然后删除源文件。
如果你想通过网络“移动”一个文件,你必须这样做。这总是更可取的,因为如果网络连接失败,您可以重试复制,而不会丢失任何数据(如果您的文件传输不正确,但随后被删除)。
传输文件后,您必须删除服务器上的源文件,例如:
ssh obs@180.78.5.547 'rm /home/obs/folder/test.txt'
Run Code Online (Sandbox Code Playgroud)
-r您在示例中使用的选项是递归复制文件,这表明您希望通过网络复制文件目录。我想您想通过网络移动所有文件(传输然后删除该源目录中的所有文件)。
在两台机器之间复制或“移动”文件时,我建议使用rsync. 它只会传输新的和更改过的文件,并跳过目的地已经存在的相同文件。它可以选择在传输源文件后一次性删除它们,这应该模仿您在将文件从一台机器“移动”到另一台机器时可能期望的行为:
rsync -aPEmivvz --remove-source-files obs@180.78.5.547:/home/obs/folder /home/yuan
Run Code Online (Sandbox Code Playgroud)
对于您将使用的仅一个文件:
rsync -aPEmivvz --remove-source-files obs@180.78.5.547:/home/obs/folder/file.txt /home/yuan/folder/
Run Code Online (Sandbox Code Playgroud)
使用该--remove-source-files选项只是在文件传输后删除文件。
rsync有一个--remove-source-files选项。它删除所有同步的非目录文件。
这可能会起作用:
rsync -avz --remove-source-files obs@180.78.5.547:/home/obs/folder/test.txt /home/yuan/folder/
Run Code Online (Sandbox Code Playgroud)
注意 rsync 需要安装在源和目标机器上。
--dry-run在运行之前尝试运行以确保它可以正常工作。
rsyncover的好处scp是它可以复制文件权限、所有权、符号链接,使用压缩来加速慢速连接上的传输,并在删除之前执行哈希以验证传输是否成功。
我通常rsync用于备份,它只会传输自上次同步以来发生更改的文件,从而节省大量时间和带宽。
| 归档时间: |
|
| 查看次数: |
990 次 |
| 最近记录: |