Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Changement d'heure sur un ensemble de fichier

27 réponses
Avatar
JPM
Bonjour,

En utilisant des commande Unix uniquement (pas de perl ou shell),
comment peut on ajouter ou retirer 1 heure a tous les fichiers d'une
arborescence ?

find me donne la liste des fichier
touch defini la date et l'heure
Il me manque l'etape intermediaire.

Merci

10 réponses

1 2 3
Avatar
JPM
On 26 mar, 12:16, Stephane Chazelas wrote:
2007-03-26, 02:09(-07), JPM:> Bonjour,

En utilisant des commande Unix uniquement (pas de perl ou shell),
comment peut on ajouter ou retirer 1 heure a tous les fichiers d'une
arborescence ?

find me donne la liste des fichier
touch defini la date et l'heure
Il me manque l'etape intermediaire.


[...]

Pas possible de facon standard. Tu peux avec des commandes GNU.
Mais le plus simple est d'utiliser perl.

Il n'y pas de commande qui permette de recuperer la date de
derniere modification d'un fichier avec la boite a outil Unix
standard de facon fiable quelque soit la date. Il est possible
de bidouiller en utilisant pax, mais ca sera vraiment
tarabiscoté.

--
Stéphane


J'ai bidouillé avec les commandes find.exe, touch.exe (avec l'option --
reference) et j'ai remis au carré les heures de mes fichiers.


Avatar
Vincent Lefevre
Dans l'article ,
JPM écrit:

Sous Windows, j'ai 1 disque local D: et un disque monté via samba W:
A l'heure d'hivers, D:file.txt et W:file.txt avait la meme heure.

Apres le changement d'heure (+1h) j'ai
D:file.txt qui a 1 heure de plus que W:file.txt


Ça peut être dû à plusieurs choses. Mais sur D:, le fichier est
stocké en heure locale, tandis que sur W:, le fichier est stocké
en heure UTC. Mais lors de la conversion vers la nouvelle heure
locale, il peut y avoir une différence.

Avec Linux, on peut avoir l'heure UTC en mettant TZ=UTC. Sous Windows,
il existe peut-être quelque chose du même genre, et tu pourras ainsi
voir si l'heure UTC est correcte.

--
Vincent Lefèvre - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)

Avatar
JPM
On 28 mar, 11:40, Vincent Lefevre <vincent+ wrote:
Dans l'article ,
JPM écrit:

Sous Windows, j'ai 1 disque local D: et un disque monté via samba W:
A l'heure d'hivers, D:file.txt et W:file.txt avait la meme heure.
Apres le changement d'heure (+1h) j'ai
D:file.txt qui a 1 heure de plus que W:file.txt


Ça peut être dû à plusieurs choses. Mais sur D:, le fichier est
stocké en heure locale, tandis que sur W:, le fichier est stocké
en heure UTC. Mais lors de la conversion vers la nouvelle heure
locale, il peut y avoir une différence.

Avec Linux, on peut avoir l'heure UTC en mettant TZ=UTC. Sous Windows,
il existe peut-être quelque chose du même genre, et tu pourras ainsi
voir si l'heure UTC est correcte.


Otez moi d'un doute.
Sous Unix/Linux si je change le fuseau horaire de ma machine pour
passer de GMT+1 a GMT+2, l'heure des fichiers sur le disque va t-elle
changer ?
Ou bien cela depend t-il justement de la variable TZ definie a
l'ouverture de ma session ?


Avatar
lhabert
"JPM" :

Otez moi d'un doute.
Sous Unix/Linux si je change le fuseau horaire de ma machine pour
passer de GMT+1 a GMT+2, l'heure des fichiers sur le disque va t-elle
changer ?


La date des fichiers est stockée en nombre de secondes écoulées depuis un
instant donné du passé (je dis bien « instant » et non « date », la date de
cet instant dépend du fuseau horaire choisi).

Le fuseau horaire de la machine n'est utilisé par les programmes que pour
traduire ce nombre de secondes en une date lisible par un humain. Donc si tu
changes de fuseau horaire, les dates indiquées pour les fichiers vont
changer. Mais ça n'est que de l'affichage, en interne les programmes
travaillent avec la vraie date.

Enfin ça c'est avec les fs de type unix, pour les fs étrangers, je ne sais
pas trop comment ça se passe, il doit y avoir du potentiel de louze.

