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
당신은 볼 수 있습니다스냅 사진, 필요한 작업을 정확하게 수행합니다(증분 백업 대신 스냅샷을 사용하지만).