我正在寻找针对特定用例的备份解决方案。如果不存在,那么我很想自己做一个。
我拥有大量且不断增长的视频文件。我的工作站上有一个相当大的 RAID5 磁盘,由几个 2TB 磁盘组成,可以轻松扩展。这些文件永远不会改变。如果我需要编辑一个文件,那么我会创建一个新文件。我使用可热插拔的 2.5 英寸硬盘进行备份,到目前为止,我都是手动完成的。它很管用,但我担心做错任何事。我可能会忘记复制文件、错误标记磁盘等。
我想要一个解决方案,它可以监视工作站上的视频文件,自动将新文件复制到当前备份磁盘,并向我提供哪个备份磁盘包含哪些文件、描述、日期以及这些磁盘的物理存储位置的概览。如果我可以插入未格式化的磁盘,它将自动格式化、标记和跟踪,那就太好了。当备份磁盘的可用空间达到一定水平时,我应该收到通知,以便我可以安全地存储它并用新磁盘替换它。每个备份磁盘都应包含当前数据库的副本和此磁盘上包含的视频文件的缩略图。
对于恢复,我应该能够简单地提供一个根目录,其中应该重新创建层次结构,然后它会告诉我“插入磁盘 x” - 就像从软盘安装 Windows 95 一样。
是否有人知道适合这种情况的免费备份解决方案,或者我应该继续制作一个吗?
答案1
我认为没有现成的解决方案能够提供您所描述的功能。您必须编写几个脚本,从类似以下内容开始:狙击手 监视新文件,然后触发将此文件添加到跟踪所有文件的文本文件中,将文件复制到硬盘,如果磁盘已满则发出警报等。这当然是可行的,但涉及大量工作,并且存在许多现有备份解决方案需要应对的缺陷(例如处理复制文件期间的崩溃)。
另一个解决方案(不在磁盘上存储纯文本文件,也不允许任何漂亮的缩略图预览)是使用强大的备份解决方案,例如巴库拉 ,专为企业级备份而构建,可以应对备份到多个磁带驱动器的情况。然后,您可以调整此类解决方案以使用硬盘驱动器代替磁带驱动器,如所解释的那样在 bacula wiki 上
可能对你当前的工作流程(手动复制新文件)有用的软件是“虚拟卷视图”(简称:VVV):
VVV 是一款应用程序,它可以对可移动卷(如 CD 和 DVD 磁盘)的内容进行编目,以便进行离线搜索。文件夹和文件也可以排列在单个虚拟文件系统中。此虚拟文件系统的每个文件夹都可以包含来自多个磁盘的文件,因此您可以以简单而合乎逻辑的方式排列数据。
不幸的是,它在存储库中不可用,但必须从源代码进行编译。
答案2
我正在使用一个简单的 rsync 脚本。它将我的笔记本电脑与外部硬盘同步。
它仅保留 (a) 外部驱动器中的某些文件夹 [LTDS
列出该文件夹],(b) 其他文件夹与本地驱动器同步 [LTDD
列出该文件夹],(c) 还备份点文件 [脚本的最后 4 行执行此操作]。
我的外部硬盘驱动器名为box
。在脚本中,它是硬编码的,因为目标路径为:DEST="/media/box"
。
#!/bin/bash
# This script provides two types of backups
# * LTDS (stands for 'list delete orig at source'): the one which delete files on the DEST, and
# * LTDD (stands for 'list delete orig at destination'): the one which doesn't.
# Note that starting DEST folders has to be before the sync.
# Type in the lists the folders subject to the sync (all paths reletive to the $HOME):
# for movies and soft (to keep them at the remote HDD only):
LTDS="/Box/mixed/Movies/"
# for songs, books, documents (to keep them synced both: at HOME and at remote HDD):
LTDD="/Box/sonic/ /Box/visual/ /Box/wordy/ /Documents/ /Downloads/ /Passed/ /Pictures/ /Study/ /Work/"
DEST="/media/box"
for i in $LTDS; do
rsync -aq --progress $HOME$i $DEST$i
rm -rf $HOME$i*
done
for i in $LTDD; do
rsync -aq --delete-after --progress $HOME$i $DEST$i
done
# the following back-ups all the dot files in your home dir.
dotfiles=`ls -A | grep '\.'`
for i in $dotfiles; do
rsync -aq --progress $HOME/$i $DEST/Misc/dotfiles
done
我现在正在使用这个脚本。它工作得很好。
答案3
您可能需要研究 r sync
。我知道这有点吓人,因为它是一个命令行工具,但它有一个 GUI,grsync
您可以在 synaptic 中找到它,或者执行
sudo apt-get install grsync
备份有很多选项,-i
选项会给你一个逐项更改列表。它应该符合要求。参见维基百科页面