Avatar
patrice
"JPM" a écrit dans le message de
news:
On 26 mar, 17:40, "patrice"
wrote:
"JPM" a écrit dans le message
denews:

On 26 mar, 15:25, Vincent Lefevre <vincent+ wrote:

Est ce a dire que lorsque l'on passe a l'heure d'été, sous Windows les
fichiers prennet une heure de plus, alors que sur un OS moderne,
l'heure des fichiers ne change pas ?


Les dates fichiers sont enregistré en gmt et affichée avec l'heure locale
au

moment de l'affichage.
donc pour un dir/ls avant l'heure d'été, le fichier gmt est affiché en
gmt+1

pour un dir/ls apres l'heure d'été, le fichier gmt est affiché en gmt+2

Desolé mais je ne comprend pas.


soit un fichier créé en hiver en france (heure local=gmt+1) , à 22h
il est enregistré en GMT+0 (UTC) donc à 21h
si on fait un dir :
windows affiche fichier UTC!h, Local= gmt+1=utc+1 "h
On est en été (youpi!!) on change d'heure, local=gmt+2
windows affiche fichier UTC!h, Local= gmt+2=utc+2 #h
Et tu verras que l'hiver prochain, le fichier "repassera" à 22h


Avatar
patrice
"JPM" a écrit dans le message de
news:
On 26 mar, 17:40, "patrice"
wrote:
Desolé mais je ne comprend pas.


http://support.microsoft.com/kb/158588/en-us

Avatar
Vincent Lefevre
Dans l'article ,
JPM écrit:

Otez moi d'un doute.
Sous Unix/Linux si je change le fuseau horaire de ma machine pour
passer de GMT+1 a GMT+2,


Note: en général, le fuseau horaire est indiqué par une ville, pour
tenir compte de l'heure d'hiver / heure d'été.

l'heure des fichiers sur le disque va t-elle changer ?


Sous Linux, les fichiers sont stockés en heure UTC sur disque.
Seule l'heure affichée dépend du timezone, qui peut soit être
fixe (e.g. UTC, GMT+1, GMT+2, etc.), soit dépendre de la date
(e.g. Europe/Paris). Attention, pour la France en heure d'été,
c'est GMT-2 ou UTC-2 pour la variable TZ (le signe est inverse
de celui utilisé habituellement, notamment dans l'écriture
d'une date locale comme dans ISO 8601 ou RFC 2822).

Ou bien cela depend t-il justement de la variable TZ definie a
l'ouverture de ma session ?


POSIX dit seulement:

The tzset() function shall use the value of the environment variable
TZ to set time conversion information used by ctime(), localtime(),
mktime(), and strftime(). If TZ is absent from the environment,
implementation-defined default timezone information shall be used.

Cf <http://www.opengroup.org/onlinepubs/009695399/functions/tzset.html>.

Pour Linux (glibc):

Si la variable d'environnement TZ est définie, elle est prise
en compte de manière prioritaire. Sinon le timezone est indiqué
globalement via le fichier /usr/share/zoneinfo/localtime (avec
une glibc récente). Ce fichier a en général le même contenu que
/etc/localtime (l'un est un lien symbolique vers l'autre, et ça
dépend de la distribution). Tout est expliqué plus précisément
dans la page man tzset(3).

Il existe aussi un fichier /etc/timezone (au moins sous Debian)
qui contient une chaîne de la même forme que celle utilisée par
la variable d'environnement TZ. Je ne sais pas comment il est
utilisé exactement ni à quel moment; il sert peut-être à mettre
en place le fichier /etc/localtime (qui est un fichier binaire,
non lisible par un humain). En tout cas, un strace sur un "ls -l"
par exemple montre bien que c'est /etc/localtime qui est lu.

Tu as d'autres informations ici:

http://www.debian.org/doc/manuals/system-administrator/ch-sysadmin-time.html
http://www.wlug.org.nz/TimeNotes

Et pour les problèmes entre Linux et Windows concernant le changement
d'heure:

http://forum.ubuntu-fr.org/viewtopic.php?pid‚0254

Et pour ceux qui sont aux USA ou au Canada, il y a d'autres problèmes:

http://en.wikipedia.org/wiki/Y2K7

--
Vincent Lefèvre - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)

