如何获取 scp 命令来覆盖目标文件夹

cod*_*der 54 ssh bash scp

我正在使用 scp 命令将一些文件复制到远程 PC,就像使用 scp 一样:)

我注意到文件的 scp 副本的默认行为是覆盖任何现有文件。现在我想复制一个文件夹,所以我基本上做同样的事情:

scp -r <source_path> user@myOtherPc:<dest_path>
Run Code Online (Sandbox Code Playgroud)

<> 中的部分是我的文件夹路径。但是,当我运行它时,我收到消息“文件存在”。有没有解决的办法?某种强制覆盖?

谢谢,饲料

小智 41

如前所述,scp 很乐意覆盖任何已经存在的文件。

“文件存在”问题只会在您有其他进程(如并发 scp 进程或其他进程)将文件夹和文件写入同一目的地时发生。考虑使用 rsync 代替。

  • 我只会补充:...只要您对该文件具有写权限... (3认同)

EvR*_*R2f 7

如果目标目录已包含与您尝试传输的源目录同名的文件,您将收到此错误消息。同一目录中不能有与目录同名的文件。


Ben*_*Ben 6

像 Levans 一样,我一直无法复制这一点,但是您是否考虑过使用 rsync 而不是 ssh?如果您要复制大量文件,rsync 可能是比 scp 更好的选择。网上有很多很好的指南,例如:

http://troy.jdmz.net/rsync/index.html https://calomel.org/rsync_tips.html

第一个链接通过 cron 处理自动备份,因此某些说明(例如创建没有密码的 ssh 密钥)可能与您无关。