缺少写在外部驱动器上的文件

时间:2014-12-23 08:15:13

标签: c linux file copy

我正在创建一个应用程序,将某些文件从我们的ubuntu服务器复制到外部硬盘(使用ntfs格式化)进行备份,大多数文件大小超过4GB。 问题是有时会丢失一些文件(不是所有文件而不是每个场合)。

这些是我的代码:

char buf[BUFSIZ];
size_t size;

int source = open(c_fileName, O_RDONLY, 0);
int dest = open(c_targetFile, O_WRONLY | O_CREAT /*| O_TRUNC/**/, 0644);

while ((size = read(source, buf, BUFSIZ)) > 0) {
    write(dest, buf, size);
    *progress+=size;
}

close(source);
close(dest);

在使用此代码完成应用程序完成后,我试图检查文件是否存在且大小是否相同:

if (fsource = fopen(c_targetFile, "rb")) {
    isSourceFileExists=true;
    // check file size
    fseek (fsource, 0, SEEK_END);   // non-portable
    size=ftell(fsource);
    fclose(fsource);
}else{
    isSourceFileExists=false;
    size=0;
}

但问题是有时我无法使用其他计算机找到该文件。

1 个答案:

答案 0 :(得分:0)

  

昨天,它再次发生,我已经检查了使用ls和文件   在那儿。但是今天当我在家打开它时,我意识到它缺少了   提交24个文件。

如果某个文件首先 缺少,那么在将硬盘插入另一个地方(或关闭电源后)之后,你可能只是正确卸载驱动器。