rsync --backup-dir 没有获取更改的数据 - 相反,它会转到原始备份位置

rsync --backup-dir 没有获取更改的数据 - 相反,它会转到原始备份位置

我不知道为什么这没有按预期工作。我在 /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 目录(但事实并非如此)。

重新阅读手册页和搜索网络都没​​有帮助。简单的差异备份方案在适应我的环境时根本不起作用。我在这里做错了什么?我想偶尔做一次完整备份。然后我想运行仅包含已更改文件的后续差异(而完整备份永远不会更改)。想法是有一个完整的备份可以参考,并且可以在差异中找到已更改的文件。我的脚本比这更复杂,但我简化了它以隔离问题。谢谢,-Jeff

答案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)
    
  • 是的,应该不那么模糊...

相关内容