【NextCloud】ファイルの作成日・更新日時が空白で同期に失敗する

NextCloudではWindowsのUsersフォルダー以下のドキュメント(document)、画像(image)、ビデオ(video)のフォルダーを同期設定していました。
あるときから「修正日時が無効なため同期できません」というエラーが大量に発生し、同期ができないファイルが存在していました。
今回は、そのエラーの対応について記載しました。

目次

エクスプローラーで空白

同期できないファイルおよびフォルダの作成日時更新日時は空白の状態でした。

通常はアイコン表示になっていると思いますが、「表示」で「詳細」にすればファイル名以外に作成日時や更新日時が表示されます。アクセス日時を表示させるのであれば一覧の「名前」タブを左クリックしてメニューから「その他」を選択し「アクセス日時」にチェックすれば追加で表示ができます。

プロパティ詳細で空白

同期できないファイルおよびフォルダの作成日時、更新日時は空白の状態でした。

Get-ItemPropertyの出力は1970/01/01 9:00:00

PS > Get-ItemProperty ./無題5.txt | Select-Object -Property *

PSPath              : Microsoft.PowerShell.Core\FileSystem::C:\Users\taro\ドキュメント\無題5.txt
PSParentPath        : Microsoft.PowerShell.Core\FileSystem::C:\Users\taro\ドキュメント
PSChildName         : 無題5.txt
PSDrive             : C
PSProvider          : Microsoft.PowerShell.Core\FileSystem
Mode                : la---
ModeWithoutHardLink : la---
VersionInfo         : File:             C:\Users\taro\ドキュメント\無題5.txt
                      InternalName:
                      OriginalFilename:
                      FileVersion:
                      FileDescription:
                      Product:
                      ProductVersion:
                      Debug:            False
                      Patched:          False
                      PreRelease:       False
                      PrivateBuild:     False
                      SpecialBuild:     False
                      Language:

BaseName            : 無題5
Target              :
LinkType            :
Length              : 66835
DirectoryName       : C:\Users\taro\ドキュメント
Directory           : C:\Users\taro\ドキュメント
IsReadOnly          : False
FullName            : C:\Users\taro\ドキュメント\無題5.txt
Extension           : .txt
Name                : 無題5.txt
Exists              : True
CreationTime        : 1970/01/01 9:00:00
CreationTimeUtc     : 1970/01/01 0:00:00
LastAccessTime      : 1970/01/01 9:00:00
LastAccessTimeUtc   : 1970/01/01 0:00:00
LastWriteTime       : 1970/01/01 9:00:00
LastWriteTimeUtc    : 1970/01/01 0:00:00
LinkTarget          :
Attributes          : Archive, ReparsePoint

作成日時(CreationTime)が1970/01/01 9:00:00(JST9)になることはあっても、アクセス日時(LastAccessTime)が1970/01/01 9:00:00になることはあり得ません。
なぜなら作成日時、アクセス日時、更新日時を変更すると必ずアクセス日時は現在の時間になるためです。

試しにPowerShellで作成日時、アクセス日時、更新日時を1970/01/01 9:00:00に変更しても、アクセス日時はすぐに現在の時間に修正されます。更新日時を変更するとすべて現在の日時に修正されてしまいます。

ゆえに、作成日時、アクセス日時、更新日時が1970/01/01 9:00:00になってしまう原因は不明です。

恐らく、なんらかの処理で日付が取得できず初期値に設定されたのが理由だと思います。

更新日時を変更する

以下のPowerShellコマンドを実行すれば更新日時が変更され恐らくほかの作成日時やアクセス日時が変更されます。この例では2023/05/18 9:00:00に変更しています。

PS >Set-ItemProperty ./無題5.txt -Name LastWriteTime -Value ("2023/05/18 9:00:00")

単一のファイルであればこのコマンドの実行でファイル同期のエラーはなくなります。
現実には複数のファイルが階層のことなるフォルダー内に存在しています。

フォルダー内のすべてのファイルまたはフォルダーの更新時間を変更する場合は以下のPowerShellコマンドを実行します。この例では実行フォルダーをC:\Users\taro\ドキュメントに移動したのち更新日時が”1970/01/01 9:00:00″のファイルまたはフォルダーの更新日時を2023/05/18 9:00:00に変更しています。

PS >cd $user;cdドキュメント
PS >Get-ChildItem -Recurse | ForEach-Object {if($_.LastWriteTime -eq "1970/01/01 9:00:00") {Set-ItemProperty $_.FullName -Name LastWriteTime -Value ("2023/05/18 9:00:00) }}

コマンドの2箇所の”LastWriteTime”を”CreationTime”や”LastAccessTime”に変更すれば作成日時やアクセス日時は変更可能ですが、その後修正が掛かるケースがあるので注意が必要です。

使用したPowerShellコマンドは、条件文や変更内容のアクション部をカスタマイズすれば複数のファイルやフォルダーのプロパティの変更に応用できます。

以上でNextCloudでファイル同期時の「修正日時が無効なため同期できません」のエラーがなくなるはずです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

大阪府門真市に生まれ、高校卒業まで京都府福知山市で育ち、大学は工学部電子工学科を卒業。半導体設計会社に勤務ののちインフラエンジニアとして監視基盤の運用設計業務に就く。現在は都内の施設に勤務。横浜在住。人の役に立てることができればいいなと日々思っています。

目次