
我不確定為什麼這沒有按預期工作。我在 /scripts/full 中有 /scripts/source 的完整 rsync 備份,並且希望將差異備份放入 /scripts/diff 但是,當將文件添加到 /scripts/source 的原始位置,然後運行差異備份時,文件備份到/scripts/full 而不是/scripts/diff 這是我製作的測試腳本:
DIFF='/scripts/diff'
SOURCE='/scripts/source'
FULL='/scripts/full'
CTIME=$(date +%T)
TESTFILE=newfile$CTIME
rm -r $DIFF/*
rm $SOURCE/newfile*
rm $FULL/newfile*
echo "I'm in a file " > $SOURCE/$TESTFILE
rsync \
-a \
-A \
-X \
-h \
-H \
-b \
--backup-dir=$DIFF \
$SOURCE/* \
$FULL
echo "----------------------------------------------------------------------"
echo "Our test file is: $TESTFILE"
echo "----------------------------------------------------------------------"
echo "Source Files in $SOURCE - we should see our one test file"
ls $SOURCE
echo "----------------------------------------------------------------------"
echo "Full backup in past - We should not see any test files here"
ls $FULL
echo "----------------------------------------------------------------------"
echo "Diff files in $DIFF - we should see the same test file here as"
echo "was in the $SOURCE dir"
ls $DIFF
在腳本中,測試檔案被放置在來源目錄中。 rsync 不應將其複製到完整目錄(但確實如此)。它應該被複製到 diff 目錄(事實並非如此)。
重新閱讀手冊頁並搜尋網路並沒有幫助。簡單的差異備份方案在適合我的環境時根本行不通。我在這裡做錯了什麼?我想偶爾進行一次完整備份。然後我想運行僅包含更改的檔案的後續差異(而完整備份永遠不會更改)。想法是有一個完整的備份可供參考,並且可以在差異中找到更改的檔案。我的腳本比這更複雜,但我簡化了它以隔離問題。謝謝,-傑夫
答案1
我想這些選項-b
--backup-dir
不會像你希望的那樣運作。
您可以嘗試使用不同的選項--link-dest
。您的命令列應類似於以下內容
rsync -aAXhH --link-dest=/scripts/full/ /scripts/source/ /scripts/diff/
什麼意思?
您告訴將(新文件)rsync
中的文件與(空)中的文件進行比較/scripts/source/
/scripts/diff/
和 在附加目錄中/scripts/full/
(這是您的備份目錄)。
筆記:
- 通常最好用雙引號保護變數
""
。TESTFILE="newfile${CTIME}"
那麼更好TESTFILE=newfile$CTIME
來自男人
rsync
:--link-dest=DIR hardlink to files in DIR when unchanged
選項
--backup-dir
(...) 可能用於通常使用不同的副檔名或在不同的目錄中複製文件,而不是覆寫目標目錄中的文件。-b, --backup make backups (see --suffix & --backup-dir) --backup-dir=DIR make backups into hierarchy based in DIR --suffix=SUFFIX backup suffix (default ~ w/o --backup-dir)
- 是的,他們應該是不太模糊…