file system data structure difference between linux cp and mv command
Hi,
I am facing one problem only with mv command not with cp command. I have a test program
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/mount.h>
#include <fcntl.h>
#include <errno.h>
int sync_file(char *file)
{
FILE *fp=NULL;
int fd;
printf("file is %s\n",file);
fp = fopen(file, "r");
if(!fp)
return -1;
fd = fileno(fp);
fflush(fp);
fsync(fd);
ioctl (fd, BLKFLSBUF, 0);
fclose(fp);
return 0;
}
int main()
{
int len=0;
FILE *fp = NULL;
char buf[1024];
char *fname = "/etc/test.conf";
char fname_tmp[129] = "";
len = sprintf(buf, "%s\n", "Newly added Line is there");
snprintf(fname_tmp, 128, "%s.tmp", fname);
if( (fp = fopen(fname_tmp,"a")) == NULL )
printf(" ERROR: open(), error - %s\n",strerror(errno));
fprintf(fp,"%s",buf);
fflush(fp);
fsync(fileno(fp));
fclose(fp);
system("cp -f /etc/test.conf.tmp /etc/test.conf");
// system("mv -f /etc/test.conf.tmp /etc/test.conf");
sync_file(fname);
return 0;
}
Here i am opening a tmp file for writing. Then i am copying/moving for original file. Then i do a fflush, fsync(), ioctl() to the original file. Then i run this binary in linux machine(ext2 file system, 2.6.23.5 kernel) after that immediately power off the machine. Then power on machine, the file is disappeared or written data lost or file gets corrupted if i move the tmp file to the original file. And there is a no problem if i copy the tmp file to original file. So i want to know the difference between the cp and mv command. Can you please give me suggestion on it?
Thanks,
Indira.
|
Recent comments
1 day 1 hour ago
1 day 6 hours ago
1 day 8 hours ago
1 day 9 hours ago
1 day 10 hours ago
1 day 15 hours ago
1 day 16 hours ago
1 day 18 hours ago
2 days 7 hours ago
2 days 9 hours ago