在我们的研究小组中,我们需要备份在 MRI 扫描仪上获取的数据,以便保留任何曾经获取的扫描数据(即使数据可能由于空间或其他原因从扫描仪中删除)。我们称之为保险库。
存储到保险库,一台单独的机器通过 nfs 挂载扫描仪的数据分区,并将数据复制到自己的本地备份硬盘上:
rsync -au /nfsmount/data /pvbackup-vault >> $LOGFILE
我的问题是:这安全吗?我们的数据有时会在之前处理过一次后重新处理。所以我想要 -u 标志。
对于实际的原始数据(这是神圣的),我可以预见一个问题:由于某些错误/失误/不可预见的情况,扫描仪上的文件会被覆盖,然后保险库将被覆盖。我不确定如何防止这种情况发生。一方面,我希望允许重新处理数据,甚至重新获取数据;另一方面,我希望创建一个保险库至少在数据方面,不受未来变化的影响。我应该标记这些情况并手动处理吗?很乏味。
笔记: 我采用了不同的增量策略(rsnapshot)来防止用户错误,可以恢复无意中删除/更改的、可追溯到一定小时/天/周/月内的数据。
笔记2: 也许我应该提一下,我们目前处理的数据量约为 250GB,每周新获取的数据量约为 10GB。因此,DVD 不再是替代品……
答案1
您做的第一部分是正确的,如果硬件扫描仪发生问题,请将其中的数据取出。第二部分应该是备份中间备份位置。换句话说,您要么设置辅助 rsync 作业到另一个最终存放/备份位置,要么实际让备份程序介入并定期进行复制,以用于更永久/存档的目的。
通常,您会做两件事来保存数据......
- 立即进行磁盘到磁盘备份(使用 rsync 的扫描仪)
- 将档案备份磁盘放到磁带上,或者一些较新的方法只是另一种磁盘到磁盘或磁盘到网络机制。
这可确保您的扫描仪数据受到保护,并且您可以长期存档所有发生的情况。在存档运行完成之前,请将您的磁盘到磁盘视为临时备份,您的存档是神圣的。
答案2
带有 --link-dest 选项的 rsync 可能很有用。它为每次备份运行创建一个目录。自上次运行以来未更改的文件将硬链接到已经存在的版本。因此,每次运行后您都会获得完整的正常文件夹结构(您可以直接浏览它),而无需复制未更改的数据。
多年来,我每天使用以下类型的代码片段来备份超过 1 TB 的数据。以这种方式使用 rsync 的 linux-gui 工具是 backintime http://backintime.le-web.org/
#!/bin/bash
# when saving this as "rsync-history" call it with arguments
# sh rsync-history user@host-to-be-backed-up:/directory-on-host/ where-to-save-the-backup/
source=$1
target_fileprefix="$2""$source"
#keep N generations
bigger=100
rm -vrf "$target_fileprefix""$bigger"
#move 1 to 2, 2 to 3...
while [ $bigger -gt 0 ]
do
smaller=$(($bigger-1))
mv -f "$target_fileprefix""$smaller"\
"$target_fileprefix""$bigger" 2>>/dev/null
bigger=$(($bigger-1))
done
mkdir -p "$target_fileprefix""0"
rsync \
-a --whole-file --delete \
--link-dest=$target_fileprefix"1"/. $source. $target_fileprefix"0"/.