在无头服务器上使用 mv 和 cp(SSH 超时干扰?)

在无头服务器上使用 mv 和 cp(SSH 超时干扰?)

我最近设置了一个无头服务器来备份大量非常大的电影和编辑文件。

我通过 SSH 进入服务器并按照我找到的一些最佳实践指南加强了安全性,以便服务器在 5 分钟不活动后自动注销我。

当我尝试对这些文件进行排序和移动时,这造成了一些麻烦。

发行mv file1 /new_directory/可能需要 5 分钟以上,所以我经常在中途注销。

当涉及多个文件时,我回来发现有些文件似乎已经传输,而其他文件(在看似任意的截止点......或粗略地我认为 5 分钟超时可能允许)尚未传输。

我的问题是:

  1. 发出mv命令时,如果在命令未完成时取消,是否存在数据丢失的风险?使用 是否更安全cp
  2. 有什么方法可以设置cpmv命令,然后确保它在我注销或 ssh 窗口关闭后仍将继续运行
  3. 有没有办法在mvcp正在进行时做其他事情(从而刷新我的倒计时器)

答案1

不要这样登录。相反,从本地计算机运行

ssh user@server mv /path/to/source /path/to/dest

这应该可以帮你解决这个问题。

总的来说,我确实认为你有点偏执。将空闲时间设置为 5 分钟,然后面对这种问题似乎很愚蠢。只需将其设置为更长的时间即可避免问题。

至于您的第一个问题,mv只有复制成功后才会删除源文件。如info mv(重点是我) 中所述:

它首先使用与“cp -a”相同的代码来复制请求的目录和文件,然后(假设复制成功)它会删除原件。 如果复制失败,则复制到目标分区的部分将被删除如果您将三个目录从一个分区复制到另一个分区,并且第一个目录复制成功,但第二个目录复制失败,则第一个目录将留在目标分区上,第二个和第三个目录将留在原始分区上。

答案2

强烈建议仅使用tmux或者屏幕(或者虚拟主机如果您需要图形化)。这可以保护您免受网络断开的影响并允许重新连接。您也可以使用莫什,它可以有效抵御网络中断。

如果您不太在意命令终止后是否继续会话,也可以使用 分离运行它nohup mv ...(可选以 & 结尾以立即将其置于后台)。然后您需要使用 监视其执行情况ps。某些 shell 可以分离正在运行的程序(disown或不会像 zsh 那样杀死它们setipt NO_HUP)或使用后台启动程序(如at或 )cron

相关内容