我使用的是 Ubuntu 10.04。我有一个很大的目录,里面有很多子目录和我在脚本中经常使用的数据文件。我想确保我不会意外删除/覆盖/更改此超级目录中的任何文件/目录。
我怎样才能做到这一点?
答案1
大部分按保护程度降低和便利程度增加的顺序排列:
将文件存储在物理只读介质(例如 CD-ROM)上。
将文件存储在以只读方式挂载的单独文件系统上。
如果您是管理员,请创建另一个用户并让这些文件归另一个用户所有。
使用 FUSE绑定文件系统(Ubuntu 软件包
bindfs
)创建目录树的只读视图,并将脚本指向此只读视图:bindfs -p a-w /path/to/actual/tree /path/to/readonly/view myscript -d /path/to/readonly/view
使用 使目录树变为只读
chmod a-w /path/to/tree
。创建包含硬链接文件的树的副本,并将脚本指向该副本。然后,您的脚本可能仍会修改现有文件,但如果它们创建、删除或替换文件,则只会影响副本。
cp -al /path/to/actual/tree /path/to/readonly/view myscript -d /path/to/readonly/view
我建议你使用 bindfs。考虑到你的要求,我唯一会选择其他方法的原因是它不可用。
如果你希望脚本能够写入目录树,但不影响实际文件,则可以使用联合文件系统,例如函数或者unionfs-fuse。
答案2
没有真正的办法,因为无论如何,最终您总是能够删除它们。
不过,您可以尝试使用文件权限。右键单击目录并将文件夹访问权限设置为访问文件,并将文件访问权限设置为只读。然后单击将权限应用于封闭文件。这样,当您决定删除该目录中的文件时,您必须手动取消此设置。
答案3
您可以将rsync
目录移到另一个目录并用来--link-dest
创建硬链接,这样它们就不会占用任何额外的空间。
一篇好文章每个 Unix 的时间机器。
答案4
人非圣贤,孰能无过。有一次,我删除了一个重要文件,因为我刚醒来,还很困(没有宿醉) :) 幸运的是,这件事发生在我学会了一些技巧之后,这些技巧有助于减轻此类愚蠢行为的负面影响。这些技巧如下:
- 始终进行备份,定期确保备份确实包含应有的内容,以避免出现丢失文件的情况,尝试从备份中恢复文件后发现由于某种原因备份中不包含该文件
- 使用版本控制
- 使用像 inotify 这样的会计系统,它将帮助您追踪文件系统的变化
从那次事件之后,我又制定了一条严格的规定:“困倦时切勿碰电脑”。