0

我有一个数据库文件repository.db,我犯了以下错误:

$ tar cvf repository.db repository.db.part1.tar
tar: repository.db.part1.tar: No such file or directory

代替

tar cvf repository.db.part1.tar repository.db

现在我的 repository.db 看起来像一个目录 -rwxr-xr-x+ 1 gw greenwich 1024 Aug 13 17:55 /pool/greenwich/dictionary/repository_ipdr_test/part1/repository.db

有可能恢复吗?

4

2 回答 2

1

根据下面的简单实验,文件中填充了 NULL 字符。没有找到以前的内容;恢复对我来说是不可能的。

我没有solaris盒子。我在 Ubuntu Linux 13.04 (GNU tar 1.26) 中进行了实验;Solaris 上的结果可能不同

$ echo hello > 1
$ cat 1
hello
$ tar cvf 1 no-such-file
tar: no-such-file: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors
$ ls -l 1
-rw-rw-r-- 1 falsetru falsetru 10240 Aug 13 23:29 1
$ cat 1
$ od -x 1
0000000 0000 0000 0000 0000 0000 0000 0000 0000
*
0024000
于 2013-08-13T14:35:39.660 回答
1

您的文件已被覆盖,原始内容丢失。

您可能会争辩说,tar c命令应该在覆盖现有的同名存档之前询问,但这不是它的工作方式。(GNU tar 或 Sun tar 都不是这样工作的)。

您的问题实际上是关于如何恢复文件的先前版本。这将取决于您的站点上的备份生成。此外,如果您使用的是 ZFS,您可能会很幸运有一个最近的快照,您可以从中复制该文件的先前版本。

于 2013-08-14T18:14:40.393 回答