小编Sco*_*ott的帖子

使用文件锁定的 Cron 和 rsync 但在 Mac OS X Server 上有更好的方法吗?

我有这个 bash 脚本并通过 cron 定期运行:

#!/bin/bash

RSYNC=/usr/bin/rsync
SSH=/usr/bin/ssh
KEY=/Users/admin/Documents/Backup/rsync-key
RUSER=philosophy
RHOST=example.com
RPATH=data/
LPATH="/Volumes/G Technology G Speed eS/Backup"
LOCKFILE=/Users/admin/Documents/backup.isrunning

if [ ! -e $LOCKFILE ]; then
    touch $LOCKFILE
    $RSYNC -avz --delete --progress -e "$SSH -i $KEY" "$LPATH" $RUSER@$RHOST:$RPATH
    rm $LOCKFILE
else
    echo "Rsync - Backup still running"
fi
Run Code Online (Sandbox Code Playgroud)

备份可能需要任何时间,从几分钟到几天不等,如果我每 6 小时通过 cron 运行一次备份,我不想要的是同时运行的两个实例。所以我所做的是创建了一个简单的锁定机制。但我担心如果脚本中途终止,无论出于何种原因,锁定文件总是会在那里并且备份例程不会运行。

有没有办法增强它以更好地防呆?

谢谢

斯科特

编辑: 由于以下答案,我现在正在使用的最终 bash 脚本:

#!/bin/bash

RSYNC=/usr/bin/rsync
SSH=/usr/bin/ssh
KEY=/Users/admin/Documents/Backup/rsync-key
RUSER=philosophy
RHOST=example.com
RPATH=data/
LOCKFILE=/Users/admin/Documents/Backup/backup.isrunning

if [ ! -e $LOCKFILE ]
then
    echo $$ >"$LOCKFILE"
else
    PID=$(cat "$LOCKFILE") …
Run Code Online (Sandbox Code Playgroud)

files rsync mac-osx cron

6
推荐指数
1
解决办法
3898
查看次数

如何设置 Mac 服务器以使用两个网关

我最近问了这个问题:How to set Mac server to use different Gateway for internet bound traffic

给出的答案有效,但向我提出了另一个我在该问题中没有明确说明的问题。

这是我的网络布局:http : //www.philosophydesign.com/downloads/officenetwork2.png

目前,外部工作人员使用现有 Internet 1 链接上的一些服务。这些服务由 Mac 服务器托管。如果我将 Mac 服务器的网关更改为第二个调制解调器,那么这些外部工作人员将无法使用这些服务。

现在我不知道如何解决这个问题。我希望在 Mac 服务器转到异地 rsync 数据时使用第二个链接,但其他所有内容都使用链接一。我该怎么做呢?

谢谢

斯科特

编辑:这已通过将 Mac 服务器上的默认网关设置为 192.168.1.254 解决,从而使网络上的所有内容保持原样。但是为了让 Mac 服务器使用另一个链接进行 rsync,我添加了一条到 Mac 服务器的路由,以便通过第二个网关将流量路由到 rsync 服务器。

sudo route add -net {server IP's}/{Netmask} 192.168.1.1
Run Code Online (Sandbox Code Playgroud)

我已经授予了 gravyface 的答案,因为他将我指向有关如何使这条路线在 Mac 中持久化的帖子

networking routing ip mac-osx-server gateway

1
推荐指数
1
解决办法
2856
查看次数

标签 统计

cron ×1

files ×1

gateway ×1

ip ×1

mac-osx ×1

mac-osx-server ×1

networking ×1

routing ×1

rsync ×1