2

我想让 rsnapshot 在 Linux 机器上备份本地磁盘上的 SVN 存储库。我知道我不能只从文件系统中备份它,所以在每个快照之前,我都会使用“svnadmin hotcopy”进行复制。但是,每次我进行热复制时,生成的文件都具有当前时间戳,而不是与原始文件相同的时间戳。这意味着我失去了执行 rsnapshot 提供的写时复制式磁盘空间节省的能力。

我想到的一个解决方案是让脚本查看热拷贝 ($DEST) 中的所有文件,并为每个文件 x 设置基于文件 $SOURCE/x 的时间戳。我不知道是否有办法让 rsync 在 Linux 上执行此操作(我知道您可以在 Windows 上的 Robocopy 中执行此操作 :) 我确信可以通过 find 和 touch 完成此操作。

欢迎提出如何执行此操作或其他解决方案的建议。我宁愿不使用增量 svn 转储,因为我希望每个时间点快照当时都是存储库的完整副本。

4

1 回答 1

0

事实证明,更改所有文件的时间戳并不难:

cd /var/local/backup/svn
find . -exec touch -r /data/src/svn/\{\} \{\} \;

这将确保热拷贝备份中存在的文件的时间戳与其父文件具有相同的时间戳,这意味着它们仅应在您更新原始文件时更新。

于 2010-02-08T16:34:43.097 回答