我和我的同事一直在努力删除目录及其内容。
我们正在 Ubuntu 8.04 上开发新版本的网站源代码(目录:/var/www/websites),我们想要做的是删除网站目录并从几周前创建的 .tar 备份中重新创建它。这样做的目的是让我们可以在本地环境中运行部署过程,然后再在实时/公共环境中运行。
我们使用这个命令:
rm -r websites
这将删除目录及其中的文件。
问题出现在我们解压备份文件并查看网站时,我们得到了 .tar 备份中不存在的文件,事实上这些文件是几天前才创建的,应该被删除。
我们再次以上述方式删除目录,然后使用命令创建一个新的网站目录mkdir
。奇怪的是,在这个阶段,“已删除的文件”没有回来,但如果我们解压 .tar 文件,“已删除的文件”会再次出现。
有没有办法确保这些文件被删除,或者至少删除将它们与所述目录关联的指针。
- 我们的 .tar 备份不包含这些文件
- 我们不想使用 shred 命令
- 我们不想使用第三方应用程序
- 解决方案应可通过终端 (SSH) 运行
非常感谢!
编辑
呃……我们解决了。原来重新出现的文件是因为我们有一个指向另一个目录的链接(在 /var/www/websites 之外),我们正在恢复链接,但没有删除另一端的文件。哎呀!
非常感谢你们的帮助......星期五下午综合症:-)
答案1
我认为某些东西正在重新创建文件,并且你必须识别这一点(也许检查 cron 日志?),或者文件确实在你的 tar 文件中。
要检查它是否在 tar 文件中:
tar tvf tarfile.tar | grep 'nameOfReappearingFile'
tar tvzf tarfile.tar.gz | grep 'nameOfReappearingFile'
tar tzjf tarfile.tar.bz2 | grep 'nameOfReappearingFile'
要寻找 cron 作业,请参阅此 Serverfault 帖子:如何在 Linux 上查看所有 Cron 作业?。当您看到文件开始重新创建时,您还可以运行 top 来观察是否有任何进程。
答案2
听起来 tar 文件确实包含这些文件。如果您确实删除了目录,即执行 rm 后“ls website”显示该目录已被删除,则这些文件一定在 tar 文件中。
tar tvf tarfile
将列出 tarfile 的内容但不提取任何内容。
答案3
该问题是一个符号链接,但我们都没有足够的智慧来发现它。
不用担心 :-)