0

最近,我在一次采访中被问到以下问题。

假设我尝试在 /home/pavan 目录中创建一个名为 myfile.txt 的新文件。它应该在同一目录中自动创建 myfileCopy.txt。A.txt 然后它会自动在同一目录中创建 ACopy.txt、B.txt 然后 BCopy.txt。

如何使用脚本来完成?我可能知道这个脚本应该在 crontab 中运行。

请不要使用 inotify-tools。

4

1 回答 1

0

你能解释一下你为什么要这样做吗?

VIM 等工具可以自动创建您正在处理的文件的备份副本。Dropbox(适用于 Linux、Windows 和 Mac)等其他工具可以对文件进行版本控制,因此它会备份过去 30 天内文件的所有副本。

您可以通过为用于创建这些文件的工具创建别名来做一些事情。您使用您倾向于使用的工具编辑文件,并且别名可以在调用工具之前创建一个副本。

否则,您的选择是使用 crontab 偶尔进行备份。


附录

让我解释一下,假设我有目录 /home/pavan 现在我在该目录中创建文件 myfile.txt ,现在我应该立即在同一文件夹
paven中自动生成 myfileCopy.txt 文件

没有简单的用户工具可以做到这一点。事实上,按照你所说的方式,你并不清楚你想要做什么以及为什么。备份有两个原因:

  1. 保存文件的旧版本以防我需要撤消最近的更改。在您的场景中,我只是保存一个新的未更改文件。
  2. 在发生灾难时保存文件。我希望该文件位于其他位置:在另一台计算机上,可能在不同的物理位置,或者至少不在与我当前文件相同的磁盘驱动器上。在您的情况下,您正在同一目录中进行备份。

可以将 VIM 等工具设置为自动备份您正在编辑的文件。这满足了上面提到的原因 #1:取回文件的旧版本。EMAC 可以创建无限系列的备份。

像 Dropbox 这样的工具会在以太的不同位置创建文件的备份。这满足了原因#2,它将在发生灾难时保留文件。Dropbox 还会对您保存的文件进行版本控制,这也是原因 #1。

如果我记得提交我的更改,版本控制工具也可以两者兼得。他们将所有更改存储在我的文件中(原因 #1),并且可以将其存储在远程位置的服务器上(原因 #2)。

我在考虑 crontab,但我会备份什么?备份任何已修改的文件(原因 #1),但如果我将其存储在同一目录中,这并没有太大意义。我所拥有的只是文件的重复副本。备份以前的版本是有意义的,但是我怎样才能让一个简单的 crontab 知道这一点呢?您想保留文件的旧版本,还是只保留原始副本?

唯一真正做到这一点的方法是在系统级别使用覆盖磁盘 IO 调用的工具。例如,在一个位置,我们使用Netapps创建了一个$HOME/.snapshot目录,其中包含您的目录在一个小时内的每分钟、一天的每一小时和一个月的每一天的外观。如果有人删除或弄乱了文件,则该文件的版本很可能存在于$HOME/.snapshot目录中的某个位置。

在我的 Mac 上,我使用了 Time Machine 的组合——它每小时备份整个驱动器,并给我一个可以追溯到一年半以前的驱动器快照)和 Dropbox,它将我的文件存储在主 Dropbox服务器某处。我被那个组合救了很多次。

我现在明白这是一个面试问题。我不确定是什么职位。提问者是否希望你想出一个系统范围的方法来实现这一点,比如网络技术职位,或者这是某人在面试某人时一时冲动想出的那些脑漏之一,但也是前一天晚上喝醉了,他们真的应该问申请人什么?

他们是否想要全面讨论备份的用途,以及为什么在同一目录中创建后立即备份文件是一个愚蠢的想法非最佳解决方案,或者他们是否试图解决出现的问题,但不是技术足以理解真正的问题?

于 2013-06-09T17:45:55.953 回答