关闭SSH连接后完成rsync作业


13

我正在使用将大量文件从一台计算机传输到另一台计算机rsync。我这样做是通过SSH进入源计算机并执行如下命令:

sudo rsync ssh --rsync-path="sudo rsync" source_dir user@host.com:dest_dir

即使nohup在此命令之前添加,只要关闭SSH所从的终端窗口,连接都会关闭。

如何获得它,以便在关闭SSH连接时仍能继续进行文件传输?

Answers:


16

之所以nohup不能为您提供帮助,是因为该程序可以使用标准IO文件。

这是nohup的Wiki页面摘录:

注意-从后台SSH会话注销时,通常不使用Nohupping后台作业来避免终止它们。在这种情况下经常出现的另一个问题是ssh拒绝注销(“挂起”),因为它拒绝丢失来自后台作业的数据或到后台作业的数据。通过重定向所有三个I / O流,也可以解决此问题:

nohup ./myprogram > foo.out 2> foo.err < /dev/null &还要注意,关闭的SSH会话并不总是向相关进程发送HUP信号。其中,这取决于是否分配了伪终端。

您可以使用screen它。

只需使用以下命令创建屏幕会话:screen -S rsync 然后,用CTRL+ 分离屏幕A d

您可以从SSH断开连接


4
我想补充一点,当执行任何会中断(例如由于丢失的连接而造成问题)的工作时,请在屏幕会话中运行它。屏幕旨在防止意外连接丢失。您可以远程登录,开始屏幕,开始工作,如果失去连接,则可以重新连接到任何正在运行的屏幕实例。屏幕还具有其他有用的功能-将会话捕获到日志文件,在单个会话中具有多个“屏幕”(节省网络开销),以及多个查看器(教室样式)。还值得一提的是,tmux是屏幕的替代品。
2013年

6

该屏幕命令很好,但不能完全满足我的需求。

这工作得更好:

nohup rsync -va --delete ###.###.###.###:/var/www/sites/ /var/www/sites < /dev/null &

为我工作,就像接受的答案一样,谢谢
Salaros
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.