好的。所以我有几个可执行的 .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 将使用哈希来确保并发送尽可能少的数据,并且在网络连接中非常耐用。