Я создаю приложение для копирования определенных файлов с нашего сервера ubuntu на внешний hdd (отформатированный с помощью ntfs) для резервного копирования, и большинство этих файлов имеют размер более 4 ГБ. Проблема в том, что иногда некоторые файлы отсутствовали (не все файлы и не каждый случай).Отсутствует файл, записанный на внешний диск
Это мой код:
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;
}
Но Иногда я не могу найти файл с помощью другого компьютера.
Для производственного кода всегда проверяйте результат всех соответствующих вызовов за ошибку! – alk
Чтобы просто скопировать файлы, я бы пошел на сценарий оболочки. – alk
Особенно, если вы беспокоитесь о поведении программы, вам нужно проверить результаты с помощью 'open()', 'write()' и 'close()' - а также 'read()', которые вы проверяете. –