我似乎无法让这个rsync
脚本按照我需要的方式工作。来源是这里。其背后的想法是创建增量备份,类似于 MacOS 的 Time Machine 所做的事情。我想我了解所有部件的工作原理,并且我对其进行了修改以供自己使用。问题是,在进行备份的同时,rsync
也会产生错误。我的脚本版本是:
#!/bin/bash
# create a date variable for backup naming
date=`date "+%Y-%m-%dT%H%M%S"`
backupdir="/media/USER/SEAGATE/MintBackups"
# use all options for -a for convenience, plus progess meter with -P
# --delete: delete from $DEST what isn't in $SOURCE
# --log-file: save a log file somewhere (make sure not to sync this)
# -C: don't sync cvs stuff (like .git directories)
# --exclude-from: use this file to exclude files from syncing
# --link-dest: hardlink in this directory
rsync -aPK --delete --log-file=tmp/rsync-log.log -C --exclude-from=sync_exclusions.txt --link-dest=/media/USER/SEAGATE/MintBackups/current /home/USER/ /media/USER/SEAGATE/MintBackups/USER-$date
rm -f $backupdir/current
ln -s $backupdir/USER-$date $backupdir/current
我使用该-K
标志来保留符号链接(因为我没有得到正确的结果-a
)。但是,我符号链接到的目录位于我的 Dropbox 文件夹中,我已将其排除在外。这会是一个问题吗?
此外,使用的部分--link-dest
失败,因为它在脚本运行之前不存在,但原作者没有提到有关事先创建链接的信息。因此,我不知道我是否应该提前创建它,或者是否还有其他事情发生。
我收到的错误的形式如下:
2016/12/30 23:24:50 [26974] rsync: mkstemp "/media/USER/SEAGATE/MintBackups/USER-2016-12-30T232102/Pictures/.Screenshot - 10242016 - 05:05:43 PM.png.IGSO2W" failed: Invalid argument (22)
2016/12/30 23:24:50 [26974] rsync: mkstemp "/media/USER/SEAGATE/MintBackups/USER-2016-12-30T232102/Pictures/.Screenshot from 2016-03-06 05:55:01.png.qY6sWu" failed: Invalid argument (22)
2016/12/30 23:24:50 [26974] rsync: mkstemp "/media/USER/SEAGATE/MintBackups/USER-2016-12-30T232102/Pictures/.Screenshot from 2016-03-08 09:05:02.png.4PbFU2" failed: Invalid argument (22)
2016/12/30 23:24:50 [26974] rsync: mkstemp "/media/USER/SEAGATE/MintBackups/USER-2016-12-30T232102/Pictures/.Screenshot from 2016-03-09 11:48:34.png.mqR1VA" failed: Invalid argument (22)
2016/12/30 23:24:50 [26974] rsync: mkstemp "/media/USER/SEAGATE/MintBackups/USER-2016-12-30T232102/Pictures/.Screenshot from 2016-03-10 12:53:35.png.WuoxZ8" failed: Invalid argument (22)
2016/12/30 23:24:50 [26974] rsync: mkstemp "/media/USER/SEAGATE/MintBackups/USER-2016-12-30T232102/Pictures/.Screenshot from 2016-04-28 11:34:34.png.goaX3G" failed: Invalid argument (22)
2016/12/30 23:24:50 [26974] rsync: mkstemp "/media/USER/SEAGATE/MintBackups/USER-2016-12-30T232102/Pictures/.Screenshot from 2016-05-03 19:31:07.png.9Wllaf" failed: Invalid argument (22)
2016/12/30 23:24:50 [26974] rsync: mkstemp "/media/USER/SEAGATE/MintBackups/USER-2016-12-30T232102/Pictures/.Screenshot from 2016-05-30 15:38:01.png.kFg2hN" failed: Invalid argument (22)
2016/12/30 23:24:50 [26974] rsync: mkstemp "/media/USER/SEAGATE/MintBackups/USER-2016-12-30T232102/Pictures/.Screenshot from 2016-06-03 20:55:37.png.vNj3sl" failed: Invalid argument (22)
2016/12/30 23:24:50 [26974] rsync: mkstemp "/media/USER/SEAGATE/MintBackups/USER-2016-12-30T232102/Pictures/.Screenshot from 2016-07-01 12:16:11.png.FReAGT" failed: Invalid argument (22)
我还收到一个错误,指出 rsync 无法在外部磁盘上创建符号链接,该操作被禁止。
换句话说,我不太确定在执行该脚本时犯了什么错误。原剧本的逻辑合理吗?如果是这样,我是否以某种方式对其进行了修改,导致其无法正常运行?
更新:我最近读了另一篇文章这里这让我对外部驱动器上的符号链接有了一些了解。拥有最新备份的链接并不是必需的,因为我还有其他方法可以找出哪个备份是最新的。
答案1
你可以看一下快照,它完全满足您的需要(尽管使用快照而不是增量备份)。