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
あなたは見ることができますスナップ写真、必要な操作を正確に実行します(増分バックアップではなくスナップショットを使用しますが)。