我需要将一堆目录备份到我的 NAS(它基本上在 Finder 中显示为网络共享)。我不想让它可启动,只需要备份几个目录。我还想让它每晚运行。我试过查看 rsync 的文档,但还没能搞清楚。
我也查看了 rsyncx,但无法安装。也不关心 Time Machine 支持,只需要一个简单的备份。
答案1
您的 NAS 是否设置了 rsync 服务?有些 NAS 支持该服务(例如 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
您需要将 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
(0 0 * * *
意思是:每天、每月午夜运行。第一列是分钟,所以凌晨 3 点是0 3 * * *
。这将写入日志~/logs
,因此请确保目录存在,否则将它们放在其他地方)
如果你的 NAS 不支持 rsync 服务,那么我思考如果你将开始改为这样它应该可以工作:
#!/bin/sh
mount_smbfs //user:[email protected]/backup /Volumes/backup
DEST=/Volumes/backup
最后:
umount /Volumes/backup
(如果你的共享是开放的,你可以省略用户和密码)
如果你想要带时间戳的备份,你可以尝试使用 date 命令。例如
DATE=`date +%Y%m%d`
然后在脚本中访问 $DATE。
如果您对这里任何内容不清楚,请直接询问。
答案2
使用 rsync 进行备份时,最值得关注的选项是--backup
和--backup-dir
,如果没有这些选项,那么您是在进行复制,而不是备份。与备份一样,您需要跟踪更改,而不是仅仅覆盖它们。我使用的是这个:
#!/bin/sh
RSYNCOPTS="-e ssh --delete --one-file-system --relative --archive -P --verbose --compress --recursive"
BACKUPDIR="/backup/"
BACKUPINCR="${BACKUPDIR}/incr/$(date -I)"
BACKUPROOT="${BACKUPDIR}/root/"
EXCLUDES="--exclude-from /home/juser/.backup-excludes"
# Make sure we use a new incr backup directory on each run
NUM=0
while [ -e "${BACKUPINCR}-${NUM}" ]; do
NUM=$(($NUM + 1))
done
BACKUPINCR="${BACKUPINCR}-${NUM}"
for i in /home/ /etc/; do
rsync $RSYNCOPTS $EXCLUDES--backup --backup-dir="$BACKUPINCR" "$i" "$BACKUPROOT"
done
这将为您提供 中的副本/backup/root/
以及 中所有已更改或已删除文件的备份/backup/incr/$DATE-$NUM
。
该脚本使用--one-file-system
,因此它不会跨越文件系统边界,并且它用于--relative
获取保存的绝对路径名。
如果您希望它更加严谨,您可以添加--checksum
,它将对所有文件进行校验,而不是仅使用时间戳进行跳过。优点是您的备份将更有可能不受位翻转的影响,但它将运行更长的时间。
另一个一般建议是,--dry-run
当您尝试使用新选项时,如果您不确定它们的作用,请始终使用它,尤其是当它涉及到--delete
朋友时,因为您不会意外地消除您已经存在的备份。
答案3
rsync -av 文件路径 NAS 上放置位置的路径
通过 cron、crontab -e 运行它,但是您需要了解 vi,并查找 crontab 语法。
如果文件归您所有,则可行。我认为您可能需要 E 选项 (-avE) 来获取资源分叉,据我所知,该选项在 OS X 下实际上并不使用,只有经典内容才可以使用,而经典内容不再起作用。
这里有一些链接,您不需要弄乱 ssh 的东西。
简单的: http://www.egg-tech.com/mac_backup/
复杂:www.bombich.com/mactips/rsync.html
答案4
查看我的说明http://www.luxgruppe.de/tech/?p=10以及后续文章,介绍如何使用 rsync 将音乐和 iTunes 播放列表与 Synology 同步。iTunes 播放列表同步:http://www.luxgruppe.de/tech/?p=200
玩得开心!