【備忘録】ファイルの更新日時を維持したまま、オンラインストレージに預けたり取り出したりしたい!


発端

PCに存在するデータを
「外付けHDDとか、USBメモリとかにファイルをコピーして、バックアップとする」
みたいなことしますよね? 私はします。
で、このとき、コピーを繰り返してもファイルの更新日時は保持されるので、たとえば15年前に描いた絵とかを新しいPCに持ってきたとしても、それを描いたのがいつなのか分かるし、更新日時でソートすることもできる。

それはそれとして、オンラインストレージ(クラウドストレージ)もバックアップに使う。
でも、オンラインストレージに置いたファイルをダウンロードしたとき、どうしてか更新日時が保持されない、具体的に言うとダウンロードした日時に変わっちゃう…という悩みがありました。

オンラインストレージにファイルを置きたい。でも、オリジナルの更新日時もキープしたい。そういう自分のためのメモです。

作成日時は気にしないの?

作成日時は今回気にしません。
なぜなら、作成日時を保持したままファイルをコピーする方法は、おそらく存在しないと思うからです。私が知らないだけかもしれませんが。
(コピーしたのち、PowerShellのコマンドで作成日時を書き換えることはできます。が、今回はそういう話ではないので割愛)

先に結論

私が普段使用しているのがDropboxとGoogleドライブなので、その2つについて調べました。自分用なので。OneDriveとかは知りません。
ちなみにPCはWindows11です。

結論から言うと、DropboxとGoogleドライブでは、更新日時を保持することは可能でした。ただし手順によってできたりできなかったりします。それを以下に書きます:

Dropbox

ローカルのファイルを、クライアントの同期を利用してサーバーにアップロードすれば、更新日時を保持したままアップロードできる。
ダウンロードする際も、クライアントを利用して同期すれば、更新日時を保持できる。

アップロードとダウンロード、どちらか一方でもwebブラウザを介したらアウト。両方ともクライアントの同期で行う必要がある。

Googleドライブ

ローカルのファイルをサーバーにアップロードする際は、方法は問わない。クライアントの同期でもいいし、webブラウザ上で操作してもいい。どちらの方法でも更新日時は保持される。
ダウンロードする際は、クライアントを利用して同期すれば、更新日時が保持されるが、webブラウザからダウンロードするとダメ。

アップロードはなんでもいいが、ダウンロードは必ずクライアントの同期で行うこと

行った操作とか、細かい補足

Dropbox

手順1
ローカルフォルダのファイルを、クライアントの同期を利用してアップロードする

サーバー上のファイルを見ると、元の更新日時が保持されている

手順2
ローカルフォルダのファイルを、webブラウザ経由でアップロードする

サーバー上のファイルを見ると、更新日時にはアップロード日時が入っている

手順3
サーバー上のファイルを、クライアントの同期を利用してダウンロードする

ダウンロードされたファイルを見ると、サーバー上のファイルと同じ更新日時である

手順4
サーバー上のファイルを、webブラウザ経由でダウンロードする

ダウンロードされたファイルを見ると、更新日時にはダウンロード日時が入っている

手順1と手順3を組み合わせれば、オリジナルの更新日時が保持できる。

Googleドライブ

手順1
ローカルフォルダのファイルを、クライアントの同期を利用してアップロードする

サーバー上のファイルを見ると、「最終更新」に元の更新日が保持されている(時分は非表示)

手順2
ローカルフォルダのファイルを、webブラウザ経由でアップロードする

サーバー上のファイルを見ると、「最終更新」に元の更新日が保持されている(時分は非表示)

手順3
サーバー上のファイルを、クライアントの同期を利用してダウンロードする

ダウンロードされたファイルを見ると、サーバー上のファイルの「最終更新」と同じ更新日である。サーバー上では時分は非表示なので、念のためにサーバーにアップロードする前のオリジナルと比較したところ、元の更新日時を保持できていた

手順4
サーバー上のファイルを、webブラウザ経由でダウンロードする

ダウンロードされたファイルを見ると、更新日時にはダウンロード日時が入っている

アップロード時は手順1でも2でも同じ。
ダウンロード時に手順3を行えば、オリジナルの更新日時が保持できる。

その他、おまけ

レンタルサーバー

私は令和になっても個人サイトを続けている民なので、レンタルサーバー(スペース)を契約しています。

このレンタルサーバーに対し、FTPクライアント経由でアップロードすると、サーバー上のファイルの更新日時はアップロード日時になる。
また、サーバー上のファイルをFTPクライアント経由でダウンロードすると、ローカルのファイルの更新日時はダウンロード日時になる。

つまりFTPでアップロード・ダウンロードすると更新日時は保持されません。
まぁこれは前から知ってたけど。

NAS

実はNASも持ってます。
活用するしない以前に、いろいろ試してみてお勉強している段階なのですが…

で、NAS(BUFFALO製品)に対しても試してみたんですけど、
エクスプローラーでのコピー、またはバッチやコマンドでのコピーであれば、更新日時は保持されました。
webブラウザからアクセスする機能(NAS Navigator2を起動して、「Web設定画面」をクリックしたやつ)(語彙力)を使ってコピーするとダメでした。

ただね、そもそもNASって設置場所が自宅なので、PCがやられるような災害があったら、結局一緒にやられるんですよね。

データを保存する際の「3-2-1ルール」の最後の「1」、「バックアップデータの1つは物理的に離れた遠隔地(オフサイト)に保管する」ってやつ。これを考えると、やっぱりオンラインストレージに保管しておきたいわけです。
私の場合、

  • メインPC

  • 外付けHDD(普段はどことも接続しない)

  • オンラインストレージ

のそれぞれにデータを保存すると、いい感じになりそうです。

…あれ? NAS、要らなくね…??

ついでにググったこととか

いろいろググってたときに出てきた情報で、
「WebDAVプロトコルには、ローカルファイルの更新日時を保持するための機能がない」
というのがあったんですけど、「じゃあそのWebDAVプロトコルを使っているシステムって具体的にはどれなの?」とかが全然分からなかったので分かりませんでした。かなしい。

あと、FTPですが、FTPでタイムスタンプを保持すること自体は可能らしいです。ただそのやり方(MFMTコマンドがどうとか、SFTPを利用すればいいとか)とかは、正直今回は必要なさそうだったし、まぁいいやと思って読むの諦めました。だるい。

雑なまとめ

オンラインストレージで、元のファイルの更新日時を保持したかったら、クライアントの同期機能を使え。

以上です。


この記事が気に入ったらサポートをしてみませんか?