当前位置: 技术问答>linux和unix
ls -l命令和stat的结果不一致
来源: 互联网 发布时间:2016-02-15
本文导语: 在linux下发现一个很奇怪的现象,我把几个7月的文件夹(以及文件夹下的文件和目录)tar到一个新的目录下。用ls -l命令看到的文件时间还是7月份的时间。然后我用以下代码去显示解压后的文件的时间,发现用程序...
在linux下发现一个很奇怪的现象,我把几个7月的文件夹(以及文件夹下的文件和目录)tar到一个新的目录下。用ls -l命令看到的文件时间还是7月份的时间。然后我用以下代码去显示解压后的文件的时间,发现用程序显示出的时间却是当前解压缩的时间。
代码如下:
#include
#include
#include
#include
#include
#include
#include
int main()
{
char strFilename[200]="xxxxxxxxxxxxxxxxxxxx";
struct dirent* pdir;
char strFile[200];
DIR* dir;
time_t tDirCreate;
struct stat buf;
dir = opendir(strFilename);
while(( pdir = readdir(dir)) != NULL)
{
if ((strcmp(pdir->d_name,".") != 0) && (strcmp(pdir->d_name,"..") != 0))
{
memset(strFile,'',sizeof(strFile));
strcpy(strFile,strFilename);
strcat(strFile,"/");
strcat(strFile,pdir->d_name);
sprintf(strFile,"%s%s",strFile,"/");
memset(&buf,'',sizeof(buf));
stat(strFile,&buf);
tDirCreate=buf.st_ctime;
printf("niDelFile:%sn %s %s %sn",strFile,ctime(&tDirCreate),
ctime(&buf.st_atime),ctime(&buf.st_mtime));
}
}
closedir(dir);
exit(1);
}
代码如下:
#include
#include
#include
#include
#include
#include
#include
int main()
{
char strFilename[200]="xxxxxxxxxxxxxxxxxxxx";
struct dirent* pdir;
char strFile[200];
DIR* dir;
time_t tDirCreate;
struct stat buf;
dir = opendir(strFilename);
while(( pdir = readdir(dir)) != NULL)
{
if ((strcmp(pdir->d_name,".") != 0) && (strcmp(pdir->d_name,"..") != 0))
{
memset(strFile,'',sizeof(strFile));
strcpy(strFile,strFilename);
strcat(strFile,"/");
strcat(strFile,pdir->d_name);
sprintf(strFile,"%s%s",strFile,"/");
memset(&buf,'',sizeof(buf));
stat(strFile,&buf);
tDirCreate=buf.st_ctime;
printf("niDelFile:%sn %s %s %sn",strFile,ctime(&tDirCreate),
ctime(&buf.st_atime),ctime(&buf.st_mtime));
}
}
closedir(dir);
exit(1);
}
|
你在解压得时候请加这个参数:
tar zvf --atime-preserve filename.tar
这样,他就会保持原来的时间
tar zvf --atime-preserve filename.tar
这样,他就会保持原来的时间
|
tDirCreate=buf.st_ctime;
它是 time of last status change ,
改成:
tDirCreate=buf.st_mtime
它是 time of last status change ,
改成:
tDirCreate=buf.st_mtime
|
time_t st_atime; /* time of lastaccess*/
time_t st_mtime; /* time of last modification */
time_t st_ctime; /* time of last change */
可能还是参数没有选对吧....
time_t st_mtime; /* time of last modification */
time_t st_ctime; /* time of last change */
可能还是参数没有选对吧....
|
不是很懂,顶
|
tar的问题. 保留/不保留原时间