当互联网或位置断开连接时,如何暂停复制操作。 Shell

当互联网或位置断开连接时,如何暂停复制操作。 Shell

好的。所以我有几个可执行的 .sh 文件,用于备份目录。在本例中,即 Development 目录。我有两台计算机。一台 Mac(主计算机,另一台是 Windows 7 台式机。)由于我的 Mac 只有 500 GB 的存储空间,因此我想将数据备份到另一台计算机。我通过无线方式进行备份。

为了实现这一点,我编写了一个 shell 脚本,用于检查我是否已连接到 main-pc/Users/Public/。我知道该位置不安全,几天后我会更改该位置,但目前,我只想让它正常工作。

总体来说,脚本运行良好,它确保位置存在,如果我没有连接,我会将其设置为安装计算机。它也能正确复制所有内容。

除非互联网突然断线,或者我与另一台计算机的连接中断(这种情况时有发生)。当这种情况发生时,该位置突然不存在,它继续运行脚本,但什么也不做,只是做类似的事情

x -> y 位置不存在... 等等等等。

我的问题是,我如何确保如果失去连接,它只是暂停备份并等待位置连接?这可能吗?我不能重新创建位置,因为我没有在本地存储它。

谢谢。(我知道直接使用外部驱动器会更方便,但那有什么乐趣呢?)

我的脚本很长,但这里是涉及备份的部分。

rm -r -v /Volumes/Users/Public/InfiniteBackups/Development
cd /Volumes/Users/Public/InfiniteBackups
mkdir Development
cp -v -f -rip ~/Development/ /Volumes/Users/Public/InfiniteBackups/Development
echo "Files have finished transferring"
say "Files have finished transferring"
exit 0

虽然这不是最漂亮的脚本,但它确实有效。这是在 OS X 10.8 上。

答案1

我会使用 rsync 并检查退出值。不断重试,直到成功退出。

Rsync 将使用哈希来确保并发送尽可能少的数据,并且在网络连接中非常耐用。

http://en.wikipedia.org/wiki/Rsync

http://rsync.samba.org/

相关内容