Avatar
Vincent Lefevre
Dans l'article <eudgk2$28mc$,
Luc Habert écrit:

"JPM" :

Otez moi d'un doute.
Sous Unix/Linux si je change le fuseau horaire de ma machine pour
passer de GMT+1 a GMT+2, l'heure des fichiers sur le disque va t-elle
changer ?


La date des fichiers est stockée en nombre de secondes écoulées depuis un
instant donné du passé (je dis bien « instant » et non « date », la date de
cet instant dépend du fuseau horaire choisi).


Instant appelé Epoch, qui correspond au 1970-01-01 00:00:00 UTC.

Le fuseau horaire de la machine n'est utilisé par les programmes que
pour traduire ce nombre de secondes en une date lisible par un
humain. Donc si tu changes de fuseau horaire, les dates indiquées
pour les fichiers vont changer.


Pour les changements de pays oui, mais pas lorsqu'on passe de l'heure
d'hiver à l'heure d'été par exemple.

Mais ça n'est que de l'affichage, en interne les programmes
travaillent avec la vraie date.


Oui, enfin, pas tous malheureusement.

Enfin ça c'est avec les fs de type unix, pour les fs étrangers, je
ne sais pas trop comment ça se passe, il doit y avoir du potentiel
de louze.


Probablement.

--
Vincent Lefèvre - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)


Avatar
JPM
On 28 mar, 14:33, Vincent Lefevre <vincent+ wrote:
Dans l'article <eudgk2$,
Luc Habert écrit:

"JPM" :
Otez moi d'un doute.
Sous Unix/Linux si je change le fuseau horaire de ma machine pour
passer de GMT+1 a GMT+2, l'heure des fichiers sur le disque va t-elle
changer ?
La date des fichiers est stockée en nombre de secondes écoulées d epuis un

instant donné du passé (je dis bien « instant » et non « date », la date de
cet instant dépend du fuseau horaire choisi).


Instant appelé Epoch, qui correspond au 1970-01-01 00:00:00 UTC.

Le fuseau horaire de la machine n'est utilisé par les programmes que
pour traduire ce nombre de secondes en une date lisible par un
humain. Donc si tu changes de fuseau horaire, les dates indiquées
pour les fichiers vont changer.


Pour les changements de pays oui, mais pas lorsqu'on passe de l'heure
d'hiver à l'heure d'été par exemple.


Enfin quelque chose que je comprend. Le changement d'heure n'est pas
un changement de fuseau horaire.
Et un fichier créé le 1/01/2007 a 13h, sera encore créé a 13h si je
le regarde le 12 juillet sur mon disque.

J'ai l'air d'insister un peu "lourdement" mais quand j'ai besoin de
lire les fichiers de log de mon serveur créé a 0h en janvier, je ne
cherche pas des fichiers créés a 1h parce que je suis en juillet.

Si vous validez cela, je comprend que Windows lui considere que le
changement d'heure "est" un changement de fuseau horaire dans les fait
car toutes les heures changes.

D'ou mes problemes de syncronisation de mon disque local (Windows) et
de mon disque réseau (Linux) et que au final, je n'aurais pas de
solution autres que de synchroniser "a la main" les heures via le
touch .

J'ai bon ? .. ;)



Avatar
Nicolas George
"JPM" wrote in message
:
Enfin quelque chose que je comprend. Le changement d'heure n'est pas
un changement de fuseau horaire.
Et un fichier créé le 1/01/2007 a 13h, sera encore créé a 13h si je
le regarde le 12 juillet sur mon disque.

J'ai l'air d'insister un peu "lourdement" mais quand j'ai besoin de
lire les fichiers de log de mon serveur créé a 0h en janvier, je ne
cherche pas des fichiers créés a 1h parce que je suis en juillet.


Oui, c'est ça.

Si vous validez cela, je comprend que Windows lui considere que le
changement d'heure "est" un changement de fuseau horaire dans les fait
car toutes les heures changes.

D'ou mes problemes de syncronisation de mon disque local (Windows) et
de mon disque réseau (Linux) et que au final, je n'aurais pas de
solution autres que de synchroniser "a la main" les heures via le
touch .


Changer a posteriori les heures des fichiers est toujours une mauvaise
solution. Si windows gère l'heure comme une bouze qu'il est, jette-le. Ou à
défaut, utilise-le exclusivement en UTC.

1 2 3