有没有什么方法可以备份和恢复不扰乱的文件系统svnversion
。
如果我尝试以下一组操作:
- 查看大型 SVN 存储库并构建代码
- 备份 SVN 签出文件夹
- 将 SVN 签出恢复到另一个位置
svnversion
然后,备份和恢复副本的运行时间将比原始副本多得多:
$ cd original_directory
$ echo 3 | sudo tee /proc/sys/vm/drop_caches
$ time svnversion
real 0m5.204s
user 0m0.486s
sys 0m0.698s
$ cd backed_up_and_restored_directory
$ echo 3 | sudo tee /proc/sys/vm/drop_caches
$ time svnversion
real 1m55.846s
user 0m2.813s
sys 0m5.653s
这echo 3 | sudo tee /proc/sys/vm/drop_caches
是为了清除 Linux 缓存,所以我测量的是“从冷”开始。svnversion
任一文件夹中的一秒钟都只需要几分之一秒。
对于迄今为止尝试过的所有备份技术( 、 和 ext4 / ),我都看到了相同的结果tar
。rsync
我dump
还在restore
各种文件系统(ext4、btrfs、gluster)和 Linux 发行版(Debian 8、Debian 9 和 Ubuntu 16.04)中看到了类似的行为
为了回答 Gerard 的问题,以下是几个备份/恢复命令的示例:
rsync:
rsync -x -aH --whole-file --delete source_directory/ destination_directory
转储/恢复:
dump 0uaf backup_file.dump .
restore -rf backup_file.dump
我认为发生这种情况的原因是恢复的文件和子目录以不同的顺序存储在磁盘上,这使得svnversion
复制运行效率非常低。
有没有其他人遇到过这种情况?有谁知道 Linux 备份/恢复技术可以让文件和目录保持“相同的顺序”以防止出现此问题?
答案1
确保保留修改时间,例如使用 rsync
rsync -t -x -aH --whole-file --delete source_directory/ destination_directory