web-dev-qa-db-ja.com

WindowsとLinuxでのファイル作成時間

次の設定があります。

  1. mountserver-debian linux
  2. fileserver1-Windows 2008R2ストレージサーバー
  3. fileserver2-CIFS共有をエクスポートするCelerraNS20
  4. ワークステーション-fileserver2で共有するマップされたドライブを備えたWindows7

私たちがしていること:

  • マウントサーバー上のfileserver1からマウントされた共有(例:/shared/fileserver1
  • マウントサーバー上のfileserver2からマウントされた共有(例:/shared/fileserver2
  • mountserverでrsyncを実行して、fileserver1からfileserver2にデータを同期しました。Xより古いデータを同期するためのパラメーターとしてatimeを使用しました。
  • しばらくして、/ shared/fileserver2上のYより古いデータを削除しようとしました。

私が見たところ、mountserverのlinux statコマンドは、/ shared/fileserver2のファイルをクエリすると次のように返されます。

Linux file timestamp

Fileserver2に接続されたマップされたドライブを使用して同じファイルのプロパティを開くと同時に、同じファイルについて次のように表示されます。

Windows file timestamp

ご覧のとおり、Windowsエクスプローラーに表示される8月12日の作成日は、statコマンドを使用しても表示されません。

ここで何かが足りませんか?

5
Sergei

Linuxはファイル作成時間を保存しません。そのため、Linuxマシンでそのような情報を表示することはできません。

これが リンク で、iノードのデータ構造を示しています。発見できる:

time_t                       i_atime;
time_t                       i_mtime;
time_t                       i_ctime;

これらはどれも作成時間ではありません。

6
Khaled

ファイルの作成時間はLinuxパーティションのどこにも保存されないため、statは次のようにのみ表示されます。

atime (access time)
mtime (last modification time)
ctime (last status change)
3
Alan Kuras

一部の新しいLinuxファイルシステムは、JFS、ext4、btrfsなど、ファイル作成時間に関する情報(iノード内)をサポートしています。しかし、従来のUnixおよびLinuxファイルシステムはそれをサポートしていなかったため、 ツールチェーン全体はまだそのような機能を認識していません

したがって、smbfs/cifsはこの情報にアクセスできますが、 統計構造でこの情報を報告する場所はまだありません

struct stat {
  dev_t     st_dev;     /* ID of device containing file */
  ino_t     st_ino;     /* inode number */
  mode_t    st_mode;    /* protection */
  nlink_t   st_nlink;   /* number of hard links */
  uid_t     st_uid;     /* user ID of owner */
  gid_t     st_gid;     /* group ID of owner */
  dev_t     st_rdev;    /* device ID (if special file) */
  off_t     st_size;    /* total size, in bytes */
  blksize_t st_blksize; /* blocksize for file system I/O */
  blkcnt_t  st_blocks;  /* number of 512B blocks allocated */
  time_t    st_atime;   /* time of last access */
  time_t    st_mtime;   /* time of last modification */
  time_t    st_ctime;   /* time of last status change */
};
3
Huygens