如何使用 rsync 将我的 Mac 备份到 NAS?

swi*_*ams 5 mac backup rsync

我需要将一堆目录备份到我的 NAS(它基本上显示为 Finder 中的网络共享)。我不想让它可启动,只需要备份几个目录。我也想让它每晚运行。我试过查看 rsync 的文档,但还没有弄清楚。

我还查看了 rsyncx,但无法安装。也不关心 Time Machine 支持,只需要一个简单的备份。

Joh*_*uhy 5

您的 NAS 是否设置了 rsync 服务?有些支持它(例如 ReadyNAS)。如果是这样,你可以这样做:

#!/bin/sh

DEST=xx.xx.xx.xx::backup/swilliams/
RSYNC_OPTS='-vaC --exclude ".DS_Store"'

/usr/bin/rsync $RSYNC_OPTS --exclude "build/" --exclude "dist/" --exclude "*.pyc" ~/code $DEST
/usr/bin/rsync $RSYNC_OPTS ~/Music $DEST
/usr/bin/rsync $RSYNC_OPTS ~/Pictures $DEST
/usr/bin/rsync $RSYNC_OPTS --exclude "Virtual Machines*" ~/Documents $DEST
Run Code Online (Sandbox Code Playgroud)

您需要将 DEST 更改为 NAS 的 IP 地址,并更改路径和内容以适应。

如果你将其另存为~/bin/backup.sh(并且一定要这样做chmod a+x ~/bin/backup.sh),那么你可以使用 cron 在每晚运行它。运行crontab -e并添加这一行:

0 0 * * *      $HOME/bin/backup.sh > $HOME/logs/backup.log 2>&1
Run Code Online (Sandbox Code Playgroud)

0 0 * * *意思是:每月、每天的午夜运行。第一列是分钟,所以凌晨 3 点是0 3 * * *。这将写入日志~/logs,以确保该目录存在,或者将它们放在其他地方)

如果您的 NAS 不支持 rsync 作为服务,那么我认为如果您将启动更改为以下内容,它应该可以工作:

#!/bin/sh

mount_smbfs //user:password@xx.xx.xx.xx/backup /Volumes/backup
DEST=/Volumes/backup
Run Code Online (Sandbox Code Playgroud)

最后:

umount /Volumes/backup
Run Code Online (Sandbox Code Playgroud)

(如果您的共享是开放的,您可以省略用户名和密码)

如果您想要带时间戳的备份,可以尝试使用 date 命令。例如

DATE=`date +%Y%m%d`
Run Code Online (Sandbox Code Playgroud)

然后在脚本中访问 $DATE 。

如果您有任何不清楚的地方,请询问。

  • 第一次运行它时,只需复制所有数据即可。rsync 的重点是后续运行会更快,因为它只需要传输更改。现在再次尝试运行它——应该没有什么改变,所以它应该很快。如果不是,那么您可能遇到网络问题。 (2认同)