我需要将一堆目录备份到我的 NAS(它基本上显示为 Finder 中的网络共享)。我不想让它可启动,只需要备份几个目录。我也想让它每晚运行。我试过查看 rsync 的文档,但还没有弄清楚。
我还查看了 rsyncx,但无法安装。也不关心 Time Machine 支持,只需要一个简单的备份。
您的 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 。
如果您有任何不清楚的地方,请询问。
归档时间: |
|
查看次数: |
12773 次 |
最近记录: |