6 votes

N'y a-t-il vraiment aucun moyen sous Linux d'obtenir l'heure de création des fichiers sur un partage cifs/smb ?

Je suis embarrassamment loin dans une sauvegarde bash script et j'ai manqué quelque chose de majeur. Je sais que les systèmes de fichiers ext3 ne suivent pas la date de création, mais la copie de fichiers dans ext3 met à jour l'heure modifiée vue via stat (ce qui fonctionnerait). Cependant, lorsque les fichiers sont copiés d'un serveur Windows à un autre (dont j'ai les montages via smb/cifs), d'après mes tests, l'heure de modification n'est pas mise à jour. J'utilise find pour effectuer la recherche sur les partages cifs. N'y a-t-il vraiment aucun moyen de détecter la création d'un nouveau fichier sur un partage cifs à partir de Linux en utilisant "find" ?

De plus, je suis très familier avec rsync, et dans cette circonstance, les limitations de rsync l'excluent comme une option. Je pensais que je pourrais utiliser rsync pour la recherche et essayer d'acheminer les résultats vers l'action (gzip), mais je pense que les sous-shells seraient ridicules. Je peux me tromper, bien sûr. Toute suggestion serait très appréciée. Je peux fournir plus de détails, mais d'après mes recherches, je ne pense pas que ce soit possible.

18voto

JdeBP Points 25711

Le noyau Linux a eu un xstat(2) L'appel au système est en cours depuis plusieurs années. David Howells de RedHat a fait une grande partie du travail. xstat(2) permet de récupérer l'heure de création (parfois rebaptisée "heure de naissance" ou "heure de naissance" dans le monde Linux et BSD sans raison valable) des fichiers à partir de plusieurs systèmes de fichiers qui le supportent, y compris EXT4 (qui a un horodatage de création sur le disque) et CIFS (qui, avec son héritage DOS/OS/2/Windows, a supporté un horodatage de création comme citoyen de première classe depuis des décennies). M. Howells a travaillé sur les correctifs CIFS qui accompagnent l'appel système.

OpenSolaris et les BSDs ont effectivement un système de st_birthtim dans leur stat(2) et cette fonctionnalité est accessible aux auteurs de script via des programmes d'application tels que find y ls . Sur le serveur OpenSolaris ls vous trouverez crtime à côté de atime , mtime y ctime à plusieurs endroits. De la même manière, le système FreeBSD find Le commandement a -Bmin , -Bnewer y -Btime primaires. Et le système Mac OS ls a un -U option.

Si vous écriviez votre script pour OpenSolaris, les BSDs, ou Mac OS 10, vous pourriez simplement continuer à faire ce que vous voulez avec les temps de création dès maintenant. En effet, si vous écriviez pour Windows, vous pourriez faire de même. Cygwin a supporté st_birthtim depuis 2007 ce qui rend les programmes Win32 CreationTime qu'il possède depuis la première version de Windows NT et que Windows NT maintient sur les volumes NTFS et FAT, à la disposition des outils Cygwin.

Cependant, il n'en va pas de même dans le monde de GNU Linux. La fonction de temps de création n'a pas encore été introduite dans GNU coreutils ls ou à GNU findutils find . En effet, il ne fait même pas encore partie du noyau Linux classique. Une partie du problème est que le xstat(2) s'est enlisé dans une diversion où les gens voulaient garder trois timestamps, au lieu d'en avoir quatre comme dans l'API du noyau de Windows NT, et décharger ctime pour le remplacer par crtime .

La réponse de Linus Torvalds en 2010 était que "tout cela est totalement inutile et les gens ne peuvent même pas se mettre d'accord sur un nom" et "attendons cinq ans".

En fait, comme je soupçonne la plupart des personnes qui lisent ceci de le savoir, le monde s'accorde largement sur le nom "temps de création" depuis les années 1980 et nous attendons depuis au moins 25 ans déjà. C'est le nom utilisé dans OS/2 1.0 ; c'est le nom utilisé dans VMS ODS-1 ; c'est le nom utilisé dans Windows NT 3.5 ; c'est le nom utilisé dans SMB ; et c'est le nom utilisé dans la question. ☺

Autres lectures

1voto

MariusMatutiae Points 45233

Je ne peux pas vraiment répondre à cette question, mais je peux au moins vous donner un indice : le livre Mise en œuvre de CIFS : le système de fichiers Internet commun de Christopher R. Hertel contient ces deux pages très intéressantes :

page 1 y page 2

Ils semblent indiquer qu'il est possible de retrouver les informations que vous recherchez.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X